Compare commits

..
Author SHA1 Message Date
Paulus Schoutsen 368973b668 Add app alias 2020-06-21 12:37:12 -07:00
3939 changed files with 223058 additions and 609897 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,85 +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`
- 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 |
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
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 are marked `@state()` so updates trigger rendering.
- Tests and mocks only provide the data the component actually consumes.
-65
View File
@@ -1,65 +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
yarn dev:demo # Development server on http://localhost:8090
yarn 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.
## 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
yarn lint # ESLint, Prettier, TypeScript, and Lit checks
yarn lint:types # TypeScript compiler, without file arguments
```
Never run `yarn 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 `yarn lint` when practical.
- For type checking, run `yarn 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/)
-100
View File
@@ -1,100 +0,0 @@
---
name: ha-frontend-review
description: Home Assistant frontend PR and review guidance. 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.
## 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
- `yarn lint` passes when practical for the scope.
- `yarn test` or focused relevant tests are green when practical for the scope.
- Tests are added or updated for new data processing and utilities where applicable.
- 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 developer documentation](https://developers.home-assistant.io/docs/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.
## Review Flow
- Identify behavioral regressions, bugs, accessibility issues, and missing tests first.
- Keep style-only comments secondary unless they affect maintainability or user experience.
- Prefer small, direct fixes over large refactors during review follow-up.
- Load the matching `ha-frontend-*` skill when a finding falls within its area.
@@ -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.
@@ -1,99 +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
yarn lint # ESLint + Prettier + TypeScript + Lit
yarn format # Auto-fix ESLint + Prettier
yarn lint:types # TypeScript compiler, run without file arguments
yarn test # Vitest
yarn build # Full production build
yarn dev # App dev server
yarn dev:serve # Local serving dev server
```
Never run `tsc` or `yarn 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
yarn build # Full foreground build
yarn build --background # Full managed background build
yarn build --modern # Modern frontend_latest bundle only
yarn build --modern --background # Modern managed background build
yarn build --status
yarn build --logs [--follow]
yarn build --stop
```
Use `yarn 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 `yarn 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.
## Unit And Utility Tests
- Add or update Vitest tests for data processing, utility code, and behavior that can be tested without a browser.
- Mock WebSocket connections and API calls at boundaries.
- Cover loading, error, unavailable, and missing-entity states where relevant.
- Test accessibility-sensitive behavior when it can be asserted without brittle DOM internals.
## Dev Servers
`yarn dev` builds and watches the app, served by a running Home Assistant core configured through `development_repo`.
`yarn 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]`. `yarn dev`, `yarn dev:serve`, `yarn dev:demo`, and `yarn 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. `yarn dev` and `yarn 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 | `yarn test:e2e:app:dev --background` on 8095 | `yarn test:e2e:app` |
| Demo | `yarn dev:demo --background` on 8090 | `yarn test:e2e:demo` |
| Gallery | `yarn dev:gallery --background` on 8100 | `yarn 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. `yarn 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 `yarn 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 `yarn 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.
-36
View File
@@ -1,36 +0,0 @@
[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 year + current alpha/beta versions
# - Firefox extended support release (ESR)
# - with global utilization at or above 0.5%
# - exclude dead browsers (no security maintenance for 2+ years)
# - exclude KaiOS, QQ, and UC browsers due to lack of sufficient feature support data
unreleased versions
last 1 year
Firefox ESR
>= 0.5%
not dead
not KaiOS > 0
not QQAndroid > 0
not UCAndroid > 0
[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 at or above 0.05%
# - exclude dead browsers (no security maintenance for 2+ years)
# - exclude Opera Mini which does not support web sockets
unreleased versions
last 7 years
>= 0.05%
not dead
not op_mini all
[legacy-sw]
# Same as legacy plus supports service workers
unreleased versions
last 7 years
>= 0.05% and supports serviceworkers
not dead
not op_mini all
-1
View File
@@ -1 +0,0 @@
../.agents/skills
-6
View File
@@ -1,6 +0,0 @@
FROM mcr.microsoft.com/devcontainers/python:3.14
ENV \
DEBIAN_FRONTEND=noninteractive \
DEVCONTAINER=true \
PATH=$PATH:./node_modules/.bin
-49
View File
@@ -1,49 +0,0 @@
{
"name": "Home Assistant Frontend",
"build": {
"dockerfile": "Dockerfile",
"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": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"runem.lit-plugin",
"github.vscode-pull-request-github",
"eamodio.gitlens",
"yeion7.styled-global-variables-autocomplete"
],
"settings": {
"files.eol": "\n",
"editor.tabSize": 2,
"editor.formatOnPaste": false,
"editor.formatOnSave": true,
"editor.formatOnType": true,
"editor.renderWhitespace": "boundary",
"editor.rulers": [80],
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"files.trimTrailingWhitespace": true,
"terminal.integrated.shell.linux": "/usr/bin/zsh",
"gitlens.showWelcomeOnInstall": false,
"gitlens.showWhatsNewAfterUpgrades": false,
"workbench.startupEditor": "none"
}
}
}
}
-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."
+84
View File
@@ -0,0 +1,84 @@
{
"extends": [
"plugin:@typescript-eslint/recommended",
"airbnb-typescript/base",
"plugin:wc/recommended",
"plugin:lit/recommended",
"prettier",
"prettier/@typescript-eslint"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"ecmaFeatures": {
"modules": true
},
"sourceType": "module",
"project": "./tsconfig.json"
},
"settings": {
"import/resolver": {
"webpack": {
"config": "./webpack.config.js"
}
}
},
"globals": {
"__DEV__": false,
"__DEMO__": false,
"__BUILD__": false,
"__VERSION__": false,
"__STATIC_PATH__": false,
"Polymer": true,
"webkitSpeechRecognition": false,
"ResizeObserver": false
},
"env": {
"browser": true,
"es6": true
},
"rules": {
"class-methods-use-this": 0,
"new-cap": 0,
"prefer-template": 0,
"object-shorthand": 0,
"func-names": 0,
"prefer-arrow-callback": 0,
"no-underscore-dangle": 0,
"no-var": 0,
"strict": 0,
"prefer-spread": 0,
"no-plusplus": 0,
"no-bitwise": 0,
"comma-dangle": 0,
"vars-on-top": 0,
"no-continue": 0,
"no-param-reassign": 0,
"no-multi-assign": 0,
"radix": 0,
"no-alert": 0,
"no-return-await": 0,
"no-nested-ternary": 0,
"prefer-destructuring": 0,
"no-restricted-globals": [2, "event"],
"prefer-promise-reject-errors": 0,
"import/order": 0,
"import/prefer-default-export": 0,
"import/no-unresolved": 0,
"import/no-cycle": 0,
"import/extensions": 0,
"no-restricted-syntax": ["error", "LabeledStatement", "WithStatement"],
"object-curly-newline": 0,
"default-case": 0,
"wc/no-self-class": 0,
"@typescript-eslint/camelcase": 0,
"@typescript-eslint/ban-ts-ignore": 0,
"@typescript-eslint/no-use-before-define": 0,
"@typescript-eslint/no-non-null-assertion": 0,
"@typescript-eslint/no-explicit-any": 0,
"@typescript-eslint/no-unused-vars": 0,
"@typescript-eslint/explicit-function-return-type": 0
},
"plugins": ["disable", "import", "lit", "prettier", "@typescript-eslint"],
"processor": "disable/disable"
}
-100
View File
@@ -1,100 +0,0 @@
---
name: Report a bug with the UI, Frontend or Lovelace
about: Report an issue related to the Home Assistant frontend.
labels: bug
---
<!-- READ THIS FIRST:
- If you need additional help with this template please refer to https://www.home-assistant.io/help/reporting_issues/
- Make sure you are running the latest version of Home Assistant before reporting an issue: https://github.com/home-assistant/home-assistant/releases
- Do not report issues for custom Lovelace cards.
- Provide as many details as possible. Paste logs, configuration samples and code into the backticks.
DO NOT DELETE ANY TEXT from this template! Otherwise, your issue may be closed without comment.
-->
## Checklist
- [ ] I have updated to the latest available Home Assistant version.
- [ ] I have cleared the cache of my browser.
- [ ] I have tried a different browser to see if it is related to my browser.
## The problem
<!--
Describe the issue you are experiencing here to communicate to the
maintainers. Tell us about the current behavior.
If possible provide a screenshot with a description.
-->
## Expected behavior
<!--
Describe what you expected to happen or it should look/behave.
If possible provide a screenshot with a description.
-->
## Steps to reproduce
<!--
Provide steps for us, that helps reproducing your issue.
For example:
1. Add a climate integration
2. Navigate to Lovelace
3. Click more info of the climate entity
4. Set the HVAC action to heat
5. Set the temperature higher than the current temperature
6. Set the HVAC action to cool
-->
## Environment
<!--
Provide details about the versions you are using, which helps us reproducing
and finding the issue quicker. Version information is found in the
Home Assistant frontend: Settings -> About.
Browser version and operating system is important! Please try to replicate
your issue in a different browser and be sure to include your findings.
-->
- Home Assistant release with the issue:
- Last working Home Assistant release (if known):
- Browser and browser version:
- Operating system:
## State of relevant entities
<!--
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`
-->
```yaml
```
## Problem-relevant frontend configuration
<!--
An example configuration that caused the problem for you, e.g. the YAML configuration
of the used cards. Fill this out even if it seems unimportant to you. Please be sure
to remove personal information like passwords, private URLs and other credentials.
-->
```yaml
```
## Javascript errors shown in your browser console/inspector
<!--
If you come across any Javascript or other error logs, e.g. in your browser
console/inspector please provide them.
-->
```txt
```
## Additional information
+100
View File
@@ -0,0 +1,100 @@
---
name: Report a bug with the UI, Frontend or Lovelace
about: Report an issue related to the Home Assistant frontend.
labels: bug
---
<!-- READ THIS FIRST:
- If you need additional help with this template please refer to https://www.home-assistant.io/help/reporting_issues/
- Make sure you are running the latest version of Home Assistant before reporting an issue: https://github.com/home-assistant/home-assistant/releases
- Do not report issues for custom Lovelace cards.
- Provide as many details as possible. Paste logs, configuration samples and code into the backticks.
DO NOT DELETE ANY TEXT from this template! Otherwise, your issue may be closed without comment.
-->
## Checklist
- [ ] I have updated to the latest available Home Assistant version.
- [ ] I have cleared the cache of my browser.
- [ ] I have tried a different browser to see if it is related to my browser.
## The problem
<!--
Describe the issue you are experiencing here to communicate to the
maintainers. Tell us about the current behavior.
If possible provide a screenshot with a description.
-->
## Expected behavior
<!--
Describe what you expected to happen or it should look/behave.
If possible provide a screenshot with a description.
-->
## Steps to reproduce
<!--
Provide steps for us, that helps reproducing your issue.
For example:
1. Add a climate integration
2. Navigate to Lovelace
3. Click more info of the climate entity
4. Set the HVAC action to heat
5. Set the temperature higher than the current temperature
6. Set the HVAC action to cool
-->
## Environment
<!--
Provide details about the versions you are using, which helps us reproducing
and finding the issue quicker. Version information is found in the
Home Assistant frontend: Developer tools -> Info.
Browser version and operating system is important! Please try to replicate
your issue in a different browser and be sure to include your findings.
-->
- Home Assistant release with the issue:
- Last working Home Assistant release (if known):
- Browser and browser version:
- Operating system:
## State of relevant entities
<!--
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 `/developer-tools/state`
-->
```yaml
```
## Problem-relevant configuration
<!--
An example configuration that caused the problem for you. Fill this out even
if it seems unimportant to you. Please be sure to remove personal information
like passwords, private URLs and other credentials.
-->
```yaml
```
## Javascript errors shown in your browser console/inspector
<!--
If you come across any javascript or other error logs, e.g., in your browser
console/inspector please provide them.
-->
```txt
```
## Additional information
+26
View File
@@ -0,0 +1,26 @@
---
name: Request a feature for the UI, Frontend or Lovelace
about: Request an new feature for the Home Assistant frontend.
labels: feature request
---
<!--
DO NOT DELETE ANY TEXT from this template!
Otherwise, your request may be closed without comment.
-->
## The request
<!--
Describe to our maintainers, the feature you would like to be added.
Please be clear and concise and, if possible, provide a screenshot or mockup.
-->
## The alternatives
<!--
Are you currently using, or have you considered alternatives?
If so, could you please describe those?
-->
## Additional information
-122
View File
@@ -1,122 +0,0 @@
name: Report a bug with the UI / Dashboards
description: Report an issue related to the Home Assistant frontend.
labels: bug
body:
- type: markdown
attributes:
value: |
Make sure you are running the [latest version of Home Assistant][releases] before reporting an issue.
If you have a feature or enhancement request for the frontend, please [start a discussion][fr] instead of creating an issue.
**Please do not report issues for custom cards.**
[fr]: https://github.com/orgs/home-assistant/discussions
[releases]: https://github.com/home-assistant/home-assistant/releases
- type: checkboxes
attributes:
label: Checklist
description: Please verify that you've followed these steps
options:
- label: I have updated to the latest available Home Assistant version.
required: true
- label: I have cleared the cache of my browser.
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
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
validations:
required: true
attributes:
label: Describe the behavior you expected
description: Describe what you expected to happen or it should look/behave.
- type: textarea
validations:
required: true
attributes:
label: Steps to reproduce the issue
description: |
Please tell us exactly how to reproduce your issue.
Provide clear and concise step by step instructions and add code snippets if needed.
value: |
1.
2.
3.
...
- type: markdown
attributes:
value: |
## Environment
- type: input
validations:
required: true
attributes:
label: What version of Home Assistant Core has the issue?
placeholder: core-
description: >
Can be found in: [Settings -> About](https://my.home-assistant.io/redirect/info/).
- type: input
attributes:
label: What was the last working version of Home Assistant Core?
placeholder: core-
description: >
If known, otherwise leave blank.
- type: input
attributes:
label: In which browser are you experiencing the issue?
placeholder: Google Chrome 88.0.4324.150
description: >
Provide the full name and don't forget to add the version!
- type: input
attributes:
label: Which operating system are you using to run this browser?
placeholder: macOS Big Sur (1.11)
description: >
Don't forget to add the version!
- type: markdown
attributes:
value: |
# Details
- type: textarea
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.
render: txt
- type: textarea
attributes:
label: Problem-relevant frontend configuration
description: >
An example configuration that caused the problem for you, e.g., the YAML
configuration of the used cards. Fill this out even if it seems
unimportant to you. Please be sure to remove personal information like
passwords, private URLs and other credentials.
render: yaml
- type: textarea
attributes:
label: JavaScript errors shown in your browser console/inspector
description: >
If you come across any JavaScript or other error logs, e.g., in your
browser console/inspector please provide them.
render: txt
- type: textarea
attributes:
label: Additional information
description: >
If you have any additional information for us, use the field below.
Please note, you can attach screenshots or screen recordings here, by
dragging and dropping files in the field below.
+3 -9
View File
@@ -1,20 +1,14 @@
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.
- name: Report a bug that is NOT related to the UI / Dashboards
- name: Report a bug that is NOT related to the UI, Frontend or Lovelace
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.
about: This is the issue tracker for our frontend. Please report other issues with the backend repository.
- name: Report incorrect or missing information on our website
url: https://github.com/home-assistant/home-assistant.io/issues
about: Our documentation has its own issue tracker. Please report issues with the website there.
- name: I have a question or need support
url: https://www.home-assistant.io/help
about: We use GitHub for tracking bugs. Check our website for resources on getting help.
about: We use GitHub for tracking bugs, check our website for resources on getting help.
- name: I'm unsure where to go
url: https://www.home-assistant.io/join-chat
about: If you are unsure where to go, then joining our chat is recommended; Just ask!
-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
+22 -47
View File
@@ -2,7 +2,9 @@
You are amazing! Thanks for contributing to our project!
Please, DO NOT DELETE ANY TEXT from this template! (unless instructed).
-->
## Breaking change
<!--
If your PR contains a breaking change for existing users, it is important
to tell them what breaks, how to make it work again and why we did this.
@@ -11,25 +13,17 @@
Note: Remove this section if this PR is NOT a breaking change.
-->
## Proposed change
<!--
Describe the big picture of your changes here to communicate to the
maintainers why we should accept this pull request. If it fixes a bug
or resolves a feature request, be sure to link to that issue or discussion
in the additional information section.
-->
## 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.
or resolves a feature request, be sure to link to that issue in the
additional information section.
-->
## Type of change
<!--
What type of change does your PR introduce to the Home Assistant frontend?
NOTE: Please, check only 1! box!
@@ -43,66 +37,47 @@
- [ ] 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.
Please be sure to fill out additional details, if applicable.
-->
- This PR fixes or closes issue: fixes #
- This PR is related to issue or discussion:
- This PR is related to issue:
- Link to documentation pull request:
- Link to developer documentation pull request:
- Link to backend pull request:
## Checklist
<!--
Put an `x` in the boxes that apply. You can also fill these out after
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://developers.home-assistant.io/docs/review-process/#creating-the-perfect-pr
-23
View File
@@ -1,23 +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"
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 }}
-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
.yarn/install-state.gz
key: >-
${{ inputs.node-modules-cache-key }}-${{ runner.os }}-${{ runner.arch }}-${{
hashFiles('.nvmrc', 'package.json', 'yarn.lock', '.yarnrc.yml', '.yarn/releases/**', '.yarn/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
.yarn/install-state.gz
key: >-
${{ inputs.node-modules-cache-key }}-${{ runner.os }}-${{ runner.arch }}-${{
hashFiles('.nvmrc', 'package.json', 'yarn.lock', '.yarnrc.yml', '.yarn/releases/**', '.yarn/patches/**') }}
-47
View File
@@ -1,47 +0,0 @@
name: Setup Node and install
description: Set up Node from .nvmrc and install yarn dependencies
inputs:
immutable:
description: Pass --immutable to yarn install
default: "true"
cache:
description: Enable the yarn cache in setup-node
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:
- 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
.yarn/install-state.gz
key: >-
${{ inputs.node-modules-cache-key }}-${{ runner.os }}-${{ runner.arch }}-${{
hashFiles('.nvmrc', 'package.json', 'yarn.lock', '.yarnrc.yml', '.yarn/releases/**', '.yarn/patches/**') }}
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: ".nvmrc"
cache: ${{ inputs.cache == 'true' && (inputs.node-modules-cache != 'true' || steps.dependency-cache.outputs.cache-hit != 'true') && 'yarn' || '' }}
- name: Enable Corepack
shell: bash
run: corepack enable
- name: Install dependencies
if: inputs.node-modules-cache != 'true' || steps.dependency-cache.outputs.cache-hit != 'true'
shell: bash
run: yarn install ${{ inputs.immutable == 'true' && '--immutable' || '' }}
-1
View File
@@ -1 +0,0 @@
../AGENTS.md
-24
View File
@@ -1,24 +0,0 @@
version: 2
updates:
- package-ecosystem: "github-actions"
# Dependabot only scans .github/workflows by default; composite actions
# under .github/actions must be listed explicitly to stay updated.
# https://github.com/dependabot/dependabot-core/issues/6704
directories:
- "/"
- "/.github/actions/setup"
- "/.github/actions/build"
- "/.github/actions/netlify-deploy"
schedule:
interval: weekly
time: "06:00"
cooldown:
default-days: 7
open-pull-requests-limit: 10
groups:
codeql-action:
patterns:
- "github/codeql-action/*"
labels:
- Dependencies
- GitHub Actions
-95
View File
@@ -1,95 +0,0 @@
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
Build:
- changed-files:
- any-glob-to-any-file:
- build-scripts/**
- .browserslistrc
- gulpfile.js
Cast:
- changed-files:
- any-glob-to-any-file:
- cast/src/**
- src/cast/**
Demo:
- changed-files:
- any-glob-to-any-file:
- demo/src/**
- src/fake_data/**
Design:
- changed-files:
- any-glob-to-any-file:
- 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
- yarn.lock
- .yarn/**
- .yarnrc.yml
- .nvmrc
# Dependabot and Renovate branches always match (i.e. compatibility tweaks by members considered minor)
- head-branch:
- "^renovate/"
- "^dependabot/"
GitHub Actions:
- changed-files:
- any-glob-to-any-file:
- .github/actions/**
- .github/workflows/**
- .github/*.yml
"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)/**"
+27
View File
@@ -0,0 +1,27 @@
# Configuration for Lock Threads - https://github.com/dessant/lock-threads
# Number of days of inactivity before a closed issue or pull request is locked
daysUntilLock: 1
# Skip issues and pull requests created before a given timestamp. Timestamp must
# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
skipCreatedBefore: 2020-01-01
# Issues and pull requests with these labels will be ignored. Set to `[]` to disable
exemptLabels: []
# Label to add before locking, such as `outdated`. Set to `false` to disable
lockLabel: false
# Comment to post before locking. Set to `false` to disable
lockComment: false
# Assign `resolved` as the reason for locking. Set to `false` to disable
setLockReason: false
# Limit to only `issues` or `pulls`
only: pulls
# Optionally, specify configuration settings just for `issues` or `pulls`
issues:
daysUntilLock: 30
-5
View File
@@ -1,8 +1,3 @@
categories:
- title: "Dependency updates"
collapse-after: 3
labels:
- "Dependencies"
template: |
## What's Changed
-38
View File
@@ -1,38 +0,0 @@
#!/usr/bin/env node
// Fails the check when a pull request carries a label that blocks merging, and
// writes the outcome to the job summary. Invoked from the `check` job in
// .github/workflows/blocking-labels.yaml via actions/github-script:
//
// const { default: checkBlockingLabels } =
// await import(`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-blocking-labels.mjs`);
// await checkBlockingLabels({ github, context, core });
export default async function checkBlockingLabels({ context, core }) {
const blockingLabels = [
"wait for backend",
"Needs UX",
"Do Not Review",
"Blocked",
"has-parent",
];
const prLabels = context.payload.pull_request.labels.map((l) => l.name);
const found = blockingLabels.filter((bl) => prLabels.includes(bl));
if (found.length > 0) {
const message = `This Pull Request is blocked by label${found.length > 1 ? "s" : ""}: ${found.join(", ")}`;
await core.summary
.addHeading(":no_entry_sign: Pull Request is blocked", 2)
.addRaw(message)
.write();
core.setFailed(message);
} else {
await core.summary
.addHeading(
":white_check_mark: Pull Request is clear to merge after review",
2
)
.addRaw(
"This Pull Request is not blocked by any labels which prevent it from being merged."
)
.write();
}
}
@@ -1,195 +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.mjs`);
// await checkStandards({ github, context, core });
export default async function checkPullRequestStandards({
github,
context,
core,
}) {
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 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 (fn) => {
try {
await fn();
} catch (error) {
if (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, minimized) => {
const mutation = minimized
? `mutation($id: ID!) {
minimizeComment(input: { subjectId: $id, classifier: RESOLVED }) {
clientMutationId
}
}`
: `mutation($id: ID!) {
unminimizeComment(input: { subjectId: $id }) {
clientMutationId
}
}`;
try {
await github.graphql(mutation, { id: subjectId });
} catch (error) {
core.info(
`Could not ${minimized ? "minimize" : "restore"} comment: ${error.message}`
);
}
};
// Content of a "## <name>" section, or null when the heading is absent.
const section = (name) => {
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 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(() =>
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 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 [developer docs](https://developers.home-assistant.io/docs/review-process) ` +
`for more on creating a great pull request (see point 6).`;
if (existing) {
await github.rest.issues.updateComment({
owner,
repo,
comment_id: existing.id,
body: message,
});
await setMinimized(existing.node_id, false);
} else {
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,58 +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.mjs`);
// await checkTaskAuthorization({ github, context, core });
export default async function checkTaskAuthorization({
github,
context,
core,
}) {
const issueAuthor = context.payload.issue.user.login;
// Check if user is an organization member
try {
await 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
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 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 github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ["auto-closed"],
});
}
+56
View File
@@ -0,0 +1,56 @@
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 90
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels: []
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
- feature request
- Help wanted
- to do
# Set to true to ignore issues in a project (defaults to false)
exemptProjects: true
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true
# Set to true to ignore issues with an assignee (defaults to false)
exemptAssignees: false
# Label to use when marking as stale
staleLabel: stale
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
There hasn't been any activity on this issue recently. Due to the high number
of incoming GitHub notifications, we have to clean some of the old issues,
as many of them have already been resolved with the latest updates.
Please make sure to update to the latest Home Assistant version and check
if that solves the issue. Let us know if that works for you by adding a
comment 👍
This issue now has been marked as stale and will be closed if no further
activity occurs. Thank you for your contributions.
# Comment to post when removing the stale label.
# unmarkComment: >
# Your comment here.
# Comment to post when closing a stale Issue or Pull Request.
# closeComment: >
# Your comment here.
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
# Limit to only `issues` or `pulls`
only: issues
-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
-35
View File
@@ -1,35 +0,0 @@
name: Blocking labels
on:
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
- unlabeled
branches:
- dev
- master
permissions:
contents: read
jobs:
check:
name: Check for labels which block the Pull Request from being merged
runs-on: ubuntu-latest
steps:
- name: Check out workflow scripts
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/scripts
- name: Check for blocking labels
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { default: checkBlockingLabels } = await import(
`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-blocking-labels.mjs`
);
await checkBlockingLabels({ github, context, core });
-79
View File
@@ -1,79 +0,0 @@
name: Cast deployment
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
push:
branches:
- master
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
jobs:
deploy_dev:
runs-on: ubuntu-latest
name: Deploy Development
if: github.event_name != 'push'
environment:
name: Cast Development
url: ${{ steps.deploy.outputs.netlify_url }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: dev
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Build Cast
uses: ./.github/actions/build
with:
target: build-cast
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
with:
dir: cast/dist
alias: dev
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_CAST_SITE_ID }}
deploy_master:
runs-on: ubuntu-latest
name: Deploy Production
if: github.event_name == 'push'
environment:
name: Cast Production
url: ${{ steps.deploy.outputs.netlify_url }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: master
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Build Cast
uses: ./.github/actions/build
with:
target: build-cast
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
with:
dir: cast/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_CAST_SITE_ID }}
+87 -96
View File
@@ -1,7 +1,6 @@
name: CI
on:
workflow_dispatch:
push:
branches:
- dev
@@ -11,124 +10,116 @@ on:
- dev
- master
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
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@v2
- name: Setting up Node.js
uses: actions/setup-node@v1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
node-version: 12.x
- name: Get yarn cache path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Fetching Yarn cache
uses: actions/cache@v1
with:
node-modules-cache: true
- name: Check for duplicate dependencies
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
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
run: yarn install
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Setup lint cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
node_modules/.cache/prettier
node_modules/.cache/eslint
node_modules/.cache/typescript
key: lint-${{ github.sha }}
restore-keys: lint-
CI: true
- name: Build icons
run: ./node_modules/.bin/gulp gen-icons-json
- name: Build translations
run: ./node_modules/.bin/gulp build-translations
- name: Run eslint
run: yarn run lint:eslint --quiet
run: ./node_modules/.bin/eslint '{**/src,src}/**/*.{js,ts,html}' --ignore-path .gitignore
- name: Run tsc
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: yarn run lint:types
- name: Run lit-analyzer
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: yarn run lint:lit --quiet
- name: Run prettier
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: yarn run lint:prettier
- name: Check dependency licenses
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: yarn run lint:licenses
run: ./node_modules/.bin/tsc
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@v2
- name: Setting up Node.js
uses: actions/setup-node@v1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
node-version: 12.x
- name: Get yarn cache path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Fetching Yarn cache
uses: actions/cache@v1
with:
node-modules-cache: true
- name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
run: yarn install
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run Tests
run: yarn run test
CI: true
- name: Run Mocha
run: npm run mocha
build:
name: Build frontend
needs:
- prepare-dependencies
- lint
- test
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v2
- name: Setting up Node.js
uses: actions/setup-node@v1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
node-version: 12.x
- name: Get yarn cache path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Fetching Yarn cache
uses: actions/cache@v1
with:
node-modules-cache: true
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
run: yarn install
env:
CI: true
- name: Build Application
uses: ./.github/actions/build
run: ./node_modules/.bin/gulp build-app
env:
IS_TEST: "true"
supervisor:
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- name: Check out files from GitHub
uses: actions/checkout@v2
- name: Setting up Node.js
uses: actions/setup-node@v1
with:
target: build-app
github-token: ${{ secrets.GITHUB_TOKEN }}
is-test: true
- name: Upload bundle stats
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
node-version: 12.x
- name: Get yarn cache path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Fetching Yarn cache
uses: actions/cache@v1
with:
name: frontend-bundle-stats
path: build/stats/*.json
if-no-files-found: error
- name: Check entrypoint bundle size budget
run: yarn run check-bundlesize
- name: Upload frontend build
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: frontend-build
path: hass_frontend/
if-no-files-found: error
retention-days: 7
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
run: yarn install
env:
CI: true
- 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@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4
with:
languages: javascript-typescript
build-mode: none
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4
with:
category: "/language:javascript-typescript"
-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
+39
View File
@@ -0,0 +1,39 @@
name: Demo
on:
push:
branches:
- dev
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@v2
- name: Setting up Node.js
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Get yarn cache path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Fetching Yarn cache
uses: actions/cache@v1
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
run: yarn install
env:
CI: true
- name: Build Demo
run: ./node_modules/.bin/gulp build-demo
- name: Deploy to Netlify
uses: netlify/actions/cli@master
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_DEMO_DEV_SITE_ID }}
with:
args: deploy --dir=demo/dist --prod
-79
View File
@@ -1,79 +0,0 @@
name: Demo deployment
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
push:
branches:
- dev
- master
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
jobs:
deploy_dev:
runs-on: ubuntu-latest
name: Demo Development
if: github.event_name != 'push' || github.ref_name != 'master'
environment:
name: Demo Development
url: ${{ steps.deploy.outputs.unique_deploy_url }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: dev
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Build Demo
uses: ./.github/actions/build
with:
target: build-demo
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
with:
dir: demo/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_DEMO_DEV_SITE_ID }}
deploy_master:
runs-on: ubuntu-latest
name: Demo Production
if: github.event_name == 'push' && github.ref_name == 'master'
environment:
name: Demo Production
url: ${{ steps.deploy.outputs.netlify_url }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: master
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Build Demo
uses: ./.github/actions/build
with:
target: build-demo
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
with:
dir: demo/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_DEMO_SITE_ID }}
-41
View File
@@ -1,41 +0,0 @@
name: Design deployment
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: Design
url: ${{ steps.deploy.outputs.netlify_url }}
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
- name: Build Gallery
uses: ./.github/actions/build
with:
target: build-gallery
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
with:
dir: gallery/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_GALLERY_SITE_ID }}
-50
View File
@@ -1,50 +0,0 @@
name: Design preview
on:
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
branches:
- dev
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
jobs:
preview:
runs-on: ubuntu-latest
# Skip running on forks since it won't have access to secrets
# Skip running PRs without 'needs design preview' label
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
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Build Gallery
uses: ./.github/actions/build
with:
target: build-gallery
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy preview to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
with:
dir: gallery/dist
alias: deploy-preview-${{ github.event.number }}
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_GALLERY_SITE_ID }}
- name: Generate summary
run: echo "${{ steps.deploy.outputs.netlify_url }}" >> "$GITHUB_STEP_SUMMARY"
-395
View File
@@ -1,395 +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.62.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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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 }}
- name: Upload gallery build
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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.62.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@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: demo-dist
path: demo/dist/
- name: Run Playwright demo tests
run: yarn test:e2e:demo --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
timeout-minutes: 15
- name: Upload demo blob report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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.62.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@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: e2e-test-app-dist
path: test/e2e/app/dist/
- name: Run Playwright app tests
run: yarn test:e2e:app --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
timeout-minutes: 15
- name: Upload app blob report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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.62.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@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: gallery-dist
path: gallery/dist/
- name: Run Playwright gallery tests
run: yarn test:e2e:gallery --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
timeout-minutes: 15
- name: Upload gallery blob report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
continue-on-error: true
with:
pattern: blob-report-demo-*
path: test/e2e/reports/demo/
- name: Download app blob reports
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
continue-on-error: true
with:
pattern: blob-report-app-*
path: test/e2e/reports/app/
- name: Download gallery blob reports
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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"
-15
View File
@@ -1,15 +0,0 @@
name: "Pull Request Labeler"
on: pull_request_target # zizmor: ignore[dangerous-triggers] -- safe: only runs actions/labeler, no PR code checkout
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Apply labels
uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
with:
sync-labels: true
-23
View File
@@ -1,23 +0,0 @@
name: Lock
# yamllint disable-line rule:truthy
on:
schedule:
- cron: "0 * * * *"
permissions:
issues: write
pull-requests: write
jobs:
lock:
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: ""
-119
View File
@@ -1,119 +0,0 @@
name: Nightly
on:
workflow_dispatch:
schedule:
- cron: "0 1 * * *"
env:
PYTHON_VERSION: "3.14"
NODE_OPTIONS: --max_old_space_size=6144
permissions:
actions: none
jobs:
nightly:
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
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- 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 }}
# 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 }}-
- name: Build nightly Python wheels
env:
COMPRESS_CACHE_DIR: ${{ github.workspace }}/.compress-cache
run: |
pip install build
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 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: Upload build artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
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:
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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: translations
path: translations.tar.gz
if-no-files-found: error
@@ -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.mjs`
);
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.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
steps:
- name: Send bundle stats and build information to RelativeCI
uses: relative-ci/agent-action@fcf45416581928e8dd62eded78ce98c78e5149f8 # v3.2.3
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.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
steps:
- name: Send bundle stats and build information to RelativeCI
uses: relative-ci/agent-action@fcf45416581928e8dd62eded78ce98c78e5149f8 # v3.2.3
with:
key: ${{ secrets.RELATIVE_CI_KEY_frontend_legacy }}
token: ${{ github.token }}
artifactName: frontend-bundle-stats
webpackStatsFile: frontend-legacy.json
+1 -10
View File
@@ -5,19 +5,10 @@ on:
branches:
- dev
permissions:
contents: read
jobs:
update_release_draft:
permissions:
# write permission for contents is required to create a github release
contents: write
# write permission for pull-requests is required for autolabeler
# otherwise, read permission is required at least
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: release-drafter/release-drafter@34d80673e067bdc0c24568d3af899c216adcfaa9 # v7.7.0
- uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-169
View File
@@ -1,169 +0,0 @@
name: Release
on:
release:
types:
- published
env:
PYTHON_VERSION: "3.14"
NODE_OPTIONS: --max_old_space_size=6144
# Set default workflow permissions
# All scopes not mentioned here are set to no access
# https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token
permissions:
actions: none
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
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Verify version
uses: home-assistant/actions/helpers/verify-version@a7c616ce81ccda50150bf1595786c71b1883fabb # master
- 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 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
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
wheels-init:
name: Init wheels build
needs: release
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
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
with:
abi: cp314
tag: musllinux_1_2
arch: amd64
wheels-key: ${{ secrets.WHEELS_KEY }}
requirements: "requirements.txt"
release-landing-page:
name: Release landing-page frontend
if: 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,56 +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:
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: Add no-stale label
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
await 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.mjs`
);
await checkTaskAuthorization({ github, context, core });
-47
View File
@@ -1,47 +0,0 @@
name: Stale
# yamllint disable-line rule:truthy
on:
schedule:
- cron: "0 * * * *"
permissions:
actions: write
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-latest
steps:
- name: 90 days stale policy
uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 90
days-before-close: 7
operations-per-run: 25
remove-stale-when-updated: true
stale-issue-label: "stale"
exempt-issue-labels: "no-stale,Help%20wanted,help-wanted,feature-request,feature%20request"
stale-issue-message: >
There hasn't been any activity on this issue recently. Due to the
high number of incoming GitHub notifications, we have to clean some
of the old issues, as many of them have already been resolved with
the latest updates.
Please make sure to update to the latest Home Assistant version and
check if that solves the issue. Let us know if that works for you by
adding a comment 👍
This issue has now been marked as stale and will be closed if no
further activity occurs. Thank you for your contributions.
stale-pr-label: "stale"
exempt-pr-labels: "no-stale"
stale-pr-message: >
There hasn't been any activity on this pull request recently. This
pull request has been automatically marked as stale because of that
and will be closed if no further activity occurs within 7 days.
Thank you for your contributions.
@@ -1,47 +0,0 @@
name: Sync numeric device classes
# Mirrors Home Assistant Core's numeric `SensorDeviceClass` list into the
# build-time default in src/data/sensor_numeric_device_classes.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:
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 numeric device classes
run: ./script/gen_numeric_device_classes
- name: Format
run: yarn prettier --write src/data/sensor_numeric_device_classes.ts
- name: Create pull request
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
branch: chore/sync-numeric-device-classes
commit-message: Update numeric sensor device classes
title: Update numeric sensor device classes
body: |
Regenerated `SENSOR_NUMERIC_DEVICE_CLASSES` from Home Assistant Core's
`SensorDeviceClass`.
Automated by `.github/workflows/sync-numeric-device-classes.yaml`.
-28
View File
@@ -1,28 +0,0 @@
name: Translations
on:
workflow_dispatch:
push:
branches:
- dev
paths:
- .github/workflows/translations.yaml
- src/translations/en.json
permissions:
contents: read
jobs:
upload:
name: Upload
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Upload Translations
run: ./script/translations_upload_base
env:
LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
+13 -53
View File
@@ -1,26 +1,10 @@
.DS_Store
.reify-cache
# build
build/
dist/
/hass_frontend/
/translations/
/.compress-cache/
# Composite action source, not build output
!/.github/actions/build/
# yarn
.yarn/*
!.yarn/patches
!.yarn/releases
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
.pnp.*
node_modules/
yarn-error.log
build
build-translations/*
node_modules/*
npm-debug.log
.DS_Store
hass_frontend/*
.reify-cache
# Python stuff
*.py[cod]
@@ -30,46 +14,22 @@ npm-debug.log
# venv stuff
pyvenv.cfg
pip-selfcheck.json
/venv/
venv
.venv
lib
bin
dist
# vscode
.vscode/*
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/tasks.json
# Cast dev settings
# Cast dev settings
src/cast/dev_const.ts
# Secrets
.lokalise_token
yarn-error.log
# asdf
#asdf
.tool-versions
# 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/
+6
View File
@@ -0,0 +1,6 @@
jshint:
enabled: false
eslint:
enabled: true
config_file: .eslintrc-hound.json
-1
View File
@@ -1 +0,0 @@
yarn run lint-staged --relative
+1 -1
View File
@@ -1 +1 @@
24.19.0
12.1
+10 -4
View File
@@ -1,4 +1,10 @@
CLA.md
CODE_OF_CONDUCT.md
LICENSE.md
PULL_REQUEST_TEMPLATE.md
build
build-translations/*
translations/*
node_modules/*
hass_frontend/*
pip-selfcheck.json
# vscode
.vscode/*
!.vscode/extensions.json
+2 -5
View File
@@ -2,10 +2,7 @@
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"runem.lit-plugin",
"github.vscode-pull-request-github",
"eamodio.gitlens",
"vitest.explorer",
"yeion7.styled-global-variables-autocomplete"
"bierner.lit-html",
"runem.lit-plugin"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
// https://github.com/microsoft/vscode-js-debug/blob/master/OPTIONS.md
"configurations": [
{
"name": "Debug Frontend",
"request": "launch",
"type": "pwa-chrome",
"url": "http://localhost:8123/",
"webRoot": "${workspaceFolder}/hass_frontend",
"disableNetworkCache": true,
"preLaunchTask": "Develop Frontend",
"outFiles": ["${workspaceFolder}/hass_frontend/frontend_latest/*.js"]
},
{
"name": "Debug Gallery",
"request": "launch",
"type": "pwa-chrome",
"url": "http://localhost:8100/",
"webRoot": "${workspaceFolder}/gallery/dist",
"disableNetworkCache": true,
"preLaunchTask": "Develop Gallery"
},
{
"name": "Debug Demo",
"request": "launch",
"type": "pwa-chrome",
"url": "http://localhost:8090/",
"webRoot": "${workspaceFolder}/demo/dist",
"disableNetworkCache": true,
"preLaunchTask": "Develop Demo"
},
{
"name": "Debug Cast",
"request": "launch",
"type": "pwa-chrome",
"url": "http://localhost:8080/",
"webRoot": "${workspaceFolder}/cast/dist",
"disableNetworkCache": true,
"preLaunchTask": "Develop Cast"
}
]
}
-233
View File
@@ -1,233 +0,0 @@
{
"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",
"task": "develop-app",
// 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 Gallery",
"type": "gulp",
"task": "develop-gallery",
"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": "build",
"runOptions": {
"instanceLimit": 1
}
},
{
"label": "Develop Landing Page",
"type": "gulp",
"task": "develop-landing-page",
"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": "build",
"runOptions": {
"instanceLimit": 1
}
},
{
"label": "Develop Demo",
"type": "gulp",
"task": "develop-demo",
"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": "build",
"runOptions": {
"instanceLimit": 1
}
},
{
"label": "Develop Cast",
"type": "gulp",
"task": "develop-cast",
"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": "build",
"runOptions": {
"instanceLimit": 1
}
},
{
"label": "Run HA Core in devcontainer",
"type": "shell",
"command": "script/core",
"isBackground": true,
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [],
"runOptions": {
"instanceLimit": 1
}
},
{
"label": "Setup and fetch nightly translations",
"type": "gulp",
"task": "setup-and-fetch-nightly-translations",
"problemMatcher": []
}
],
"inputs": [
{
"id": "coreUrl",
"type": "promptString",
"description": "The URL of the Home Assistant Core instance",
"default": "http://127.0.0.1:8123"
}
]
}
@@ -1,22 +0,0 @@
diff --git a/mwc-formfield-base.js b/mwc-formfield-base.js
index 7b763326d7d51835ad52646bfbc80fe21989abd3..f2baa8224e6d03df1fdb0b9fd03f5c6d77fc8747 100644
--- a/mwc-formfield-base.js
+++ b/mwc-formfield-base.js
@@ -9,7 +9,7 @@ import { BaseElement } from '@material/mwc-base/base-element.js';
import { FormElement } from '@material/mwc-base/form-element.js';
import { observer } from '@material/mwc-base/observer.js';
import { html } from 'lit';
-import { property, query, queryAssignedNodes } from 'lit/decorators.js';
+import { property, query, queryAssignedElements } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
export class FormfieldBase extends BaseElement {
constructor() {
@@ -96,7 +96,7 @@ __decorate([
query('.mdc-form-field')
], FormfieldBase.prototype, "mdcRoot", void 0);
__decorate([
- queryAssignedNodes('', true, '*')
+ queryAssignedElements({ slot: "", flatten: true, selector: "*" })
], FormfieldBase.prototype, "slottedInputs", void 0);
__decorate([
query('label')
@@ -1,26 +0,0 @@
diff --git a/mwc-list-base.js b/mwc-list-base.js
index 1ba95b6a01dcecea4d85b5cbbbcc3dfb04c40d5f..dced13fdb7929c490d6661b1bbe7e9f96dcd2285 100644
--- a/mwc-list-base.js
+++ b/mwc-list-base.js
@@ -11,7 +11,7 @@ import { BaseElement } from '@material/mwc-base/base-element.js';
import { observer } from '@material/mwc-base/observer.js';
import { deepActiveElementPath, doesElementContainFocus, isNodeElement } from '@material/mwc-base/utils.js';
import { html } from 'lit';
-import { property, query, queryAssignedNodes } from 'lit/decorators.js';
+import { property, query, queryAssignedElements } from 'lit/decorators.js';
import { ifDefined } from 'lit/directives/if-defined.js';
import MDCListFoundation, { isIndexSet } from './mwc-list-foundation.js';
export { createSetFromIndex, isEventMulti, isIndexSet } from './mwc-list-foundation.js';
@@ -425,10 +425,10 @@ __decorate([
query('.mdc-deprecated-list')
], ListBase.prototype, "mdcRoot", void 0);
__decorate([
- queryAssignedNodes('', true, '*')
+ queryAssignedElements({ flatten: true, selector: "*" })
], ListBase.prototype, "assignedElements", void 0);
__decorate([
- queryAssignedNodes('', true, '[tabindex="0"]')
+ queryAssignedElements({ flatten: true, selector: '[tabindex="0"]' })
], ListBase.prototype, "tabbableElements", void 0);
__decorate([
property({ type: Boolean }),
@@ -1,13 +0,0 @@
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
@@ -1,60 +0,0 @@
diff --git a/modular/sortable.core.esm.js b/modular/sortable.core.esm.js
index 8b5e49b011713c8859c669069fbe85ce53974e1d..6a0afc92787157b8a31c38cc5f67dfa526090a00 100644
--- a/modular/sortable.core.esm.js
+++ b/modular/sortable.core.esm.js
@@ -1781,11 +1781,16 @@ Sortable.prototype = /** @lends Sortable.prototype */{
}
if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {
capture();
- if (elLastChild && elLastChild.nextSibling) {
- // the last draggable element is not the last node
- el.insertBefore(dragEl, elLastChild.nextSibling);
- } else {
- el.appendChild(dragEl);
+ try {
+ if (elLastChild && elLastChild.nextSibling) {
+ // the last draggable element is not the last node
+ el.insertBefore(dragEl, elLastChild.nextSibling);
+ } else {
+ el.appendChild(dragEl);
+ }
+ }
+ catch(err) {
+ return completed(false);
}
parentEl = el; // actualization
@@ -1802,7 +1807,12 @@ Sortable.prototype = /** @lends Sortable.prototype */{
targetRect = getRect(target);
if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {
capture();
- el.insertBefore(dragEl, firstChild);
+ try {
+ el.insertBefore(dragEl, firstChild);
+ }
+ catch(err) {
+ return completed(false);
+ }
parentEl = el; // actualization
changed();
@@ -1849,10 +1859,15 @@ Sortable.prototype = /** @lends Sortable.prototype */{
_silent = true;
setTimeout(_unsilent, 30);
capture();
- if (after && !nextSibling) {
- el.appendChild(dragEl);
- } else {
- target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
+ try {
+ if (after && !nextSibling) {
+ el.appendChild(dragEl);
+ } else {
+ target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
+ }
+ }
+ catch(err) {
+ return completed(false);
}
// Undo chrome's scroll adjustment (has no effect on other browsers)
@@ -1,86 +0,0 @@
diff --git a/dist/tinykeys.cjs b/dist/tinykeys.cjs
index 08c98b6eff3b8fb4b727fe8e6b096951d6ef6347..9c44f14862f582766ea1733b6dc0e97f962800d8 100644
--- a/dist/tinykeys.cjs
+++ b/dist/tinykeys.cjs
@@ -61,6 +61,18 @@ function defaultKeybindingsHandlerIgnore(event) {
function getModifierState(event, mod) {
return typeof event.getModifierState === "function" ? event.getModifierState(mod) || ALT_GRAPH_ALIASES.includes(mod) && event.getModifierState("AltGraph") : false;
}
+function splitKeybindingPress(press) {
+ let parts = [];
+ let start = 0;
+ for (let index = 0; index < press.length; index++) {
+ if (press[index] === "+" && /[\w\]]/.test(press[index - 1] || "")) {
+ parts.push(press.slice(start, index));
+ start = index + 1;
+ }
+ }
+ parts.push(press.slice(start));
+ return parts;
+}
/**
* Parses a keybinding string into its parts.
*
@@ -76,10 +88,10 @@ function getModifierState(event, mod) {
*/
function parseKeybinding(str) {
return str.trim().split(" ").map((press) => {
- let parts = press.split(/(?<=\w|\])\+/);
+ let parts = splitKeybindingPress(press);
let last = parts.pop();
let regex = last.match(/^\((.+)\)$/);
- let key = regex ? new RegExp(`^(?:${regex[1]})$`, "iv") : last;
+ let key = regex ? new RegExp(`^(?:${regex[1]})$`, "i") : last;
let requiredModifiers = [];
let optionalModifiers = [];
for (const part of parts) {
@@ -201,5 +213,3 @@ exports.defaultKeybindingsHandlerIgnore = defaultKeybindingsHandlerIgnore;
exports.matchKeybindingPress = matchKeybindingPress;
exports.parseKeybinding = parseKeybinding;
exports.tinykeys = tinykeys;
-
-//# sourceMappingURL=tinykeys.cjs.map
\ No newline at end of file
diff --git a/dist/tinykeys.mjs b/dist/tinykeys.mjs
index c289972d2728e03d9b272268c38fd3392e8845bf..e22897b00aae6cdb0dbbb971445227c07be52918 100644
--- a/dist/tinykeys.mjs
+++ b/dist/tinykeys.mjs
@@ -60,6 +60,18 @@ function defaultKeybindingsHandlerIgnore(event) {
function getModifierState(event, mod) {
return typeof event.getModifierState === "function" ? event.getModifierState(mod) || ALT_GRAPH_ALIASES.includes(mod) && event.getModifierState("AltGraph") : false;
}
+function splitKeybindingPress(press) {
+ let parts = [];
+ let start = 0;
+ for (let index = 0; index < press.length; index++) {
+ if (press[index] === "+" && /[\w\]]/.test(press[index - 1] || "")) {
+ parts.push(press.slice(start, index));
+ start = index + 1;
+ }
+ }
+ parts.push(press.slice(start));
+ return parts;
+}
/**
* Parses a keybinding string into its parts.
*
@@ -75,10 +87,10 @@ function getModifierState(event, mod) {
*/
function parseKeybinding(str) {
return str.trim().split(" ").map((press) => {
- let parts = press.split(/(?<=\w|\])\+/);
+ let parts = splitKeybindingPress(press);
let last = parts.pop();
let regex = last.match(/^\((.+)\)$/);
- let key = regex ? new RegExp(`^(?:${regex[1]})$`, "iv") : last;
+ let key = regex ? new RegExp(`^(?:${regex[1]})$`, "i") : last;
let requiredModifiers = [];
let optionalModifiers = [];
for (const part of parts) {
@@ -196,5 +208,3 @@ function tinykeys(target, keybindingMap, options = {}) {
}
//#endregion
export { createKeybindingsHandler, defaultKeybindingsHandlerIgnore, matchKeybindingPress, parseKeybinding, tinykeys };
-
-//# sourceMappingURL=tinykeys.mjs.map
\ No newline at end of file
@@ -1,55 +0,0 @@
diff --git a/build/inject-manifest.js b/build/inject-manifest.js
index 60e3d2bb51c11a19fbbedbad65e101082ec41c36..fed6026630f43f86e25446383982cf6fb694313b 100644
--- a/build/inject-manifest.js
+++ b/build/inject-manifest.js
@@ -104,7 +104,7 @@ async function injectManifest(config) {
replaceString: manifestString,
searchString: options.injectionPoint,
});
- filesToWrite[options.swDest] = source;
+ filesToWrite[options.swDest] = source.replace(url, encodeURI(upath_1.default.basename(destPath)));
filesToWrite[destPath] = map;
}
else {
diff --git a/build/lib/translate-url-to-sourcemap-paths.js b/build/lib/translate-url-to-sourcemap-paths.js
index 3220c5474eeac6e8a56ca9b2ac2bd9be48529e43..5f003879a904d4840529a42dd056d288fd213771 100644
--- a/build/lib/translate-url-to-sourcemap-paths.js
+++ b/build/lib/translate-url-to-sourcemap-paths.js
@@ -22,7 +22,7 @@ function translateURLToSourcemapPaths(url, swSrc, swDest) {
const possibleSrcPath = upath_1.default.resolve(upath_1.default.dirname(swSrc), url);
if (fs_extra_1.default.existsSync(possibleSrcPath)) {
srcPath = possibleSrcPath;
- destPath = upath_1.default.resolve(upath_1.default.dirname(swDest), url);
+ destPath = `${swDest}.map`;
}
else {
warning = `${errors_1.errors['cant-find-sourcemap']} ${possibleSrcPath}`;
diff --git a/src/inject-manifest.ts b/src/inject-manifest.ts
index 8795ddcaa77aea7b0356417e4bc4b19e2b3f860c..fcdc68342d9ac53936c9ed40a9ccfc2f5070cad3 100644
--- a/src/inject-manifest.ts
+++ b/src/inject-manifest.ts
@@ -129,7 +129,10 @@ export async function injectManifest(
searchString: options.injectionPoint!,
});
- filesToWrite[options.swDest] = source;
+ filesToWrite[options.swDest] = source.replace(
+ url!,
+ encodeURI(upath.basename(destPath)),
+ );
filesToWrite[destPath] = map;
} else {
// If there's no sourcemap associated with swSrc, a simple string
diff --git a/src/lib/translate-url-to-sourcemap-paths.ts b/src/lib/translate-url-to-sourcemap-paths.ts
index 072eac40d4ef5d095a01cb7f7e392a9e034853bd..f0bbe69e88ef3a415de18a7e9cb264daea273d71 100644
--- a/src/lib/translate-url-to-sourcemap-paths.ts
+++ b/src/lib/translate-url-to-sourcemap-paths.ts
@@ -28,7 +28,7 @@ export function translateURLToSourcemapPaths(
const possibleSrcPath = upath.resolve(upath.dirname(swSrc), url);
if (fse.existsSync(possibleSrcPath)) {
srcPath = possibleSrcPath;
- destPath = upath.resolve(upath.dirname(swDest), url);
+ destPath = `${swDest}.map`;
} else {
warning = `${errors['cant-find-sourcemap']} ${possibleSrcPath}`;
}
-1000
View File
@@ -1,1000 +0,0 @@
#!/usr/bin/env node
/* eslint-disable */
//prettier-ignore
(()=>{var QXe=Object.create;var A6=Object.defineProperty;var FXe=Object.getOwnPropertyDescriptor;var NXe=Object.getOwnPropertyNames;var OXe=Object.getPrototypeOf,LXe=Object.prototype.hasOwnProperty;var Ae=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var tt=(t,e)=>()=>(t&&(e=t(t=0)),e);var H=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),lr=(t,e)=>{for(var r in e)A6(t,r,{get:e[r],enumerable:!0})},_Xe=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of NXe(e))!LXe.call(t,a)&&a!==r&&A6(t,a,{get:()=>e[a],enumerable:!(s=FXe(e,a))||s.enumerable});return t};var st=(t,e,r)=>(r=t!=null?QXe(OXe(t)):{},_Xe(e||!t||!t.__esModule?A6(r,"default",{value:t,enumerable:!0}):r,t));var Oi={};lr(Oi,{SAFE_TIME:()=>bae,S_IFDIR:()=>fT,S_IFLNK:()=>hT,S_IFMT:()=>Rh,S_IFREG:()=>nS});var Rh,fT,nS,hT,bae,Dae=tt(()=>{Rh=61440,fT=16384,nS=32768,hT=40960,bae=456789e3});var vr={};lr(vr,{EBADF:()=>ha,EBUSY:()=>MXe,EEXIST:()=>VXe,EINVAL:()=>HXe,EISDIR:()=>qXe,ENOENT:()=>jXe,ENOSYS:()=>UXe,ENOTDIR:()=>GXe,ENOTEMPTY:()=>YXe,EOPNOTSUPP:()=>KXe,EROFS:()=>WXe,ERR_DIR_CLOSED:()=>p6});function ou(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function MXe(t){return ou("EBUSY",t)}function UXe(t,e){return ou("ENOSYS",`${t}, ${e}`)}function HXe(t){return ou("EINVAL",`invalid argument, ${t}`)}function ha(t){return ou("EBADF",`bad file descriptor, ${t}`)}function jXe(t){return ou("ENOENT",`no such file or directory, ${t}`)}function GXe(t){return ou("ENOTDIR",`not a directory, ${t}`)}function qXe(t){return ou("EISDIR",`illegal operation on a directory, ${t}`)}function VXe(t){return ou("EEXIST",`file already exists, ${t}`)}function WXe(t){return ou("EROFS",`read-only filesystem, ${t}`)}function YXe(t){return ou("ENOTEMPTY",`directory not empty, ${t}`)}function KXe(t){return ou("EOPNOTSUPP",`operation not supported, ${t}`)}function p6(){return ou("ERR_DIR_CLOSED","Directory handle was closed")}var AT=tt(()=>{});var Lc={};lr(Lc,{BigIntStatsEntry:()=>iw,DEFAULT_MODE:()=>m6,DirEntry:()=>d6,StatEntry:()=>nw,areStatsEqual:()=>y6,clearStats:()=>pT,convertToBigIntStats:()=>JXe,makeDefaultStats:()=>Pae,makeEmptyStats:()=>zXe});function Pae(){return new nw}function zXe(){return pT(Pae())}function pT(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):g6.types.isDate(r)&&(t[e]=new Date(0))}return t}function JXe(t){let e=new iw;for(let r in t)if(Object.hasOwn(t,r)){let s=t[r];typeof s=="number"?e[r]=BigInt(Math.floor(s)):g6.types.isDate(s)&&(e[r]=new Date(s))}return e.atimeNs=e.atimeMs*BigInt(1e6)+BigInt(Math.floor(t.atimeMs%1*1e3))*BigInt(1e3),e.mtimeNs=e.mtimeMs*BigInt(1e6)+BigInt(Math.floor(t.mtimeMs%1*1e3))*BigInt(1e3),e.ctimeNs=e.ctimeMs*BigInt(1e6)+BigInt(Math.floor(t.ctimeMs%1*1e3))*BigInt(1e3),e.birthtimeNs=e.birthtimeMs*BigInt(1e6)+BigInt(Math.floor(t.birthtimeMs%1*1e3))*BigInt(1e3),e}function y6(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,s=e;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var g6,m6,d6,nw,iw,E6=tt(()=>{g6=st(Ae("util")),m6=33188,d6=class{constructor(){this.name="";this.path="";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}},nw=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=m6;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}},iw=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);thisLine truncated
`).length,s=e.length-r;return r>s?`\r
`:`
`}function ty(t,e){return e.replace(/\r?\n/g,l$e(t))}var Lae,_ae,Sp,Th,ry=tt(()=>{Lae=Ae("crypto"),_ae=Ae("os");C6();_c();Sp=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let s=[e];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let l=await this.readdirPromise(a);if(r)for(let f of l.sort())s.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let s=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),l=(0,Lae.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)l.update(f===65536?n:n.slice(0,f));return l.digest("hex")}finally{await this.closePromise(s)}}async removePromise(e,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(l=>this.removePromise(this.pathUtils.resolve(e,l))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(e);break}catch(l){if(l.code!=="EBUSY"&&l.code!=="ENOTEMPTY")throw l;n<s&&await new Promise(f=>setTimeout(f,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let s;try{s=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let l=2;l<=a.length;++l){let f=a.slice(0,l).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(h){if(h.code==="EEXIST")continue;throw h}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let h=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,h.atime,h.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let l=2;l<=a.length;++l){let f=a.slice(0,l).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(h){if(h.code==="EEXIST")continue;throw h}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let h=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,h.atime,h.mtime)}}}return n}async copyPromise(e,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:l=!1,linkStrategy:f=null}={}){return await Rae(this,e,s,r,{overwrite:a,stableSort:n,stableTime:l,linkStrategy:f})}copySync(e,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),l=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let h=s.readdirSync(r);for(let A of h)this.copySync(this.pathUtils.join(e,A),s.pathUtils.join(r,A),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!l||a){l&&this.removeSync(e);let h=s.readFileSync(r);this.writeFileSync(e,h)}}else if(n.isSymbolicLink()){if(!l||a){l&&this.removeSync(e);let h=s.readlinkSync(r);this.symlinkSync(dT(this.pathUtils,h),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(e,f)}async changeFilePromise(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,s):this.changeFileTextPromise(e,r,s)}async changeFileBufferPromise(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:s})}async changeFileTextPromise(e,r,{automaticNewlines:s,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let l=s?ty(n,r):r;n!==l&&await this.writeFilePromise(e,l,{mode:a})}changeFileSync(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,s):this.changeFileTextSync(e,r,s)}changeFileBufferSync(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:s})}changeFileTextSync(e,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let l=s?ty(n,r):r;n!==l&&this.writeFileSync(e,l,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(s){if(s.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw s}}moveSync(e,r){try{this.renameSync(e,r)}catch(s){if(s.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw s}}async lockPromise(e,r){let s=`${e}.flock`,a=1e3/60,n=Date.now(),l=null,f=async()=>{let h;try{[h]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(h,0),!0}catch{return!1}};for(;l===null;)try{l=await this.openPromise(s,"wx")}catch(h){if(h.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(A=>setTimeout(A,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else Line truncated
`)}writeJsonSync(e,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}
`)}async preserveTimePromise(e,r){let s=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,s.atime,s.mtime)}async preserveTimeSync(e,r){let s=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,s.atime,s.mtime)}},Th=class extends Sp{constructor(){super(Y)}}});var fo,bp=tt(()=>{ry();fo=class extends Sp{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,s){return this.baseFs.openPromise(this.mapToBase(e),r,s)}openSync(e,r,s){return this.baseFs.openSync(this.mapToBase(e),r,s)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,s,a,n){return await this.baseFs.readPromise(e,r,s,a,n)}readSync(e,r,s,a,n){return this.baseFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,s):await this.baseFs.writePromise(e,r,s,a,n)}writeSync(e,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,s):this.baseFs.writeSync(e,r,s,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,s){return this.baseFs.fchownPromise(e,r,s)}fchownSync(e,r,s){return this.baseFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return this.baseFs.chownPromise(this.mapToBase(e),r,s)}chownSync(e,r,s){return this.baseFs.chownSync(this.mapToBase(e),r,s)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),s)}copyFileSync(e,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),s)}async appendFilePromise(e,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,s)}appendFileSync(e,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,s)}async writeFilePromise(e,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,s)}writeFileSync(e,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,s)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,s){return this.baseFs.utimesPromise(this.mapToBase(e),r,s)}utimesSync(e,r,s){return this.baseFs.utimesSync(this.mapToBase(e),r,s)}async lutimesPromise(e,r,s){return this.baseFs.lutimesPromise(this.mapToBase(e),r,s)}lutimesSync(e,r,s){return this.baseFs.lutimesSync(this.mapToBase(e),r,s)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),l=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkP Line truncated
`,La=Pr(`\\
`,!1),HA=function(){return""},Ma="\\",Ua=Pr("\\",!1),jA=/^[\\$"`]/,Fr=ws(["\\","$",'"',"`"],!1,!1),Zo=function(O){return O},Ec="\\a",Ge=Pr("\\a",!1),Hr=function(){return"a"},oh="\\b",GA=Pr("\\b",!1),qA=function(){return"\b"},Zu=/^[Ee]/,Xu=ws(["E","e"],!1,!1),Vl=function(){return"\x1B"},ve="\\f",Jt=Pr("\\f",!1),Wl=function(){return"\f"},as="\\n",To=Pr("\\n",!1),Vt=function(){return`
`},ei="\\r",Ha=Pr("\\r",!1),As=function(){return"\r"},cs="\\t",Ic=Pr("\\t",!1),Un=function(){return" "},Ei="\\v",$u=Pr("\\v",!1),Ud=function(){return"\v"},wc=/^[\\'"?]/,Cc=ws(["\\","'",'"',"?"],!1,!1),Bc=function(O){return String.fromCharCode(parseInt(O,16))},it="\\x",vc=Pr("\\x",!1),ah="\\u",Yl=Pr("\\u",!1),Yn="\\U",ja=Pr("\\U",!1),VA=function(O){return String.fromCodePoint(parseInt(O,16))},WA=/^[0-7]/,Ga=ws([["0","7"]],!1,!1),ll=/^[0-9a-fA-f]/,rr=ws([["0","9"],["a","f"],["A","f"]],!1,!1),ti=fh(),qa="{}",Sc=Pr("{}",!1),ks=function(){return"{}"},Kl="-",ef=Pr("-",!1),zl="+",bc=Pr("+",!1),ls=".",Ys=Pr(".",!1),ul=function(O,J,se){return{type:"number",value:(O==="-"?-1:1)*parseFloat(J.join("")+"."+se.join(""))}},ch=function(O,J){return{type:"number",value:(O==="-"?-1:1)*parseInt(J.join(""))}},Jl=function(O){return{type:"variable",...O}},zi=function(O){return{type:"variable",name:O}},ri=function(O){return O},Zl="*",et=Pr("*",!1),dt="/",_t=Pr("/",!1),Sr=function(O,J,se){return{type:J==="*"?"multiplication":"division",right:se}},ne=function(O,J){return J.reduce((se,Ie)=>({left:se,...Ie}),O)},Be=function(O,J,se){return{type:J==="+"?"addition":"subtraction",right:se}},_e="$((",bt=Pr("$((",!1),xt="))",jt=Pr("))",!1),Ir=function(O){return O},Nn="$(",Qi=Pr("$(",!1),ps=function(O){return O},ni="${",Dc=Pr("${",!1),mI=":-",Iv=Pr(":-",!1),Xo=function(O,J){return{name:O,defaultValue:J}},yI=":-}",Hd=Pr(":-}",!1),wv=function(O){return{name:O,defaultValue:[]}},$o=":+",jd=Pr(":+",!1),Gd=function(O,J){return{name:O,alternativeValue:J}},tf=":+}",qd=Pr(":+}",!1),gm=function(O){return{name:O,alternativeValue:[]}},mm=function(O){return{name:O}},ym="$",EI=Pr("$",!1),lh=function(O){return e.isGlobPattern(O)},ea=function(O){return O},fl=/^[a-zA-Z0-9_]/,Vd=ws([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Em=function(){return BI()},hl=/^[$@*?#a-zA-Z0-9_\-]/,Al=ws(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),II=/^[()}<>$|&; \t"']/,YA=ws(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),wI=/^[<>&; \t"']/,CI=ws(["<",">","&",";"," "," ",'"',"'"],!1,!1),KA=/^[ \t]/,zA=ws([" "," "],!1,!1),K=0,Gt=0,JA=[{line:1,column:1}],ta=0,uh=[],Dt=0,rf;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function BI(){return t.substring(Gt,K)}function Im(){return hh(Gt,K)}function Cv(O,J){throw J=J!==void 0?J:hh(Gt,K),ZA([wm(O)],t.substring(Gt,K),J)}function Wd(O,J){throw J=J!==void 0?J:hh(Gt,K),Ui(O,J)}function Pr(O,J){return{type:"literal",text:O,ignoreCase:J}}function ws(O,J,se){return{type:"class",parts:O,inverted:J,ignoreCase:se}}function fh(){return{type:"any"}}function Pc(){return{type:"end"}}function wm(O){return{type:"other",description:O}}function nf(O){var J=JA[O],se;if(J)return J;for(se=O-1;!JA[se];)se--;for(J=JA[se],J={line:J.line,column:J.column};se<O;)t.charCodeAt(se)===10?(J.line++,J.column=1):J.column++,se++;return JA[O]=J,J}function hh(O,J){var se=nf(O),Ie=nf(J);return{start:{offset:O,line:se.line,column:se.column},end:{offset:J,line:Ie.line,column:Ie.column}}}function Qt(O){K<ta||(K>ta&&(ta=K,uh=[]),uh.push(O))}function Ui(O,J){return new sy(O,null,null,J)}function ZA(O,J,se){return new sy(sy.buildMessage(O,J),O,J,se)}function xc(){var O,J,se;for(O=K,J=[],se=qt();se!==r;)J.push(se),se=qt();return J!==r?(se=Va(),se===r&&(se=null),se!==r?(Gt=O,J=n(se),O=J):(K=O,O=r)):(K=O,O=r),O}function Va(){var O,J,se,Ie,Xe;if(O=K,J=Yd(),J!==r){for(se=[],Ie=qt();Ie!==r;)se.push(Ie),Ie=qt();se!==r?(Ie=Cm(),Ie!==r?(Xe=kc(),Xe===r&&(Xe=null),Xe!==r?(Gt=O,J=l(J,Ie,Xe),O=J):(K=O,O=r)):(K=O,O=r)):(K=O,O=r)}else K=O,O=r;if(O===r)if(O=K,J=Yd(),J!==r){for(se=[],Ie=qt();Ie!==r;)se.push(Ie),Ie=qt();se!==r?(Ie=Cm(),Ie===r&&(Ie=null),Ie!==r?(Gt=O,J=f(J,Ie),O=J):(K=O,O=r)):(K=O,O=r)}else K=O,O=r;return O}function kc(){var O,J,se,Ie,Xe;for(O=K,J=[],se=qt();se!==r;)J.push(se),se=qt();if(J!==r)if(se=Va(),se!==r){for(Ie=[],Xe=qt();Xe!==r;)Ie.push(Xe),Xe=qt();Ie!==r?(Gt=O,J=h(se),O=J):(K=O,O=r)}else K=O,O=r;else K=O,O=r;return O}function Cm(){var O;return t.charCodeAt(K)===59?(O=A,K++):(O=r,Dt===0&&Qt(m)),O===r&&(t.charCodeAt(K)===38?(O=w,K++):(O=r,Dt===0&&Qt(v))),O}function Yd(){var O,J,se;return O=K,J=XA(),J!==r?(se=Bm(),se===r&&(se=null),se!==r?(Gt=O,J=D(J,se),O=J):(K=O,O=r)):(K=O,O=r),O}function Bm(){var O,J,se,Ie,Xe,It,Nr;for(O=K,J=[],se=qt();se!==r;)J.push(se),se=qt();if(J!==r)if(se=vI(),se!==r){for(Ie=[],Xe=qt();Xe!==r;)Ie.push(Xe),Xe=qt();if(Ie!==r)if(Xe=Yd(),Xe!==r){for(It=[],Nr=qt();Nr!==r;)It.push(Nr),Nr=qt();It!==r?(Gt=O,J=I(se,Xe),O=J):(K=O,O=r)}else K=O,O=r;else K=O,O=r}else K=O,O=r;else K=O,O=r;return O}function vI(){var O;return t.substr(K,2)===R?(O=R,K+=2):(O=r,Dt===0&&Qt(N)),O===r&&(t.substr(K,2)===U?(O=U,K+=2):(O=r,Dt===0&&Qt(V))),O}function XA(){var O,J,se;return O=K,J=Ah(),J!==r?(se=vm(),se===r&&(se=null),se!==r?(Gt=O,J=ee(J,se),O=J):(K=O,O=r)):(K=O,O=r),O}function vm(){var O,J,se,Ie,Xe,It,Nr;for(O=K,J=[],se=qt();se!==r;)J.push(se),se=qt();if(J!==r)Line truncated
`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),j$e=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(tle,([t,e])=>[t,`"$'${e}'"`])]),rle=t=>tle.get(t)??`\\x${t.charCodeAt(0).toString(16).padStart(2,"0")}`,G$e=t=>j$e.get(t)??`"$'${rle(t)}'"`});var sle=H((uqt,ile)=>{"use strict";function q$e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ay(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ay)}q$e(ay,Error);ay.buildMessage=function(t,e){var r={literal:function(A){return'"'+a(A.text)+'"'},class:function(A){var m="",w;for(w=0;w<A.parts.length;w++)m+=A.parts[w]instanceof Array?n(A.parts[w][0])+"-"+n(A.parts[w][1]):n(A.parts[w]);return"["+(A.inverted?"^":"")+m+"]"},any:function(A){return"any character"},end:function(A){return"end of input"},other:function(A){return A.description}};function s(A){return A.charCodeAt(0).toString(16).toUpperCase()}function a(A){return A.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(m){return"\\x0"+s(m)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(m){return"\\x"+s(m)})}function n(A){return A.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(m){return"\\x0"+s(m)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(m){return"\\x"+s(m)})}function l(A){return r[A.type](A)}function f(A){var m=new Array(A.length),w,v;for(w=0;w<A.length;w++)m[w]=l(A[w]);if(m.sort(),m.length>0){for(w=1,v=1;w<m.length;w++)m[w-1]!==m[w]&&(m[v]=m[w],v++);m.length=v}switch(m.length){case 1:return m[0];case 2:return m[0]+" or "+m[1];default:return m.slice(0,-1).join(", ")+", or "+m[m.length-1]}}function h(A){return A?'"'+a(A)+'"':"end of input"}return"Expected "+f(t)+" but "+h(e)+" found."};function V$e(t,e){e=e!==void 0?e:{};var r={},s={resolution:Fe},a=Fe,n="/",l=Ce("/",!1),f=function(Me,x){return{from:Me,descriptor:x}},h=function(Me){return{descriptor:Me}},A="@",m=Ce("@",!1),w=function(Me,x){return{fullName:Me,description:x}},v=function(Me){return{fullName:Me}},D=function(){return xe()},I=/^[^\/@]/,R=Ee(["/","@"],!0,!1),N=/^[^\/]/,U=Ee(["/"],!0,!1),V=0,ee=0,te=[{line:1,column:1}],ie=0,ae=[],ge=0,de;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function xe(){return t.substring(ee,V)}function we(){return ot(ee,V)}function d(Me,x){throw x=x!==void 0?x:ot(ee,V),Ne([De(Me)],t.substring(ee,V),x)}function be(Me,x){throw x=x!==void 0?x:ot(ee,V),rt(Me,x)}function Ce(Me,x){return{type:"literal",text:Me,ignoreCase:x}}function Ee(Me,x,C){return{type:"class",parts:Me,inverted:x,ignoreCase:C}}function he(){return{type:"any"}}function $(){return{type:"end"}}function De(Me){return{type:"other",description:Me}}function Te(Me){var x=te[Me],C;if(x)return x;for(C=Me-1;!te[C];)C--;for(x=te[C],x={line:x.line,column:x.column};C<Me;)t.charCodeAt(C)===10?(x.line++,x.column=1):x.column++,C++;return te[Me]=x,x}function ot(Me,x){var C=Te(Me),P=Te(x);return{start:{offset:Me,line:C.line,column:C.column},end:{offset:x,line:P.line,column:P.column}}}function j(Me){V<ie||(V>ie&&(ie=V,ae=[]),ae.push(Me))}function rt(Me,x){return new ay(Me,null,null,x)}function Ne(Me,x,C){return new ay(ay.buildMessage(Me,x),Me,x,C)}function Fe(){var Me,x,C,P;return Me=V,x=Pe(),x!==r?(t.charCodeAt(V)===47?(C=n,V++):(C=r,ge===0&&j(l)),C!==r?(P=Pe(),P!==r?(ee=Me,x=f(x,P),Me=x):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r),Me===r&&(Me=V,x=Pe(),x!==r&&(ee=Me,x=h(x)),Me=x),Me}function Pe(){var Me,x,C,P;return Me=V,x=He(),x!==r?(t.charCodeAt(V)===64?(C=A,V++):(C=r,ge===0&&j(m)),C!==r?(P=ft(),P!==r?(ee=Me,x=w(x,P),Me=x):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r),Me===r&&(Me=V,x=He(),x!==r&&(ee=Me,x=v(x)),Me=x),Me}function He(){var Me,x,C,P,E;return Me=V,t.charCodeAt(V)===64?(x=A,V++):(x=r,ge===0&&j(m)),x!==r?(C=Qe(),C!==r?(t.charCodeAt(V)===47?(P=n,V++):(P=r,ge===0&&j(l)),P!==r?(E=Qe(),E!==r?(ee=Me,x=D(),Me=x):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r),Me===r&&(Me=V,x=Qe(),x!==r&&(ee=Me,x=D()),Me=x),Me}function Qe(){var Me,x,C;if(Me=V,x=[],I.test(t.charAt(V))?(C=t.charAt(V),V++):(C=r,ge===0&&j(R)),C!==r)for(;C!==r;)x.push(C),I.test(t.charAt(V))?(C=t.charAt(V),V++):(C=r,ge===0&&j(R));else x=r;return x!==r&&(ee=Me,x=D()),Me=x,Me}function ft(){var Me,x,C;if(Me=V,x=[],N.test(t.charAt(V))?(C=t.charAt(V),V++):(C=r,ge===0&&j(U)),C!==r)for(;C!==r;)x.push(C),N.test(t.charAt(V))?(C=t.charAt(V),V++):(C=r,ge===0&&j(U));else x=r;return x!==r&&(ee=Me,x=D()),Me=x,Me}if(de=a(),de!==r&&V===t.length)return de;throw de!==r&&V<t.length&&j($()),Ne(ae,ie<t.length?t.charAt(ie):null,ie<t.length?ot(ie,ie+1):ot(ie,ie))}ile.exports={SyntaxError:ay,parse:V$e}});function kT(t){let e=t.match(/^\*{1,Line truncated
`+r.mark.snippet),n+" "+a):n}function e(r,s){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=s,this.message=t(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e.prototype.toString=function(s){return this.name+": "+t(this,s)},j6=e,j6}function Y$e(){if(ule)return G6;ule=1;let t=uS();function e(a,n,l,f,h){let A="",m="",w=Math.floor(h/2)-1;return f-n>w&&(A=" ... ",n=f-w+A.length),l-f>w&&(m=" ...",l=f+w-m.length),{str:A+a.slice(n,l).replace(/\t/g,"\u2192")+m,pos:f-n+A.length}}function r(a,n){return t.repeat(" ",n-a.length)+a}function s(a,n){if(n=Object.create(n||null),!a.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);let l=/\r?\n|\r|\0/g,f=[0],h=[],A,m=-1;for(;A=l.exec(a.buffer);)h.push(A.index),f.push(A.index+A[0].length),a.position<=A.index&&m<0&&(m=f.length-2);m<0&&(m=f.length-1);let w="",v=Math.min(a.line+n.linesAfter,h.length).toString().length,D=n.maxLength-(n.indent+v+3);for(let R=1;R<=n.linesBefore&&!(m-R<0);R++){let N=e(a.buffer,f[m-R],h[m-R],a.position-(f[m]-f[m-R]),D);w=t.repeat(" ",n.indent)+r((a.line-R+1).toString(),v)+" | "+N.str+`
`+w}let I=e(a.buffer,f[m],h[m],a.position,D);w+=t.repeat(" ",n.indent)+r((a.line+1).toString(),v)+" | "+I.str+`
`,w+=t.repeat("-",n.indent+v+3+I.pos)+`^
`;for(let R=1;R<=n.linesAfter&&!(m+R>=h.length);R++){let N=e(a.buffer,f[m+R],h[m+R],a.position-(f[m]-f[m+R]),D);w+=t.repeat(" ",n.indent)+r((a.line+R+1).toString(),v)+" | "+N.str+`
`}return w.replace(/\n$/,"")}return G6=s,G6}function Za(){if(fle)return q6;fle=1;let t=fS(),e=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],r=["scalar","sequence","mapping"];function s(n){let l={};return n!==null&&Object.keys(n).forEach(function(f){n[f].forEach(function(h){l[String(h)]=f})}),l}function a(n,l){if(l=l||{},Object.keys(l).forEach(function(f){if(e.indexOf(f)===-1)throw new t('Unknown option "'+f+'" is met in definition of "'+n+'" YAML type.')}),this.options=l,this.tag=n,this.kind=l.kind||null,this.resolve=l.resolve||function(){return!0},this.construct=l.construct||function(f){return f},this.instanceOf=l.instanceOf||null,this.predicate=l.predicate||null,this.represent=l.represent||null,this.representName=l.representName||null,this.defaultStyle=l.defaultStyle||null,this.multi=l.multi||!1,this.styleAliases=s(l.styleAliases||null),r.indexOf(this.kind)===-1)throw new t('Unknown kind "'+this.kind+'" is specified for "'+n+'" YAML type.')}return q6=a,q6}function Qle(){if(hle)return V6;hle=1;let t=fS(),e=Za();function r(n,l){let f=[];return n[l].forEach(function(h){let A=f.length;f.forEach(function(m,w){m.tag===h.tag&&m.kind===h.kind&&m.multi===h.multi&&(A=w)}),f[A]=h}),f}function s(){let n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function l(f){f.multi?(n.multi[f.kind].push(f),n.multi.fallback.push(f)):n[f.kind][f.tag]=n.fallback[f.tag]=f}for(let f=0,h=arguments.length;f<h;f+=1)arguments[f].forEach(l);return n}function a(n){return this.extend(n)}return a.prototype.extend=function(l){let f=[],h=[];if(l instanceof e)h.push(l);else if(Array.isArray(l))h=h.concat(l);else if(l&&(Array.isArray(l.implicit)||Array.isArray(l.explicit)))l.implicit&&(f=f.concat(l.implicit)),l.explicit&&(h=h.concat(l.explicit));else throw new t("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");f.forEach(function(m){if(!(m instanceof e))throw new t("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(m.loadKind&&m.loadKind!=="scalar")throw new t("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(m.multi)throw new t("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),h.forEach(function(m){if(!(m instanceof e))throw new t("Specified list of YAML types (or a single Type object) contains a non-Type object.")});let A=Object.create(a.prototype);return A.implicit=(this.implicit||[]).concat(f),A.explicit=(this.explicit||[]).concat(h),A.compiledImplicit=r(A,"implicit"),A.compiledExplicit=r(A,"explicit"),A.compiledTypeMap=s(A.compiledImplicit,A.compiledExplicit),A},V6=a,V6}function Fle(){if(Ale)return W6;Ale=1;let t=Za();return W6=new t("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),W6}function Nle(){if(ple)return Y6;ple=1;let t=Za();return Y6=new t("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),Y6}function Ole(){if(dle)return K6;dle=1;let t=Za();return K6=new t("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),K6}function Lle(){if(gle)return z6;gle=1;let t=Qle();return z6=new t({explicit:[Fle(),Nle(),Ole()]}),z6}function _le(){if(mle)return J6;mle=1;let t=Za();function e(a){if(a===null)return!0;let n=a.length;return n===1&&a==="~"||n===4&&(a==="null"||a==="Null"||a==="NULL")}function r(){return null}function s(a){return a===null}return J6=new t("tag:yaml.org,2002:null",{kind:"scalar",resolve:e,construct:r,predicate:s,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"}),J6}function Mle(){if(yle)return Z6;yle=1;let t=Za();function e(a){if(a===null)return!1;let n=a.length;return n===4&&(a==="true"||a==="True"||a==="TRUE")||n===5&&(a==="false"||a==="False"||a==="FALSE")}function r(a){return a==="true"||a==="True"||a==="TRUE"}function s(a){return Object.prototype.toString.call(a)==="[object Boolean]"}return Z6=new t("tag:yaml.org,2002:bool",{kind:"scalar",resolve:e,construct:r,predicate:s,represent:{lowercase:function(a){return a?"true":"false"},uppercase:function(a){return a?"TRUE":"FALSE"},camelcase:function(a){return a?"True":"False"}},defaultStyle:"lowercase"}),Z6}function Ule(){if(Ele)return X6;Ele=1;let t=uS(),e=Za();function r(A){return A>=48&&A<=57||A>=65&&A<=70||A>=97&&A<=102}function s(A){return A>=48&&A<=55}function a(A){return A>=48&&A<=57}function n(A){if(A===null)return!1;let m=A.length,w=0,v=!1;if(!m)return!1;let D=A[w];if((D==="-"||D==="+")&&(D=A[++w]),D==="0"){if(w+1===m)return!0;if(D=A[++w],D==="b"){for(w++;w<m;w++){if(D=A[w],D!=="0"&&D!=="1")return!1;v=!0}return v&&isFinite(l(A))}if(D==="x"){for(w++;w<m;w++){if(!r(A.cha Line truncated
\r`;function r(l){if(l===null)return!1;let f=0,h=l.length,A=e;for(let m=0;m<h;m++){let w=A.indexOf(l.charAt(m));if(!(w>64)){if(w<0)return!1;f+=6}}return f%8===0}function s(l){let f=l.replace(/[\r\n=]/g,""),h=f.length,A=e,m=0,w=[];for(let D=0;D<h;D++)D%4===0&&D&&(w.push(m>>16&255),w.push(m>>8&255),w.push(m&255)),m=m<<6|A.indexOf(f.charAt(D));let v=h%4*6;return v===0?(w.push(m>>16&255),w.push(m>>8&255),w.push(m&255)):v===18?(w.push(m>>10&255),w.push(m>>2&255)):v===12&&w.push(m>>4&255),new Uint8Array(w)}function a(l){let f="",h=0,A=l.length,m=e;for(let v=0;v<A;v++)v%3===0&&v&&(f+=m[h>>18&63],f+=m[h>>12&63],f+=m[h>>6&63],f+=m[h&63]),h=(h<<8)+l[v];let w=A%3;return w===0?(f+=m[h>>18&63],f+=m[h>>12&63],f+=m[h>>6&63],f+=m[h&63]):w===2?(f+=m[h>>10&63],f+=m[h>>4&63],f+=m[h<<2&63],f+=m[64]):w===1&&(f+=m[h>>2&63],f+=m[h<<4&63],f+=m[64],f+=m[64]),f}function n(l){return Object.prototype.toString.call(l)==="[object Uint8Array]"}return iH=new t("tag:yaml.org,2002:binary",{kind:"scalar",resolve:r,construct:s,predicate:n,represent:a}),iH}function Yle(){if(ble)return sH;ble=1;let t=Za(),e=Object.prototype.hasOwnProperty,r=Object.prototype.toString;function s(n){if(n===null)return!0;let l=[],f=n;for(let h=0,A=f.length;h<A;h+=1){let m=f[h],w=!1;if(r.call(m)!=="[object Object]")return!1;let v;for(v in m)if(e.call(m,v))if(!w)w=!0;else return!1;if(!w)return!1;if(l.indexOf(v)===-1)l.push(v);else return!1}return!0}function a(n){return n!==null?n:[]}return sH=new t("tag:yaml.org,2002:omap",{kind:"sequence",resolve:s,construct:a}),sH}function Kle(){if(Dle)return oH;Dle=1;let t=Za(),e=Object.prototype.toString;function r(a){if(a===null)return!0;let n=a,l=new Array(n.length);for(let f=0,h=n.length;f<h;f+=1){let A=n[f];if(e.call(A)!=="[object Object]")return!1;let m=Object.keys(A);if(m.length!==1)return!1;l[f]=[m[0],A[m[0]]]}return!0}function s(a){if(a===null)return[];let n=a,l=new Array(n.length);for(let f=0,h=n.length;f<h;f+=1){let A=n[f],m=Object.keys(A);l[f]=[m[0],A[m[0]]]}return l}return oH=new t("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:r,construct:s}),oH}function zle(){if(Ple)return aH;Ple=1;let t=Za(),e=Object.prototype.hasOwnProperty;function r(a){if(a===null)return!0;let n=a;for(let l in n)if(e.call(n,l)&&n[l]!==null)return!1;return!0}function s(a){return a!==null?a:{}}return aH=new t("tag:yaml.org,2002:set",{kind:"mapping",resolve:r,construct:s}),aH}function uH(){return xle||(xle=1,cH=Gle().extend({implicit:[qle(),Vle()],explicit:[Wle(),Yle(),Kle(),zle()]})),cH}function K$e(){if(kle)return TT;kle=1;let t=uS(),e=fS(),r=Y$e(),s=uH(),a=Object.prototype.hasOwnProperty,n=1,l=2,f=3,h=4,A=1,m=2,w=3,v=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,D=/[\x85\u2028\u2029]/,I=/[,\[\]{}]/,R=/^(?:!|!!|![0-9A-Za-z-]+!)$/,N=/^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i;function U(_){return Object.prototype.toString.call(_)}function V(_){return _===10||_===13}function ee(_){return _===9||_===32}function te(_){return _===9||_===32||_===10||_===13}function ie(_){return _===44||_===91||_===93||_===123||_===125}function ae(_){if(_>=48&&_<=57)return _-48;let Ue=_|32;return Ue>=97&&Ue<=102?Ue-97+10:-1}function ge(_){return _===120?2:_===117?4:_===85?8:0}function de(_){return _>=48&&_<=57?_-48:-1}function xe(_){switch(_){case 48:return"\0";case 97:return"\x07";case 98:return"\b";case 116:return" ";case 9:return" ";case 110:return`
`;case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"\x1B";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"\x85";case 95:return"\xA0";case 76:return"\u2028";case 80:return"\u2029";default:return""}}function we(_){return _<=65535?String.fromCharCode(_):String.fromCharCode((_-65536>>10)+55296,(_-65536&1023)+56320)}function d(_,Ue,lt){Ue==="__proto__"?Object.defineProperty(_,Ue,{configurable:!0,enumerable:!0,writable:!0,value:lt}):_[Ue]=lt}let be=new Array(256),Ce=new Array(256);for(let _=0;_<256;_++)be[_]=xe(_)?1:0,Ce[_]=xe(_);function Ee(_,Ue){this.input=_,this.filename=Ue.filename||null,this.schema=Ue.schema||s,this.onWarning=Ue.onWarning||null,this.legacy=Ue.legacy||!1,this.json=Ue.json||!1,this.listener=Ue.listener||null,this.maxDepth=typeof Ue.maxDepth=="number"?Ue.maxDepth:100,this.maxTotalMergeKeys=typeof Ue.maxTotalMergeKeys=="number"?Ue.maxTotalMergeKeys:1e4,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=_.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.depth=0,this.totalMergeKeys=0,this.firstTabInLine=-1,this.documents=[],this.anchorMapTransactions=[]}function he(_,Ue){let lt={name:_.filename,buffer:_.input.slice(0,-1),position:_.position,line:_.line,column:_.position-_.lineStart};return lt.snippet=r(lt),new e(Ue,lt)}function $(_,Ue){throw he(_,Ue)}function De(_,Ue){_.onWarning&&_.onWarning.call(null,he(_,Ue))}function Te(_,Ue,lt){let Bt=_.anchorMapTransactions;if(Bt.length!==0){let ct=Bt[Bt.length-1];a.call(ct,Ue)||(ct[Ue]={existed:a.call(_.anchorMap,Ue),value:_.anchorMap[Ue]})}_.anchorMap[Ue]=lt}function ot(_){_.anchorMapTransactions.push(Object.create(null))}function j(_){let Ue=_.anchorMapTransactions.pop(),lt=_.anchorMapTransactions;if(lt.length===0)return;let Bt=lt[lt.length-1],ct=Object.keys(Ue);for(let Ft=0,le=ct.length;Ft<le;Ft+=1){let Ze=ct[Ft];a.call(Bt,Ze)||(Bt[Ze]=Ue[Ze])}}function rt(_){let Ue=_.anchorMapTransactions.pop(),lt=Object.keys(Ue);for(let Bt=lt.length-1;Bt>=0;Bt-=1){let ct=Ue[lt[Bt]];ct.existed?_.anchorMap[lt[Bt]]=ct.value:delete _.anchorMap[lt[Bt]]}}function Ne(_){return{position:_.position,line:_.line,lineStart:_.lineStart,lineIndent:_.lineIndent,firstTabInLine:_.firstTabInLine,tag:_.tag,anchor:_.anchor,kind:_.kind,result:_.result}}function Fe(_,Ue){_.position=Ue.position,_.line=Ue.line,_.lineStart=Ue.lineStart,_.lineIndent=Ue.lineIndent,_.firstTabInLine=Ue.firstTabInLine,_.tag=Ue.tag,_.anchor=Ue.anchor,_.kind=Ue.kind,_.result=Ue.result}let Pe={YAML:function(Ue,lt,Bt){Ue.version!==null&&$(Ue,"duplication of %YAML directive"),Bt.length!==1&&$(Ue,"YAML directive accepts exactly one argument");let ct=/^([0-9]+)\.([0-9]+)$/.exec(Bt[0]);ct===null&&$(Ue,"ill-formed argument of the YAML directive");let Ft=parseInt(ct[1],10),le=parseInt(ct[2],10);Ft!==1&&$(Ue,"unacceptable YAML version of the document"),Ue.version=Bt[0],Ue.checkLineBreaks=le<2,le!==1&&le!==2&&De(Ue,"unsupported YAML version of the document")},TAG:function(Ue,lt,Bt){let ct;Bt.length!==2&&$(Ue,"TAG directive accepts exactly two arguments");let Ft=Bt[0];ct=Bt[1],R.test(Ft)||$(Ue,"ill-formed tag handle (first argument) of the TAG directive"),a.call(Ue.tagMap,Ft)&&$(Ue,'there is a previously declared suffix for "'+Ft+'" tag handle'),N.test(ct)||$(Ue,"ill-formed tag prefix (second argument) of the TAG directive");try{ct=decodeURIComponent(ct)}catch{$(Ue,"tag prefix is malformed: "+ct)}Ue.tagMap[Ft]=ct}};function He(_,Ue,lt,Bt){if(Ue<lt){let ct=_.input.slice(Ue,lt);if(Bt)for(let Ft=0,le=ct.length;Ft<le;Ft+=1){let Ze=ct.charCodeAt(Ft);Ze===9||Ze>=32&&Ze<=1114111||$(_,"expected valid JSON character")}else v.test(ct)&&$(_,"the stream contains non-printable characters");_.result+=ct}}function Qe(_,Ue,lt,Bt){t.isObject(lt)||$(_,"cannot merge mappings; the provided source object is unacceptable");let ct=Object.keys(lt);for(let Ft=0,le=ct.length;Ft<le;Ft+=1){let Ze=ct[Ft];_.maxTotalMergeKeys!==-1&&++_.totalMergeKeys>_.maxTotalMergeKeys&&$(_,"merge keys exceeded maxTotalMergeKeys ("+_.maxTotalMergeKeys+")"),a.call(Ue,Ze)||(d(Ue,Ze,lt[Ze]),Bt[Ze]=!0)}}function ft(_,Ue,lt,Bt,ct,Ft,le,Ze,Tt){if(Array.isArray(ct)){ct=Array.prototype.slice.call(ct);for(let Et=0,Pt=ct.length;Et<Pt;Et+=1)Array.isArray(ct[Et])&&$(_,"nested arrays are not supported inside keys"),typeof ct=="object"&&U(ct[Et])==="[object Object]"&&(ct[Et]="[object Object]")}if(typeof ct=="object"&&U(ct)==="[object Object]"&&(ct="[object Object]"),ct=String(ct),Ue===null&&(Ue={}),Bt==="tag:yaml.org,2002:merge")if(Array.isArray(Ft))for(let Et=0,Pt=Ft.length;Et<Pt;Et+=1)Qe(_,Ue,Ft[Et],lt);else Qe(_,Ue,Ft,lt);else!_.json&&!a.call(lt,ct)&&a.call(Ue,ct)&&(_.line=le||_.line,_.lineStart=Ze||_.lineStart,_.position=Tt||_.position,$(_,"duplicated mapping key")),d(Ue,ct,Ft),delete lt[ct];return Ue}function Me(_){let Ue=_.input.charCodeAt(_.position);Ue===10?_.position++:Ue===13?(_.position++,_.input.charCodeAt(_.position)===10&&_.position+ Line truncated
`,Ue-1))}function E(_,Ue,lt){let Bt,ct,Ft,le,Ze,Tt,Et=_.kind,Pt=_.result,Lt=_.input.charCodeAt(_.position);if(te(Lt)||ie(Lt)||Lt===35||Lt===38||Lt===42||Lt===33||Lt===124||Lt===62||Lt===39||Lt===34||Lt===37||Lt===64||Lt===96)return!1;if(Lt===63||Lt===45){let Nt=_.input.charCodeAt(_.position+1);if(te(Nt)||lt&&ie(Nt))return!1}for(_.kind="scalar",_.result="",Bt=ct=_.position,Ft=!1;Lt!==0;){if(Lt===58){let Nt=_.input.charCodeAt(_.position+1);if(te(Nt)||lt&&ie(Nt))break}else if(Lt===35){let Nt=_.input.charCodeAt(_.position-1);if(te(Nt))break}else{if(_.position===_.lineStart&&C(_)||lt&&ie(Lt))break;if(V(Lt))if(le=_.line,Ze=_.lineStart,Tt=_.lineIndent,x(_,!1,-1),_.lineIndent>=Ue){Ft=!0,Lt=_.input.charCodeAt(_.position);continue}else{_.position=ct,_.line=le,_.lineStart=Ze,_.lineIndent=Tt;break}}Ft&&(He(_,Bt,ct,!1),P(_,_.line-le),Bt=ct=_.position,Ft=!1),ee(Lt)||(ct=_.position+1),Lt=_.input.charCodeAt(++_.position)}return He(_,Bt,ct,!1),_.result?!0:(_.kind=Et,_.result=Pt,!1)}function F(_,Ue){let lt,Bt,ct=_.input.charCodeAt(_.position);if(ct!==39)return!1;for(_.kind="scalar",_.result="",_.position++,lt=Bt=_.position;(ct=_.input.charCodeAt(_.position))!==0;)if(ct===39)if(He(_,lt,_.position,!0),ct=_.input.charCodeAt(++_.position),ct===39)lt=_.position,_.position++,Bt=_.position;else return!0;else V(ct)?(He(_,lt,Bt,!0),P(_,x(_,!1,Ue)),lt=Bt=_.position):_.position===_.lineStart&&C(_)?$(_,"unexpected end of the document within a single quoted scalar"):(_.position++,ee(ct)||(Bt=_.position));$(_,"unexpected end of the stream within a single quoted scalar")}function Z(_,Ue){let lt,Bt,ct,Ft=_.input.charCodeAt(_.position);if(Ft!==34)return!1;for(_.kind="scalar",_.result="",_.position++,lt=Bt=_.position;(Ft=_.input.charCodeAt(_.position))!==0;){if(Ft===34)return He(_,lt,_.position,!0),_.position++,!0;if(Ft===92){if(He(_,lt,_.position,!0),Ft=_.input.charCodeAt(++_.position),V(Ft))x(_,!1,Ue);else if(Ft<256&&be[Ft])_.result+=Ce[Ft],_.position++;else if((ct=ge(Ft))>0){let le=ct,Ze=0;for(;le>0;le--)Ft=_.input.charCodeAt(++_.position),(ct=ae(Ft))>=0?Ze=(Ze<<4)+ct:$(_,"expected hexadecimal character");_.result+=we(Ze),_.position++}else $(_,"unknown escape sequence");lt=Bt=_.position}else V(Ft)?(He(_,lt,Bt,!0),P(_,x(_,!1,Ue)),lt=Bt=_.position):_.position===_.lineStart&&C(_)?$(_,"unexpected end of the document within a double quoted scalar"):(_.position++,ee(Ft)||(Bt=_.position))}$(_,"unexpected end of the stream within a double quoted scalar")}function X(_,Ue){let lt=!0,Bt,ct,Ft,le=_.tag,Ze,Tt=_.anchor,Et,Pt,Lt,Nt,hr=Object.create(null),Xt,$t,Er,Yr=_.input.charCodeAt(_.position);if(Yr===91)Et=93,Nt=!1,Ze=[];else if(Yr===123)Et=125,Nt=!0,Ze={};else return!1;for(_.anchor!==null&&Te(_,_.anchor,Ze),Yr=_.input.charCodeAt(++_.position);Yr!==0;){if(x(_,!0,Ue),Yr=_.input.charCodeAt(_.position),Yr===Et)return _.position++,_.tag=le,_.anchor=Tt,_.kind=Nt?"mapping":"sequence",_.result=Ze,!0;if(lt?Yr===44&&$(_,"expected the node content, but found ','"):$(_,"missed comma between flow collection entries"),$t=Xt=Er=null,Pt=Lt=!1,Yr===63){let Tn=_.input.charCodeAt(_.position+1);te(Tn)&&(Pt=Lt=!0,_.position++,x(_,!0,Ue))}Bt=_.line,ct=_.lineStart,Ft=_.position,ur(_,Ue,n,!1,!0),$t=_.tag,Xt=_.result,x(_,!0,Ue),Yr=_.input.charCodeAt(_.position),(Lt||_.line===Bt)&&Yr===58&&(Pt=!0,Yr=_.input.charCodeAt(++_.position),x(_,!0,Ue),ur(_,Ue,n,!1,!0),Er=_.result),Nt?ft(_,Ze,hr,$t,Xt,Er,Bt,ct,Ft):Pt?Ze.push(ft(_,null,hr,$t,Xt,Er,Bt,ct,Ft)):Ze.push(Xt),x(_,!0,Ue),Yr=_.input.charCodeAt(_.position),Yr===44?(lt=!0,Yr=_.input.charCodeAt(++_.position)):lt=!1}$(_,"unexpected end of the stream within a flow collection")}function re(_,Ue){let lt,Bt=A,ct=!1,Ft=!1,le=Ue,Ze=0,Tt=!1,Et,Pt=_.input.charCodeAt(_.position);if(Pt===124)lt=!1;else if(Pt===62)lt=!0;else return!1;for(_.kind="scalar",_.result="";Pt!==0;)if(Pt=_.input.charCodeAt(++_.position),Pt===43||Pt===45)A===Bt?Bt=Pt===43?w:m:$(_,"repeat of a chomping mode identifier");else if((Et=de(Pt))>=0)Et===0?$(_,"bad explicit indentation width of a block scalar; it cannot be less than one"):Ft?$(_,"repeat of an indentation width identifier"):(le=Ue+Et-1,Ft=!0);else break;if(ee(Pt)){do Pt=_.input.charCodeAt(++_.position);while(ee(Pt));if(Pt===35)do Pt=_.input.charCodeAt(++_.position);while(!V(Pt)&&Pt!==0)}for(;Pt!==0;){for(Me(_),_.lineIndent=0,Pt=_.input.charCodeAt(_.position);(!Ft||_.lineIndent<le)&&Pt===32;)_.lineIndent++,Pt=_.input.charCodeAt(++_.position);if(!Ft&&_.lineIndent>le&&(le=_.lineIndent),V(Pt)){Ze++;continue}if(!Ft&&le===0&&$(_,"missing indentation for block scalar"),_.lineIndent<le){Bt===w?_.result+=t.repeat(`
`,ct?1+Ze:Ze):Bt===A&&ct&&(_.result+=`
`);break}lt?ee(Pt)?(Tt=!0,_.result+=t.repeat(`
`,ct?1+Ze:Ze)):Tt?(Tt=!1,_.result+=t.repeat(`
`,Ze+1)):Ze===0?ct&&(_.result+=" "):_.result+=t.repeat(`
`,Ze):_.result+=t.repeat(`
`,ct?1+Ze:Ze),ct=!0,Ft=!0,Ze=0;let Lt=_.position;for(;!V(Pt)&&Pt!==0;)Pt=_.input.charCodeAt(++_.position);He(_,Lt,_.position,!1)}return!0}function ce(_,Ue){let lt=_.tag,Bt=_.anchor,ct=[],Ft=!1;if(_.firstTabInLine!==-1)return!1;_.anchor!==null&&Te(_,_.anchor,ct);let le=_.input.charCodeAt(_.position);for(;le!==0&&(_.firstTabInLine!==-1&&(_.position=_.firstTabInLine,$(_,"tab characters must not be used in indentation")),le===45);){let Ze=_.input.charCodeAt(_.position+1);if(!te(Ze))break;if(Ft=!0,_.position++,x(_,!0,-1)&&_.lineIndent<=Ue){ct.push(null),le=_.input.charCodeAt(_.position);continue}let Tt=_.line;if(ur(_,Ue,f,!1,!0),ct.push(_.result),x(_,!0,-1),le=_.input.charCodeAt(_.position),(_.line===Tt||_.lineIndent>Ue)&&le!==0)$(_,"bad indentation of a sequence entry");else if(_.lineIndent<Ue)break}return Ft?(_.tag=lt,_.anchor=Bt,_.kind="sequence",_.result=ct,!0):!1}function ke(_,Ue,lt){let Bt,ct,Ft,le,Ze=_.tag,Tt=_.anchor,Et={},Pt=Object.create(null),Lt=null,Nt=null,hr=null,Xt=!1,$t=!1;if(_.firstTabInLine!==-1)return!1;_.anchor!==null&&Te(_,_.anchor,Et);let Er=_.input.charCodeAt(_.position);for(;Er!==0;){!Xt&&_.firstTabInLine!==-1&&(_.position=_.firstTabInLine,$(_,"tab characters must not be used in indentation"));let Yr=_.input.charCodeAt(_.position+1),Tn=_.line;if((Er===63||Er===58)&&te(Yr))Er===63?(Xt&&(ft(_,Et,Pt,Lt,Nt,null,ct,Ft,le),Lt=Nt=hr=null),$t=!0,Xt=!0,Bt=!0):Xt?(Xt=!1,Bt=!0):$(_,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),_.position+=1,Er=Yr;else{if(ct=_.line,Ft=_.lineStart,le=_.position,!ur(_,lt,l,!1,!0))break;if(_.line===Tn){for(Er=_.input.charCodeAt(_.position);ee(Er);)Er=_.input.charCodeAt(++_.position);if(Er===58)Er=_.input.charCodeAt(++_.position),te(Er)||$(_,"a whitespace character is expected after the key-value separator within a block mapping"),Xt&&(ft(_,Et,Pt,Lt,Nt,null,ct,Ft,le),Lt=Nt=hr=null),$t=!0,Xt=!1,Bt=!1,Lt=_.tag,Nt=_.result;else if($t)$(_,"can not read an implicit mapping pair; a colon is missed");else return _.tag=Ze,_.anchor=Tt,!0}else if($t)$(_,"can not read a block mapping entry; a multiline key may not be an implicit key");else return _.tag=Ze,_.anchor=Tt,!0}if((_.line===Tn||_.lineIndent>Ue)&&(Xt&&(ct=_.line,Ft=_.lineStart,le=_.position),ur(_,Ue,h,!0,Bt)&&(Xt?Nt=_.result:hr=_.result),Xt||(ft(_,Et,Pt,Lt,Nt,hr,ct,Ft,le),Lt=Nt=hr=null),x(_,!0,-1),Er=_.input.charCodeAt(_.position)),(_.line===Tn||_.lineIndent>Ue)&&Er!==0)$(_,"bad indentation of a mapping entry");else if(_.lineIndent<Ue)break}return Xt&&ft(_,Et,Pt,Lt,Nt,null,ct,Ft,le),$t&&(_.tag=Ze,_.anchor=Tt,_.kind="mapping",_.result=Et),$t}function Le(_){let Ue=!1,lt=!1,Bt,ct,Ft=_.input.charCodeAt(_.position);if(Ft!==33)return!1;_.tag!==null&&$(_,"duplication of a tag property"),Ft=_.input.charCodeAt(++_.position),Ft===60?(Ue=!0,Ft=_.input.charCodeAt(++_.position)):Ft===33?(lt=!0,Bt="!!",Ft=_.input.charCodeAt(++_.position)):Bt="!";let le=_.position;if(Ue){do Ft=_.input.charCodeAt(++_.position);while(Ft!==0&&Ft!==62);_.position<_.length?(ct=_.input.slice(le,_.position),Ft=_.input.charCodeAt(++_.position)):$(_,"unexpected end of the stream within a verbatim tag")}else{for(;Ft!==0&&!te(Ft);)Ft===33&&(lt?$(_,"tag suffix cannot contain exclamation marks"):(Bt=_.input.slice(le-1,_.position+1),R.test(Bt)||$(_,"named tag handle cannot contain such characters"),lt=!0,le=_.position+1)),Ft=_.input.charCodeAt(++_.position);ct=_.input.slice(le,_.position),I.test(ct)&&$(_,"tag suffix cannot contain flow indicator characters")}ct&&!N.test(ct)&&$(_,"tag name cannot contain such characters: "+ct);try{ct=decodeURIComponent(ct)}catch{$(_,"tag name is malformed: "+ct)}return Ue?_.tag=ct:a.call(_.tagMap,Bt)?_.tag=_.tagMap[Bt]+ct:Bt==="!"?_.tag="!"+ct:Bt==="!!"?_.tag="tag:yaml.org,2002:"+ct:$(_,'undeclared tag handle "'+Bt+'"'),!0}function pt(_){let Ue=_.input.charCodeAt(_.position);if(Ue!==38)return!1;_.anchor!==null&&$(_,"duplication of an anchor property"),Ue=_.input.charCodeAt(++_.position);let lt=_.position;for(;Ue!==0&&!te(Ue)&&!ie(Ue);)Ue=_.input.charCodeAt(++_.position);return _.position===lt&&$(_,"name of an anchor node must contain at least one character"),_.anchor=_.input.slice(lt,_.position),!0}function St(_){let Ue=_.input.charCodeAt(_.position);if(Ue!==42)return!1;Ue=_.input.charCodeAt(++_.position);let lt=_.position;for(;Ue!==0&&!te(Ue)&&!ie(Ue);)Ue=_.input.charCodeAt(++_.position);_.position===lt&&$(_,"name of an alias node must contain at least one character");let Bt=_.input.slice(lt,_.position);return a.call(_.anchorMap,Bt)||$(_,'unidentified alias "'+Bt+'"'),_.result=_.anchorMap[Bt],x(_,!0,-1),!0}function er(_,Ue,lt,Bt){let ct=Ne(_);return ot(_),Fe(_,Ue),_.tag=null,_.anchor=null,_.kind=null,_.result=null,ke(_,lt,Bt)&&_.kind==="mapping"?(j(_),!0):(rt(_),Fe(_,ct),!1)}function ur(_,Ue,lt,Bt,ct){let Ft,le,Ze=1,Tt=!1,Et=!1,Pt=null,Lt,Nt,hr;_.depth>=_.maxDepth&&$(_,"nesting exceeded maxDepth ("+_.maxDepth+")"),_.depth+=1,_.listener!==null&&_.listener("open",_),_.tag=null,_.anc Line truncated
`),_.charCodeAt(0)===65279&&(_=_.slice(1)));let lt=new Ee(_,Ue),Bt=_.indexOf("\0");for(Bt!==-1&&(lt.position=Bt,$(lt,"null byte is not allowed in input")),lt.input+="\0";lt.input.charCodeAt(lt.position)===32;)lt.lineIndent+=1,lt.position+=1;for(;lt.position<lt.length-1;)Ht(lt);return lt.documents}function Ur(_,Ue,lt){Ue!==null&&typeof Ue=="object"&&typeof lt>"u"&&(lt=Ue,Ue=null);let Bt=Cn(_,lt);if(typeof Ue!="function")return Bt;for(let ct=0,Ft=Bt.length;ct<Ft;ct+=1)Ue(Bt[ct])}function kr(_,Ue){let lt=Cn(_,Ue);if(lt.length!==0){if(lt.length===1)return lt[0];throw new e("expected a single document in the stream, but found more")}}return TT.loadAll=Ur,TT.load=kr,TT}function z$e(){if(Rle)return lH;Rle=1;let t=uS(),e=fS(),r=uH(),s=Object.prototype.toString,a=Object.prototype.hasOwnProperty,n=65279,l=9,f=10,h=13,A=32,m=33,w=34,v=35,D=37,I=38,R=39,N=42,U=44,V=45,ee=58,te=61,ie=62,ae=63,ge=64,de=91,xe=93,we=96,d=123,be=124,Ce=125,Ee={};Ee[0]="\\0",Ee[7]="\\a",Ee[8]="\\b",Ee[9]="\\t",Ee[10]="\\n",Ee[11]="\\v",Ee[12]="\\f",Ee[13]="\\r",Ee[27]="\\e",Ee[34]='\\"',Ee[92]="\\\\",Ee[133]="\\N",Ee[160]="\\_",Ee[8232]="\\L",Ee[8233]="\\P";let he=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],$=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function De(le,Ze){if(Ze===null)return{};let Tt={},Et=Object.keys(Ze);for(let Pt=0,Lt=Et.length;Pt<Lt;Pt+=1){let Nt=Et[Pt],hr=String(Ze[Nt]);Nt.slice(0,2)==="!!"&&(Nt="tag:yaml.org,2002:"+Nt.slice(2));let Xt=le.compiledTypeMap.fallback[Nt];Xt&&a.call(Xt.styleAliases,hr)&&(hr=Xt.styleAliases[hr]),Tt[Nt]=hr}return Tt}function Te(le){let Ze,Tt,Et=le.toString(16).toUpperCase();if(le<=255)Ze="x",Tt=2;else if(le<=65535)Ze="u",Tt=4;else if(le<=4294967295)Ze="U",Tt=8;else throw new e("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+Ze+t.repeat("0",Tt-Et.length)+Et}let ot=1,j=2;function rt(le){this.schema=le.schema||r,this.indent=Math.max(1,le.indent||2),this.noArrayIndent=le.noArrayIndent||!1,this.skipInvalid=le.skipInvalid||!1,this.flowLevel=t.isNothing(le.flowLevel)?-1:le.flowLevel,this.styleMap=De(this.schema,le.styles||null),this.sortKeys=le.sortKeys||!1,this.lineWidth=le.lineWidth||80,this.noRefs=le.noRefs||!1,this.noCompatMode=le.noCompatMode||!1,this.condenseFlow=le.condenseFlow||!1,this.quotingType=le.quotingType==='"'?j:ot,this.forceQuotes=le.forceQuotes||!1,this.replacer=typeof le.replacer=="function"?le.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Ne(le,Ze){let Tt=t.repeat(" ",Ze),Et=0,Pt="",Lt=le.length;for(;Et<Lt;){let Nt,hr=le.indexOf(`
`,Et);hr===-1?(Nt=le.slice(Et),Et=Lt):(Nt=le.slice(Et,hr+1),Et=hr+1),Nt.length&&Nt!==`
`&&(Pt+=Tt),Pt+=Nt}return Pt}function Fe(le,Ze){return`
`+t.repeat(" ",le.indent*Ze)}function Pe(le,Ze){for(let Tt=0,Et=le.implicitTypes.length;Tt<Et;Tt+=1)if(le.implicitTypes[Tt].resolve(Ze))return!0;return!1}function He(le){return le===A||le===l}function Qe(le){return le>=32&&le<=126||le>=161&&le<=55295&&le!==8232&&le!==8233||le>=57344&&le<=65533&&le!==n||le>=65536&&le<=1114111}function ft(le){return Qe(le)&&le!==n&&le!==h&&le!==f}function Me(le,Ze,Tt){let Et=ft(le),Pt=Et&&!He(le);return(Tt?Et:Et&&le!==U&&le!==de&&le!==xe&&le!==d&&le!==Ce)&&le!==v&&!(Ze===ee&&!Pt)||ft(Ze)&&!He(Ze)&&le===v||Ze===ee&&Pt}function x(le){return Qe(le)&&le!==n&&!He(le)&&le!==V&&le!==ae&&le!==ee&&le!==U&&le!==de&&le!==xe&&le!==d&&le!==Ce&&le!==v&&le!==I&&le!==N&&le!==m&&le!==be&&le!==te&&le!==ie&&le!==R&&le!==w&&le!==D&&le!==ge&&le!==we}function C(le){return!He(le)&&le!==ee}function P(le,Ze){let Tt=le.charCodeAt(Ze),Et;return Tt>=55296&&Tt<=56319&&Ze+1<le.length&&(Et=le.charCodeAt(Ze+1),Et>=56320&&Et<=57343)?(Tt-55296)*1024+Et-56320+65536:Tt}function E(le){return/^\n* /.test(le)}let F=1,Z=2,X=3,re=4,ce=5;function ke(le,Ze,Tt,Et,Pt,Lt,Nt,hr){let Xt,$t=0,Er=null,Yr=!1,Tn=!1,yc=Et!==-1,Ro=-1,La=x(P(le,0))&&C(P(le,le.length-1));if(Ze||Nt)for(Xt=0;Xt<le.length;$t>=65536?Xt+=2:Xt++){if($t=P(le,Xt),!Qe($t))return ce;La=La&&Me($t,Er,hr),Er=$t}else{for(Xt=0;Xt<le.length;$t>=65536?Xt+=2:Xt++){if($t=P(le,Xt),$t===f)Yr=!0,yc&&(Tn=Tn||Xt-Ro-1>Et&&le[Ro+1]!==" ",Ro=Xt);else if(!Qe($t))return ce;La=La&&Me($t,Er,hr),Er=$t}Tn=Tn||yc&&Xt-Ro-1>Et&&le[Ro+1]!==" "}return!Yr&&!Tn?La&&!Nt&&!Pt(le)?F:Lt===j?ce:Z:Tt>9&&E(le)?ce:Nt?Lt===j?ce:Z:Tn?re:X}function Le(le,Ze,Tt,Et,Pt){le.dump=function(){if(Ze.length===0)return le.quotingType===j?'""':"''";if(!le.noCompatMode&&(he.indexOf(Ze)!==-1||$.test(Ze)))return le.quotingType===j?'"'+Ze+'"':"'"+Ze+"'";let Lt=le.indent*Math.max(1,Tt),Nt=le.lineWidth===-1?-1:Math.max(Math.min(le.lineWidth,40),le.lineWidth-Lt),hr=Et||le.flowLevel>-1&&Tt>=le.flowLevel;function Xt($t){return Pe(le,$t)}switch(ke(Ze,hr,le.indent,Nt,Xt,le.quotingType,le.forceQuotes&&!Et,Pt)){case F:return Ze;case Z:return"'"+Ze.replace(/'/g,"''")+"'";case X:return"|"+pt(Ze,le.indent)+St(Ne(Ze,Lt));case re:return">"+pt(Ze,le.indent)+St(Ne(er(Ze,Nt),Lt));case ce:return'"'+Ht(Ze)+'"';default:throw new e("impossible error: invalid scalar style")}}()}function pt(le,Ze){let Tt=E(le)?String(Ze):"",Et=le[le.length-1]===`
`,Lt=Et&&(le[le.length-2]===`
`||le===`
`)?"+":Et?"":"-";return Tt+Lt+`
`}function St(le){return le[le.length-1]===`
`?le.slice(0,-1):le}function er(le,Ze){let Tt=/(\n+)([^\n]*)/g,Et=function(){let hr=le.indexOf(`
`);return hr=hr!==-1?hr:le.length,Tt.lastIndex=hr,ur(le.slice(0,hr),Ze)}(),Pt=le[0]===`
`||le[0]===" ",Lt,Nt;for(;Nt=Tt.exec(le);){let hr=Nt[1],Xt=Nt[2];Lt=Xt[0]===" ",Et+=hr+(!Pt&&!Lt&&Xt!==""?`
`:"")+ur(Xt,Ze),Pt=Lt}return Et}function ur(le,Ze){if(le===""||le[0]===" ")return le;let Tt=/ [^ ]/g,Et,Pt=0,Lt,Nt=0,hr=0,Xt="";for(;Et=Tt.exec(le);)hr=Et.index,hr-Pt>Ze&&(Lt=Nt>Pt?Nt:hr,Xt+=`
`+le.slice(Pt,Lt),Pt=Lt+1),Nt=hr;return Xt+=`
`,le.length-Pt>Ze&&Nt>Pt?Xt+=le.slice(Pt,Nt)+`
`+le.slice(Nt+1):Xt+=le.slice(Pt),Xt.slice(1)}function Ht(le){let Ze="",Tt=0;for(let Et=0;Et<le.length;Tt>=65536?Et+=2:Et++){Tt=P(le,Et);let Pt=Ee[Tt];!Pt&&Qe(Tt)?(Ze+=le[Et],Tt>=65536&&(Ze+=le[Et+1])):Ze+=Pt||Te(Tt)}return Ze}function Cn(le,Ze,Tt){let Et="",Pt=le.tag;for(let Lt=0,Nt=Tt.length;Lt<Nt;Lt+=1){let hr=Tt[Lt];le.replacer&&(hr=le.replacer.call(Tt,String(Lt),hr)),(lt(le,Ze,hr,!1,!1)||typeof hr>"u"&&lt(le,Ze,null,!1,!1))&&(Et!==""&&(Et+=","+(le.condenseFlow?"":" ")),Et+=le.dump)}le.tag=Pt,le.dump="["+Et+"]"}function Ur(le,Ze,Tt,Et){let Pt="",Lt=le.tag;for(let Nt=0,hr=Tt.length;Nt<hr;Nt+=1){let Xt=Tt[Nt];le.replacer&&(Xt=le.replacer.call(Tt,String(Nt),Xt)),(lt(le,Ze+1,Xt,!0,!0,!1,!0)||typeof Xt>"u"&&lt(le,Ze+1,null,!0,!0,!1,!0))&&((!Et||Pt!=="")&&(Pt+=Fe(le,Ze)),le.dump&&f===le.dump.charCodeAt(0)?Pt+="-":Pt+="- ",Pt+=le.dump)}le.tag=Lt,le.dump=Pt||"[]"}function kr(le,Ze,Tt){let Et="",Pt=le.tag,Lt=Object.keys(Tt);for(let Nt=0,hr=Lt.length;Nt<hr;Nt+=1){let Xt="";Et!==""&&(Xt+=", "),le.condenseFlow&&(Xt+='"');let $t=Lt[Nt],Er=Tt[$t];le.replacer&&(Er=le.replacer.call(Tt,$t,Er)),lt(le,Ze,$t,!1,!1)&&(le.dump.length>1024&&(Xt+="? "),Xt+=le.dump+(le.condenseFlow?'"':"")+":"+(le.condenseFlow?"":" "),lt(le,Ze,Er,!1,!1)&&(Xt+=le.dump,Et+=Xt))}le.tag=Pt,le.dump="{"+Et+"}"}function _(le,Ze,Tt,Et){let Pt="",Lt=le.tag,Nt=Object.keys(Tt);if(le.sortKeys===!0)Nt.sort();else if(typeof le.sortKeys=="function")Nt.sort(le.sortKeys);else if(le.sortKeys)throw new e("sortKeys must be a boolean or a function");for(let hr=0,Xt=Nt.length;hr<Xt;hr+=1){let $t="";(!Et||Pt!=="")&&($t+=Fe(le,Ze));let Er=Nt[hr],Yr=Tt[Er];if(le.replacer&&(Yr=le.replacer.call(Tt,Er,Yr)),!lt(le,Ze+1,Er,!0,!0,!0))continue;let Tn=le.tag!==null&&le.tag!=="?"||le.dump&&le.dump.length>1024;Tn&&(le.dump&&f===le.dump.charCodeAt(0)?$t+="?":$t+="? "),$t+=le.dump,Tn&&($t+=Fe(le,Ze)),lt(le,Ze+1,Yr,!0,Tn)&&(le.dump&&f===le.dump.charCodeAt(0)?$t+=":":$t+=": ",$t+=le.dump,Pt+=$t)}le.tag=Lt,le.dump=Pt||"{}"}function Ue(le,Ze,Tt){let Et=Tt?le.explicitTypes:le.implicitTypes;for(let Pt=0,Lt=Et.length;Pt<Lt;Pt+=1){let Nt=Et[Pt];if((Nt.instanceOf||Nt.predicate)&&(!Nt.instanceOf||typeof Ze=="object"&&Ze instanceof Nt.instanceOf)&&(!Nt.predicate||Nt.predicate(Ze))){if(Tt?Nt.multi&&Nt.representName?le.tag=Nt.representName(Ze):le.tag=Nt.tag:le.tag="?",Nt.represent){let hr=le.styleMap[Nt.tag]||Nt.defaultStyle,Xt;if(s.call(Nt.represent)==="[object Function]")Xt=Nt.represent(Ze,hr);else if(a.call(Nt.represent,hr))Xt=Nt.represent[hr](Ze,hr);else throw new e("!<"+Nt.tag+'> tag resolver accepts not "'+hr+'" style');le.dump=Xt}return!0}}return!1}function lt(le,Ze,Tt,Et,Pt,Lt,Nt){le.tag=null,le.dump=Tt,Ue(le,Tt,!1)||Ue(le,Tt,!0);let hr=s.call(le.dump),Xt=Et;Et&&(Et=le.flowLevel<0||le.flowLevel>Ze);let $t=hr==="[object Object]"||hr==="[object Array]",Er,Yr;if($t&&(Er=le.duplicates.indexOf(Tt),Yr=Er!==-1),(le.tag!==null&&le.tag!=="?"||Yr||le.indent!==2&&Ze>0)&&(Pt=!1),Yr&&le.usedDuplicates[Er])le.dump="*ref_"+Er;else{if($t&&Yr&&!le.usedDuplicates[Er]&&(le.usedDuplicates[Er]=!0),hr==="[object Object]")Et&&Object.keys(le.dump).length!==0?(_(le,Ze,le.dump,Pt),Yr&&(le.dump="&ref_"+Er+le.dump)):(kr(le,Ze,le.dump),Yr&&(le.dump="&ref_"+Er+" "+le.dump));else if(hr==="[object Array]")Et&&le.dump.length!==0?(le.noArrayIndent&&!Nt&&Ze>0?Ur(le,Ze-1,le.dump,Pt):Ur(le,Ze,le.dump,Pt),Yr&&(le.dump="&ref_"+Er+le.dump)):(Cn(le,Ze,le.dump),Yr&&(le.dump="&ref_"+Er+" "+le.dump));else if(hr==="[object String]")le.tag!=="?"&&Le(le,le.dump,Ze,Lt,Xt);else{if(hr==="[object Undefined]")return!1;if(le.skipInvalid)return!1;throw new e("unacceptable kind of an object to dump "+hr)}if(le.tag!==null&&le.tag!=="?"){let Tn=encodeURI(le.tag[0]==="!"?le.tag.slice(1):le.tag).replace(/!/g,"%21");le.tag[0]==="!"?Tn="!"+Tn:Tn.slice(0,18)==="tag:yaml.org,2002:"?Tn="!!"+Tn.slice(18):Tn="!<"+Tn+">",le.dump=Tn+" "+le.dump}}return!0}function Bt(le,Ze){let Tt=[],Et=[];ct(le,Tt,Et);let Pt=Et.length;for(let Lt=0;Lt<Pt;Lt+=1)Ze.duplicates.push(Tt[Et[Lt]]);Ze.usedDuplicates=new Array(Pt)}function ct(le,Ze,Tt){if(le!==null&&typeof le=="object"){let Et=Ze.indexOf(le);if(Et!==-1)Tt.indexOf(Et)===-1&&Tt.push(Et);else if(Ze.push(le),Array.isArray(le))for(let Pt=0,Lt=le.length;Pt<Lt;Pt+=1)ct(le[Pt],Ze,Tt);else{let Pt=Object.keys(le);for(let Lt=0,Nt=Pt.length;Lt<Nt;Lt+=1)ct(le[Pt[Lt]],Ze,Tt)}}}function Ft(le,Ze){Ze=Ze||{};let Tt=new rt(Ze);Tt.noRefs||Bt(le,Tt);let Et=le;return Tt.replacer&&(Et=Tt.replacer.call({"":Et},"",Et)),lt(Tt,0,Et,!0,!0)?Tt.dump+`
`:""}return lH.dump=Ft,lH}function J$e(){if(Tle)return pa;Tle=1;let t=K$e(),e=z$e();function r(s,a){return function(){throw new Error("Function yaml."+s+" is removed in js-yaml 4. Use yaml."+a+" instead, which is now safe by default.")}}return pa.Type=Za(),pa.Schema=Qle(),pa.FAILSAFE_SCHEMA=Lle(),pa.JSON_SCHEMA=jle(),pa.CORE_SCHEMA=Gle(),pa.DEFAULT_SCHEMA=uH(),pa.load=t.load,pa.loadAll=t.loadAll,pa.dump=e.dump,pa.YAMLException=fS(),pa.types={binary:Wle(),float:Hle(),map:Ole(),null:_le(),pairs:Kle(),set:zle(),timestamp:qle(),bool:Mle(),int:Ule(),merge:Vle(),omap:Yle(),seq:Nle(),str:Fle()},pa.safeLoad=r("safeLoad","load"),pa.safeLoadAll=r("safeLoadAll","loadAll"),pa.safeDump=r("safeDump","dump"),pa}var pa,TT,S0,cle,j6,lle,G6,ule,q6,fle,V6,hle,W6,Ale,Y6,ple,K6,dle,z6,gle,J6,mle,Z6,yle,X6,Ele,$6,Ile,eH,wle,tH,Cle,rH,Ble,nH,vle,iH,Sle,sH,ble,oH,Dle,aH,Ple,cH,xle,kle,lH,Rle,Tle,Z$e,X$e,hqt,Aqt,Jle,pqt,dqt,gqt,Zle,mqt,yqt,Eqt,Iqt,wqt,Cqt,Bqt,Xle=tt(()=>{pa={},TT={},S0={};lH={};Z$e=J$e(),X$e=W$e(Z$e),{Type:hqt,Schema:Aqt,FAILSAFE_SCHEMA:Jle,JSON_SCHEMA:pqt,CORE_SCHEMA:dqt,DEFAULT_SCHEMA:gqt,load:Zle,loadAll:mqt,dump:yqt,YAMLException:Eqt,types:Iqt,safeLoad:wqt,safeLoadAll:Cqt,safeDump:Bqt}=X$e});var eue=H((Sqt,$le)=>{"use strict";function $$e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function cy(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,cy)}$$e(cy,Error);cy.buildMessage=function(t,e){var r={literal:function(A){return'"'+a(A.text)+'"'},class:function(A){var m="",w;for(w=0;w<A.parts.length;w++)m+=A.parts[w]instanceof Array?n(A.parts[w][0])+"-"+n(A.parts[w][1]):n(A.parts[w]);return"["+(A.inverted?"^":"")+m+"]"},any:function(A){return"any character"},end:function(A){return"end of input"},other:function(A){return A.description}};function s(A){return A.charCodeAt(0).toString(16).toUpperCase()}function a(A){return A.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(m){return"\\x0"+s(m)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(m){return"\\x"+s(m)})}function n(A){return A.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(m){return"\\x0"+s(m)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(m){return"\\x"+s(m)})}function l(A){return r[A.type](A)}function f(A){var m=new Array(A.length),w,v;for(w=0;w<A.length;w++)m[w]=l(A[w]);if(m.sort(),m.length>0){for(w=1,v=1;w<m.length;w++)m[w-1]!==m[w]&&(m[v]=m[w],v++);m.length=v}switch(m.length){case 1:return m[0];case 2:return m[0]+" or "+m[1];default:return m.slice(0,-1).join(", ")+", or "+m[m.length-1]}}function h(A){return A?'"'+a(A)+'"':"end of input"}return"Expected "+f(t)+" but "+h(e)+" found."};function eet(t,e){e=e!==void 0?e:{};var r={},s={Start:Yl},a=Yl,n=function(ne){return[].concat(...ne)},l="-",f=Un("-",!1),h=function(ne){return ne},A=function(ne){return Object.assign({},...ne)},m="#",w=Un("#",!1),v=$u(),D=function(){return{}},I=":",R=Un(":",!1),N=function(ne,Be){return{[ne]:Be}},U=",",V=Un(",",!1),ee=function(ne,Be){return Be},te=function(ne,Be,_e){return Object.assign({},...[ne].concat(Be).map(bt=>({[bt]:_e})))},ie=function(ne){return ne},ae=function(ne){return ne},ge=wc("correct indentation"),de=" ",xe=Un(" ",!1),we=function(ne){return ne.length===Sr*_t},d=function(ne){return ne.length===(Sr+1)*_t},be=function(){return Sr++,!0},Ce=function(){return Sr--,!0},Ee=function(){return Ha()},he=wc("pseudostring"),$=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,De=Ei(["\r",`
`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Te=/^[^\r\n\t ,\][{}:#"']/,ot=Ei(["\r",`
`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),j=function(){return Ha().replace(/^ *| *$/g,"")},rt="--",Ne=Un("--",!1),Fe=/^[a-zA-Z\/0-9]/,Pe=Ei([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),He=/^[^\r\n\t :,]/,Qe=Ei(["\r",`
`," "," ",":",","],!0,!1),ft="null",Me=Un("null",!1),x=function(){return null},C="true",P=Un("true",!1),E=function(){return!0},F="false",Z=Un("false",!1),X=function(){return!1},re=wc("string"),ce='"',ke=Un('"',!1),Le=function(){return""},pt=function(ne){return ne},St=function(ne){return ne.join("")},er=/^[^"\\\0-\x1F\x7F]/,ur=Ei(['"',"\\",["\0",""],"\x7F"],!0,!1),Ht='\\"',Cn=Un('\\"',!1),Ur=function(){return'"'},kr="\\\\",_=Un("\\\\",!1),Ue=function(){return"\\"},lt="\\/",Bt=Un("\\/",!1),ct=function(){return"/"},Ft="\\b",le=Un("\\b",!1),Ze=function(){return"\b"},Tt="\\f",Et=Un("\\f",!1),Pt=function(){return"\f"},Lt="\\n",Nt=Un("\\n",!1),hr=function(){return`
`},Xt="\\r",$t=Un("\\r",!1),Er=function(){return"\r"},Yr="\\t",Tn=Un("\\t",!1),yc=function(){return" "},Ro="\\u",La=Un("\\u",!1),HA=function(ne,Be,_e,bt){return String.fromCharCode(parseInt(`0x${ne}${Be}${_e}${bt}`))},Ma=/^[0-9a-fA-F]/,Ua=Ei([["0","9"],["a","f"],["A","F"]],!1,!1),jA=wc("blank space"),Fr=/^[ \t]/,Zo=Ei([" "," "],!1,!1),Ec=wc("white space"),Ge=/^[ \t\n\r]/,Hr=Ei([" "," ",`
`,"\r"],!1,!1),oh=`\r
`,GA=Un(`\r
`,!1),qA=`
`,Zu=Un(`
`,!1),Xu="\r",Vl=Un("\r",!1),ve=0,Jt=0,Wl=[{line:1,column:1}],as=0,To=[],Vt=0,ei;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function Ha(){return t.substring(Jt,ve)}function As(){return Bc(Jt,ve)}function cs(ne,Be){throw Be=Be!==void 0?Be:Bc(Jt,ve),ah([wc(ne)],t.substring(Jt,ve),Be)}function Ic(ne,Be){throw Be=Be!==void 0?Be:Bc(Jt,ve),vc(ne,Be)}function Un(ne,Be){return{type:"literal",text:ne,ignoreCase:Be}}function Ei(ne,Be,_e){return{type:"class",parts:ne,inverted:Be,ignoreCase:_e}}function $u(){return{type:"any"}}function Ud(){return{type:"end"}}function wc(ne){return{type:"other",description:ne}}function Cc(ne){var Be=Wl[ne],_e;if(Be)return Be;for(_e=ne-1;!Wl[_e];)_e--;for(Be=Wl[_e],Be={line:Be.line,column:Be.column};_e<ne;)t.charCodeAt(_e)===10?(Be.line++,Be.column=1):Be.column++,_e++;return Wl[ne]=Be,Be}function Bc(ne,Be){var _e=Cc(ne),bt=Cc(Be);return{start:{offset:ne,line:_e.line,column:_e.column},end:{offset:Be,line:bt.line,column:bt.column}}}function it(ne){ve<as||(ve>as&&(as=ve,To=[]),To.push(ne))}function vc(ne,Be){return new cy(ne,null,null,Be)}function ah(ne,Be,_e){return new cy(cy.buildMessage(ne,Be),ne,Be,_e)}function Yl(){var ne;return ne=VA(),ne}function Yn(){var ne,Be,_e;for(ne=ve,Be=[],_e=ja();_e!==r;)Be.push(_e),_e=ja();return Be!==r&&(Jt=ne,Be=n(Be)),ne=Be,ne}function ja(){var ne,Be,_e,bt,xt;return ne=ve,Be=ll(),Be!==r?(t.charCodeAt(ve)===45?(_e=l,ve++):(_e=r,Vt===0&&it(f)),_e!==r?(bt=ri(),bt!==r?(xt=Ga(),xt!==r?(Jt=ne,Be=h(xt),ne=Be):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r),ne}function VA(){var ne,Be,_e;for(ne=ve,Be=[],_e=WA();_e!==r;)Be.push(_e),_e=WA();return Be!==r&&(Jt=ne,Be=A(Be)),ne=Be,ne}function WA(){var ne,Be,_e,bt,xt,jt,Ir,Nn,Qi;if(ne=ve,Be=ri(),Be===r&&(Be=null),Be!==r){if(_e=ve,t.charCodeAt(ve)===35?(bt=m,ve++):(bt=r,Vt===0&&it(w)),bt!==r){if(xt=[],jt=ve,Ir=ve,Vt++,Nn=dt(),Vt--,Nn===r?Ir=void 0:(ve=Ir,Ir=r),Ir!==r?(t.length>ve?(Nn=t.charAt(ve),ve++):(Nn=r,Vt===0&&it(v)),Nn!==r?(Ir=[Ir,Nn],jt=Ir):(ve=jt,jt=r)):(ve=jt,jt=r),jt!==r)for(;jt!==r;)xt.push(jt),jt=ve,Ir=ve,Vt++,Nn=dt(),Vt--,Nn===r?Ir=void 0:(ve=Ir,Ir=r),Ir!==r?(t.length>ve?(Nn=t.charAt(ve),ve++):(Nn=r,Vt===0&&it(v)),Nn!==r?(Ir=[Ir,Nn],jt=Ir):(ve=jt,jt=r)):(ve=jt,jt=r);else xt=r;xt!==r?(bt=[bt,xt],_e=bt):(ve=_e,_e=r)}else ve=_e,_e=r;if(_e===r&&(_e=null),_e!==r){if(bt=[],xt=et(),xt!==r)for(;xt!==r;)bt.push(xt),xt=et();else bt=r;bt!==r?(Jt=ne,Be=D(),ne=Be):(ve=ne,ne=r)}else ve=ne,ne=r}else ve=ne,ne=r;if(ne===r&&(ne=ve,Be=ll(),Be!==r?(_e=Sc(),_e!==r?(bt=ri(),bt===r&&(bt=null),bt!==r?(t.charCodeAt(ve)===58?(xt=I,ve++):(xt=r,Vt===0&&it(R)),xt!==r?(jt=ri(),jt===r&&(jt=null),jt!==r?(Ir=Ga(),Ir!==r?(Jt=ne,Be=N(_e,Ir),ne=Be):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r),ne===r&&(ne=ve,Be=ll(),Be!==r?(_e=ks(),_e!==r?(bt=ri(),bt===r&&(bt=null),bt!==r?(t.charCodeAt(ve)===58?(xt=I,ve++):(xt=r,Vt===0&&it(R)),xt!==r?(jt=ri(),jt===r&&(jt=null),jt!==r?(Ir=Ga(),Ir!==r?(Jt=ne,Be=N(_e,Ir),ne=Be):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r),ne===r))){if(ne=ve,Be=ll(),Be!==r)if(_e=ks(),_e!==r)if(bt=ri(),bt!==r)if(xt=ef(),xt!==r){if(jt=[],Ir=et(),Ir!==r)for(;Ir!==r;)jt.push(Ir),Ir=et();else jt=r;jt!==r?(Jt=ne,Be=N(_e,xt),ne=Be):(ve=ne,ne=r)}else ve=ne,ne=r;else ve=ne,ne=r;else ve=ne,ne=r;else ve=ne,ne=r;if(ne===r)if(ne=ve,Be=ll(),Be!==r)if(_e=ks(),_e!==r){if(bt=[],xt=ve,jt=ri(),jt===r&&(jt=null),jt!==r?(t.charCodeAt(ve)===44?(Ir=U,ve++):(Ir=r,Vt===0&&it(V)),Ir!==r?(Nn=ri(),Nn===r&&(Nn=null),Nn!==r?(Qi=ks(),Qi!==r?(Jt=xt,jt=ee(_e,Qi),xt=jt):(ve=xt,xt=r)):(ve=xt,xt=r)):(ve=xt,xt=r)):(ve=xt,xt=r),xt!==r)for(;xt!==r;)bt.push(xt),xt=ve,jt=ri(),jt===r&&(jt=null),jt!==r?(t.charCodeAt(ve)===44?(Ir=U,ve++):(Ir=r,Vt===0&&it(V)),Ir!==r?(Nn=ri(),Nn===r&&(Nn=null),Nn!==r?(Qi=ks(),Qi!==r?(Jt=xt,jt=ee(_e,Qi),xt=jt):(ve=xt,xt=r)):(ve=xt,xt=r)):(ve=xt,xt=r)):(ve=xt,xt=r);else bt=r;bt!==r?(xt=ri(),xt===r&&(xt=null),xt!==r?(t.charCodeAt(ve)===58?(jt=I,ve++):(jt=r,Vt===0&&it(R)),jt!==r?(Ir=ri(),Ir===r&&(Ir=null),Ir!==r?(Nn=Ga(),Nn!==r?(Jt=ne,Be=te(_e,bt,Nn),ne=Be):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)}else ve=ne,ne=r;else ve=ne,ne=r}return ne}function Ga(){var ne,Be,_e,bt,xt,jt,Ir;if(ne=ve,Be=ve,Vt++,_e=ve,bt=dt(),bt!==r?(xt=rr(),xt!==r?(t.charCodeAt(ve)===45?(jt=l,ve++):(jt=r,Vt===0&&it(f)),jt!==r?(Ir=ri(),Ir!==r?(bt=[bt,xt,jt,Ir],_e=bt):(ve=_e,_e=r)):(ve=_e,_e=r)):(ve=_e,_e=r)):(ve=_e,_e=r),Vt--,_e!==r?(ve=Be,Be=void 0):Be=r,Be!==r?(_e=et(),_e!==r?(bt=ti(),bt!==r?(xt=Yn(),xt!==r?(jt=qa(),jt!==r?(Jt=ne,Be=ie(xt),ne=Be):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r),ne===r&&(ne=ve,Be=dt(),Be!==r?(_e=ti(),_e!==r?(bt=VA(),bt!==r?(xt=qa(),xt!==r?(Jt=ne,Be=ie(bt),ne=Be):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r)):(ve=ne,ne=r),ne===r))if(ne=ve,Be=Kl(),Be!==r){if(_e=[],bt=et(),bt!==r)for(;bt!==r;)_e.push(bt),bt=et();else _e=r;_e!==r?(Jt=ne,BeLine truncated
`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()}
`;if(typeof t=="string")return`${rue(t)}
`;if(Array.isArray(t)){if(t.length===0)return`[]
`;let s=" ".repeat(e);return`
${t.map(n=>`${s}- ${fH(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[s,a]=t instanceof QT?[t.data,!1]:[t,!0],n=" ".repeat(e),l=Object.keys(s);a&&l.sort((h,A)=>{let m=tue.indexOf(h),w=tue.indexOf(A);return m===-1&&w===-1?h<A?-1:h>A?1:0:m!==-1&&w===-1?-1:m===-1&&w!==-1?1:m-w});let f=l.filter(h=>!iue(s[h])).map((h,A)=>{let m=s[h],w=rue(h),v=fH(m,e+1,!0),D=A>0||r?n:"",I=w.length>1024?`? ${w}
${D}:`:`${w}:`,R=v.startsWith(`
`)?v:` ${v}`;return`${D}${I}${R}`}).join(e===0?`
`:"")||`
`;return r?`
${f}`:`${f}`}throw new Error(`Unsupported value type (${t})`)}function Uc(t){try{let e=fH(t,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}}function ret(t){return t.endsWith(`
`)||(t+=`
`),(0,nue.parse)(t)}function iet(t){if(net.test(t))return ret(t);let e=Zle(t,{schema:Jle,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 Fs(t){return iet(t)}var nue,tet,tue,QT,net,sue=tt(()=>{Xle();nue=st(eue()),tet=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,tue=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],QT=class{constructor(e){this.data=e}};Uc.PreserveOrdering=QT;net=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var hS={};lr(hS,{parseResolution:()=>kT,parseShell:()=>DT,parseSyml:()=>Fs,stringifyArgument:()=>U6,stringifyArgumentSegment:()=>H6,stringifyArithmeticExpression:()=>xT,stringifyCommand:()=>M6,stringifyCommandChain:()=>hw,stringifyCommandChainThen:()=>_6,stringifyCommandLine:()=>PT,stringifyCommandLineThen:()=>L6,stringifyEnvSegment:()=>bT,stringifyRedirectArgument:()=>lS,stringifyResolution:()=>RT,stringifyShell:()=>fw,stringifyShellLine:()=>fw,stringifySyml:()=>Uc,stringifyValueArgument:()=>oy});var au=tt(()=>{nle();ale();sue()});var aue=H((Rqt,hH)=>{"use strict";var set=t=>{let e=!1,r=!1,s=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+"-"+t.slice(a),e=!1,s=r,r=!0,a++):r&&s&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+"-"+t.slice(a-1),s=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,s=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},oue=(t,e)=>{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=set(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};hH.exports=oue;hH.exports.default=oue});var cue=H((Tqt,oet)=>{oet.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{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:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{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:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Re Line truncated
${this.candidates.map(({usage:a})=>`$ ${a}`).join(`
`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean:
$ ${s}
${gH(e)}`}else this.message=`Command not found; did you mean one of:
${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(`
`)}
${gH(e)}`}},OT=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives:
${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(`
`)}
${gH(e)}`}},gH=t=>`While running ${t.filter(e=>e!==Si.EndOfInput&&e!==Si.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`});function aet(t){let e=t.split(`
`),r=e.filter(a=>a.match(/\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(s).trimRight()).join(`
`)}function da(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,`
`),t=aet(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2
`),t=t.replace(/\n(\n)?\n*/g,(s,a)=>a||" "),r&&(t=t.split(/\n/).map(s=>{let a=s.match(/^\s*[*-][\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(`
`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((l,f)=>" ".repeat(n)+(f===0?"- ":" ")+l).join(`
`)}).join(`
`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(s,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(s,a,n)=>e.bold(a+n+a)),t?`${t}
`:""}var mH,hue,Aue,yH=tt(()=>{mH=Array(80).fill("\u2501");for(let t=0;t<=24;++t)mH[mH.length-t]=`\x1B[38;5;${232+t}m\u2501`;hue={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length<75?` ${mH.slice(t.length+5).join("")}`:":"}\x1B[0m`,bold:t=>`\x1B[1m${t}\x1B[22m`,error:t=>`\x1B[31m\x1B[1m${t}\x1B[22m\x1B[39m`,code:t=>`\x1B[36m${t}\x1B[39m`},Aue={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Xa(t){return{...t,[AS]:!0}}function Nh(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function _T(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,s,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=s!=="."||!e?`${s.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function pS(t,e){return e.length===1?new ht(`${t}${_T(e[0],{mergeName:!0})}`):new ht(`${t}:
${e.map(r=>`
- ${_T(r)}`).join("")}`)}function fy(t,e,r){if(typeof r>"u")return e;let s=[],a=[],n=f=>{let h=e;return e=f,n.bind(null,h)};if(!r(e,{errors:s,coercions:a,coercion:n}))throw pS(`Invalid value for ${t}`,s);for(let[,f]of a)f();return e}var AS,Pp=tt(()=>{LT();AS=Symbol("clipanion/isOption")});var ho={};lr(ho,{KeyRelationship:()=>Oh,TypeAssertionError:()=>D0,applyCascade:()=>gS,as:()=>Pet,assert:()=>vet,assertWithErrors:()=>bet,cascade:()=>P0,fn:()=>xet,hasAtLeastOneKey:()=>SH,hasExactLength:()=>yue,hasForbiddenKeys:()=>Ket,hasKeyRelationship:()=>yS,hasMaxLength:()=>Ret,hasMinLength:()=>ket,hasMutuallyExclusiveKeys:()=>zet,hasRequiredKeys:()=>Yet,hasUniqueItems:()=>Tet,isArray:()=>MT,isAtLeast:()=>BH,isAtMost:()=>Net,isBase64:()=>Get,isBoolean:()=>get,isDate:()=>yet,isDict:()=>wet,isEnum:()=>$s,isHexColor:()=>jet,isISO8601:()=>Het,isInExclusiveRange:()=>Let,isInInclusiveRange:()=>Oet,isInstanceOf:()=>Bet,isInteger:()=>vH,isJSON:()=>qet,isLiteral:()=>due,isLowerCase:()=>_et,isMap:()=>Iet,isNegative:()=>Qet,isNullable:()=>Wet,isNumber:()=>wH,isObject:()=>gue,isOneOf:()=>CH,isOptional:()=>Vet,isPartial:()=>Cet,isPayload:()=>met,isPositive:()=>Fet,isRecord:()=>HT,isSet:()=>Eet,isString:()=>_h,isTuple:()=>UT,isUUID4:()=>Uet,isUnknown:()=>IH,isUpperCase:()=>Met,makeTrait:()=>mue,makeValidator:()=>fn,matchesRegExp:()=>xp,softAssert:()=>Det});function bi(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":typeof t=="symbol"?`<${t.toString()}>`:Array.isArray(t)?"an array":JSON.stringify(t)}function pw(t,e){if(t.length===0)return"nothing";if(t.length===1)return bi(t[0]);let r=t.slice(0,-1),s=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>bi(n)).join(", ")}${a}${bi(s)}`}function b0(t,e){var r,s,a;return typeof e=="number"?`${(r=t?.p)!==null&&r!==void 0?r:"."}[${e}]`:cet.test(e)?`${(s=t?.p)!==null&&s!==void 0?s:""}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function EH(t,e,r){return t===1?e:r}function Lr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}function pet(t,e){return r=>{t[e]=r}}function Lh(t,e){return r=>{let s=t[e];return t[e]=r,Lh(t,e).bind(null,s)}}function dS(t,e,r){let s=()=>(t(r()),a),a=()=>(t(e),s);return s}function IH(){return fn({test:(t,e)=>!0})}function due(t){return fn({test:(e,r)=>e!==t?Lr(r,`Expected ${bi(t)} (got ${bi(e)})`):!0})}function _h(){return fn({test:(t,e)=>typeof t!="string"?Lr(e,`Expected a string (got ${bi(t)})`):!0})}function $s(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a=="string"||typeof a=="number"),s=new Set(e);return s.size===1?due([...s][0]):fn({test:(a,n)=>s.has(a)?!0:r?Lr(n,`Expected one of ${pw(e,"or")} (got ${bi(a)})`):Lr(n,`Expected a valid enumeration value (got ${bi(a)})`)})}function get(){return fn({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return Lr(e,"Unbound coercion result");let s=det.get(t);if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return Lr(e,`Expected a boolean (got ${bi(t)})`)}return!0}})}function wH(){return fn({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return Lr(e,"Unbound coercion result");let s;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)s=a;else return Lr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return Lr(e,`Expected a number (got ${bi(t)})`)}return!0}})}function met(t){return fn({test:(e,r)=>{var s;if(typeof r?.coercions>"u")return Lr(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return Lr(r,"Unbound coercion result");if(typeof e!="string")return Lr(r,`Expected a string (got ${bi(e)})`);let a;try{a=JSON.parse(e)}catch{return Lr(r,`Expected a JSON string (got ${bi(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Lh(n,"value")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:".",r.coercion.bind(null,n.value)]),!0):!1}})}function yet(){return fn({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return Lr(e,"Unbound coercion result");let s;if(typeof t=="string"&&pue.test(t))s=new Date(t);else{let a;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch{}typeof n=="number"&&(a=n)}else typeof t=="number"&&(a=t);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return Lr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return Lr(e,`Expected a date (got ${bi(t)})`)}return!0}})}function MT(t,{delimiter:e}={}){return fn({test:(r,s)=>{var a;let n=r;if(typeof r=="string"&&typeof e<"u"&&typeof s?.coercions<"u"){iLine truncated
`;for(let s of e)r+=`
- ${s}`}super(r)}};mS={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<"u",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Oh||(Oh={}));Jet={[Oh.Forbids]:{expect:!1,message:"forbids using"},[Oh.Requires]:{expect:!0,message:"requires using"}}});var At,x0=tt(()=>{Pp();At=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:l}=await Promise.resolve().then(()=>(ga(),ho)),f=l(a(n()),r),h=[],A=[];if(!f(this,{errors:h,coercions:A}))throw pS("Invalid option schema",h);for(let[,w]of A)w()}else if(r!=null)throw new Error("Invalid command schema");let s=await this.execute();return typeof s<"u"?s:0}};At.isOption=AS;At.Default=[]});function Hc(t){dH&&console.log(t)}function Iue(){let t={nodes:[]};for(let e=0;e<Gn.CustomNode;++e)t.nodes.push(Sl());return t}function Zet(t){let e=Iue(),r=[],s=e.nodes.length;for(let a of t){r.push(s);for(let n=0;n<a.nodes.length;++n)Cue(n)||e.nodes.push(stt(a.nodes[n],s));s+=a.nodes.length-Gn.CustomNode+1}for(let a of r)dw(e,Gn.InitialNode,a);return e}function vf(t,e){return t.nodes.push(e),t.nodes.length-1}function Xet(t){let e=new Set,r=s=>{if(e.has(s))return;e.add(s);let a=t.nodes[s];for(let l of Object.values(a.statics))for(let{to:f}of l)r(f);for(let[,{to:l}]of a.dynamics)r(l);for(let{to:l}of a.shortcuts)r(l);let n=new Set(a.shortcuts.map(({to:l})=>l));for(;a.shortcuts.length>0;){let{to:l}=a.shortcuts.shift(),f=t.nodes[l];for(let[h,A]of Object.entries(f.statics)){let m=Object.prototype.hasOwnProperty.call(a.statics,h)?a.statics[h]:a.statics[h]=[];for(let w of A)m.some(({to:v})=>w.to===v)||m.push(w)}for(let[h,A]of f.dynamics)a.dynamics.some(([m,{to:w}])=>h===m&&A.to===w)||a.dynamics.push([h,A]);for(let h of f.shortcuts)n.has(h.to)||(a.shortcuts.push(h),n.add(h.to))}};r(Gn.InitialNode)}function $et(t,{prefix:e=""}={}){if(dH){Hc(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)Hc(`${e} ${r}: ${JSON.stringify(t.nodes[r])}`)}}function ett(t,e,r=!1){Hc(`Running a vm on ${JSON.stringify(e)}`);let s=[{node:Gn.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];$et(t,{prefix:" "});let a=[Si.StartOfInput,...e];for(let n=0;n<a.length;++n){let l=a[n],f=l===Si.EndOfInput||l===Si.EndOfPartialInput,h=n-1;Hc(` Processing ${JSON.stringify(l)}`);let A=[];for(let{node:m,state:w}of s){Hc(` Current node is ${m}`);let v=t.nodes[m];if(m===Gn.ErrorNode){A.push({node:m,state:w});continue}console.assert(v.shortcuts.length===0,"Shortcuts should have been eliminated by now");let D=Object.prototype.hasOwnProperty.call(v.statics,l);if(!r||n<a.length-1||D)if(D){let I=v.statics[l];for(let{to:R,reducer:N}of I)A.push({node:R,state:typeof N<"u"?jT(DH,N,w,l,h):w}),Hc(` Static transition to ${R} found`)}else Hc(" No static transition found");else{let I=!1;for(let R of Object.keys(v.statics))if(R.startsWith(l)){if(l===R)for(let{to:N,reducer:U}of v.statics[R])A.push({node:N,state:typeof U<"u"?jT(DH,U,w,l,h):w}),Hc(` Static transition to ${N} found`);else for(let{to:N}of v.statics[R])A.push({node:N,state:{...w,remainder:R.slice(l.length)}}),Hc(` Static transition to ${N} found (partial match)`);I=!0}I||Hc(" No partial static transition found")}if(!f)for(let[I,{to:R,reducer:N}]of v.dynamics)jT(ott,I,w,l,h)&&(A.push({node:R,state:typeof N<"u"?jT(DH,N,w,l,h):w}),Hc(` Dynamic transition to ${R} found (via ${I})`))}if(A.length===0&&f&&e.length===1)return[{node:Gn.InitialNode,state:Eue}];if(A.length===0)throw new Aw(e,s.filter(({node:m})=>m!==Gn.ErrorNode).map(({state:m})=>({usage:m.candidateUsage,reason:null})));if(A.every(({node:m})=>m===Gn.ErrorNode))throw new Aw(e,A.map(({state:m})=>({usage:m.candidateUsage,reason:m.errorMessage})));s=rtt(A)}if(s.length>0){Hc(" Results:");for(let n of s)Hc(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else Hc(" No results");return s}function ttt(t,e,{endToken:r=Si.EndOfInput}={}){let s=ett(t,[...e,r]);return ntt(e,s.map(({state:a})=>a))}function rtt(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function ntt(t,e){let r=e.filter(v=>v.selectedIndex!==null),s=r.filter(v=>!v.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(v=>v.selectedIndex===uy||v.requiredOptions.every(D=>D.some(I=>v.options.find(R=>R.name===I))));if(a.length===0)throw new Aw(t,r.map(v=>({usage:v.candidateUsage,reason:null})));let n=0;for(let v of a)v.path.length>n&&(n=v.path.length);let l=a.filter(v=>v.path.length===n),f=v=>v.positionals.filter(({extra:D})=>!D).length+v.options.length,h=l.map(v=>({state:v,positionalCount:f(v)})),A=0;for(let{positionalCount:v}of h)v>A&&(A=v);let m=h.filter(({positionalCount:v})=>v===A).map(({state:v Line truncated
`),this.context.stdout.write(`
`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.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.
`)}}}});async function kue(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Tue(t);return ec.from(r,e).runExit(s,a)}async function Rue(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Tue(t);return ec.from(r,e).run(s,a)}function Tue(t){let e,r,s,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(s=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof At||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?s=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],s=t[2]):t[0]&&t[0].prototype instanceof At||Array.isArray(t[0])?(r=t[0],s=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],s=t[2],a=t[3];break}if(typeof s>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function xue(t){return t()}var Pue,ec,Que=tt(()=>{NT();qT();yH();bue();x0();Due();Pue=Symbol("clipanion/errorCommand");ec=class t{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new GT({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let s=new t(r),a=Array.isArray(e)?e:[e];for(let n of a)s.register(n);return s}register(e){var r;let s=new Map,a=new e;for(let h in a){let A=a[h];typeof A=="object"&&A!==null&&A[At.isOption]&&s.set(h,A)}let n=this.builder.command(),l=n.cliIndex,f=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let h of f)n.addPath(h);this.registrations.set(e,{specs:s,builder:n,index:l});for(let[h,{definition:A}]of s.entries())A(n,h);n.setContext({commandClass:e})}process(e,r){let{input:s,context:a,partial:n}=typeof e=="object"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:l,process:f}=this.builder.compile(),h=f(s,{partial:n}),A={...t.defaultContext,...a};switch(h.selectedIndex){case uy:{let m=WT.from(h,l);return m.context=A,m.tokens=h.tokens,m}default:{let{commandClass:m}=l[h.selectedIndex],w=this.registrations.get(m);if(typeof w>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let v=new m;v.context=A,v.tokens=h.tokens,v.path=h.path;try{for(let[D,{transformer:I}]of w.specs.entries())v[D]=I(w.builder,D,h,A);return v}catch(D){throw D[Pue]=v,D}}break}}async run(e,r){var s,a;let n,l={...t.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:l.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,l)}catch(m){return l.stdout.write(this.error(m,{colored:f})),1}if(n.help)return l.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=l,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:m=>this.definition(m),error:(m,w)=>this.error(m,w),format:m=>this.format(m),process:(m,w)=>this.process(m,{...l,...w}),run:(m,w)=>this.run(m,{...l,...w}),usage:(m,w)=>this.usage(m,w)};let h=this.enableCapture&&(a=Sue(l))!==null&&a!==void 0?a:xue,A;try{A=await h(()=>n.validateAndExecute().catch(m=>n.catch(m).then(()=>0)))}catch(m){return l.stdout.write(this.error(m,{colored:f,command:n})),1}return A}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:s}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),l=typeof e.usage.category<"u"?da(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof e.usage.description<"u"?da(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,h=typeof e.usage.details<"u"?da(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,A=typeof e.usage.examples<"u"?e.usage.examples.map(([m,w])=>[da(m,{format:this.format(r),paragraphs:!1}),w.replace(/\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:l,description:f,details:h,examples:A,options:n}}definitions({colored:e=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:e});a&&r.push(a)}return r}usage(e=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(e===null){for(let h of this.registrations.keys()){let A=h.paths,m=typeof h.usage<"u";if(!A||A.length===0||A.length===1&&A[0].length===0||((n=A?.some(D=>D.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=h;else if(m){e=null;continue}}e&&(s=!0)}let l=e!==null&&e instanceof At?e.constructor:e,f="";if(l)if(s){let{description:h="",details:A="",examples:m=[]}=l.usage||{};h!==""&&(f+=da(h,{format:this.format(r),paragraphs:!1}).replace(/^./,D=>D.toUpperCase()),f+=`
`),(A!==""||m.length>0)&&(f+=`${this.format(r).header("Usage")}
`,f+=`
`);let{usage:w,options:v}=this.getUsageByRegistration(l,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${w}
`,v.length>0){f+=`
`,f+=`${this.format(r).header("Options")}
`;let D=v.reduce((I,R)=>Math.max(I,R.definition.length),0);f+=`
`;for(let{definition:I,description:R}of v)f+=` ${this.format(r).bold(I.padEnd(D))} ${da(R,{format:this.format(r),paragraphs:!1})}`}if(A!==""&&(f+=`
`,f+=`${this.format(r).header("Details")}
`,f+=`
`,f+=da(A,{format:this.format(r),paragraphs:!0})),m.length>0){f+=`
`,f+=`${this.format(r).header("Examples")}
`;for(let[D,I]of m)f+=`
`,f+=da(D,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)}
`}}else{let{usage:h}=this.getUsageByRegistration(l);f+=`${this.format(r).bold(a)}${h}
`}else{let h=new Map;for(let[v,{index:D}]of this.registrations.entries()){if(typeof v.usage>"u")continue;let I=typeof v.usage.category<"u"?da(v.usage.category,{format:this.format(r),paragraphs:!1}):null,R=h.get(I);typeof R>"u"&&h.set(I,R=[]);let{usage:N}=this.getUsageByIndex(D);R.push({commandClass:v,usage:N})}let A=Array.from(h.keys()).sort((v,D)=>v===null?-1:D===null?1:v.localeCompare(D,"en",{usage:"sort",caseFirst:"upper"})),m=typeof this.binaryLabel<"u",w=typeof this.binaryVersion<"u";m||w?(m&&w?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}
`:m?f+=`${this.format(r).header(`${this.binaryLabel}`)}
`:f+=`${this.format(r).header(`${this.binaryVersion}`)}
`,f+=` ${this.format(r).bold(a)}${this.binaryName} <command>
`):f+=`${this.format(r).bold(a)}${this.binaryName} <command>
`;for(let v of A){let D=h.get(v).slice().sort((R,N)=>R.usage.localeCompare(N.usage,"en",{usage:"sort",caseFirst:"upper"})),I=v!==null?v.trim():"General commands";f+=`
`,f+=`${this.format(r).header(`${I}`)}
`;for(let{commandClass:R,usage:N}of D){let U=R.usage.description||"undocumented";f+=`
`,f+=` ${this.format(r).bold(N)}
`,f+=` ${da(U,{format:this.format(r),paragraphs:!1})}`}}f+=`
`,f+=da("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(r),paragraphs:!0})}return f}error(e,r){var s,{colored:a,command:n=(s=e[Pue])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!e||typeof e!="object"||!("stack"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let l="",f=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),l+=`${this.format(a).error(f)}: ${e.message}
`;let h=e.clipanion;return typeof h<"u"?h.type==="usage"&&(l+=`
`,l+=this.usage(n)):e.stack&&(l+=`${e.stack.replace(/^.*\n/,"")}
`),l}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:t.defaultContext.colorDepth>1)?hue:Aue}getUsageByRegistration(e,r){let s=this.registrations.get(e);if(typeof s>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(s.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};ec.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:vue()}});var ES,Fue=tt(()=>{x0();ES=class extends At{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}
`)}};ES.paths=[["--clipanion=definitions"]]});var IS,Nue=tt(()=>{x0();IS=class extends At{async execute(){this.context.stdout.write(this.cli.usage())}};IS.paths=[["-h"],["--help"]]});function YT(t={}){return Xa({definition(e,r){var s;e.addProxy({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){return s.positionals.map(({value:a})=>a)}})}var xH=tt(()=>{Pp()});var wS,Oue=tt(()=>{x0();xH();wS=class extends At{constructor(){super(...arguments),this.args=YT()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}
`)}};wS.paths=[["--clipanion=tokens"]]});var CS,Lue=tt(()=>{x0();CS=class extends At{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:"<unknown>"}
`)}};CS.paths=[["-v"],["--version"]]});var kH={};lr(kH,{DefinitionsCommand:()=>ES,HelpCommand:()=>IS,TokensCommand:()=>wS,VersionCommand:()=>CS});var _ue=tt(()=>{Fue();Nue();Oue();Lue()});function Mue(t,e,r){let[s,a]=Nh(e,r??{}),{arity:n=1}=a,l=t.split(","),f=new Set(l);return Xa({definition(h){h.addOption({names:l,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(h,A,m){let w,v=typeof s<"u"?[...s]:void 0;for(let{name:D,value:I}of m.options)f.has(D)&&(w=D,v=v??[],v.push(I));return typeof v<"u"?fy(w??A,v,a.validator):v}})}var Uue=tt(()=>{Pp()});function Hue(t,e,r){let[s,a]=Nh(e,r??{}),n=t.split(","),l=new Set(n);return Xa({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,h,A){let m=s;for(let{name:w,value:v}of A.options)l.has(w)&&(m=v);return m}})}var jue=tt(()=>{Pp()});function Gue(t,e,r){let[s,a]=Nh(e,r??{}),n=t.split(","),l=new Set(n);return Xa({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,h,A){let m=s;for(let{name:w,value:v}of A.options)l.has(w)&&(m??(m=0),v?m+=1:m=0);return m}})}var que=tt(()=>{Pp()});function Vue(t={}){return Xa({definition(e,r){var s;e.addRest({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){let a=l=>{let f=s.positionals[l];return f.extra===bl||f.extra===!1&&l<e.arity.leading.length},n=0;for(;n<s.positionals.length&&a(n);)n+=1;return s.positionals.splice(0,n).map(({value:l})=>l)}})}var Wue=tt(()=>{qT();Pp()});function att(t,e,r){let[s,a]=Nh(e,r??{}),{arity:n=1}=a,l=t.split(","),f=new Set(l);return Xa({definition(h){h.addOption({names:l,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(h,A,m,w){let v,D=s;typeof a.env<"u"&&w.env[a.env]&&(v=a.env,D=w.env[a.env]);for(let{name:I,value:R}of m.options)f.has(I)&&(v=I,D=R);return typeof D=="string"?fy(v??A,D,a.validator):D}})}function ctt(t={}){let{required:e=!0}=t;return Xa({definition(r,s){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:s,required:t.required})},transformer(r,s,a){var n;for(let l=0;l<a.positionals.length;++l){if(a.positionals[l].extra===bl||e&&a.positionals[l].extra===!0||!e&&a.positionals[l].extra===!1)continue;let[f]=a.positionals.splice(l,1);return fy((n=t.name)!==null&&n!==void 0?n:s,f.value,t.validator)}}})}function Yue(t,...e){return typeof t=="string"?att(t,...e):ctt(t)}var Kue=tt(()=>{qT();Pp()});var ye={};lr(ye,{Array:()=>Mue,Boolean:()=>Hue,Counter:()=>Gue,Proxy:()=>YT,Rest:()=>Vue,String:()=>Yue,applyValidator:()=>fy,cleanValidationError:()=>_T,formatError:()=>pS,isOptionSymbol:()=>AS,makeCommandOption:()=>Xa,rerouteArguments:()=>Nh});var zue=tt(()=>{Pp();xH();Uue();jue();que();Wue();Kue()});var BS={};lr(BS,{Builtins:()=>kH,Cli:()=>ec,Command:()=>At,Option:()=>ye,UsageError:()=>ht,formatMarkdownish:()=>da,run:()=>Rue,runExit:()=>kue});var sr=tt(()=>{LT();yH();x0();Que();_ue();zue()});var Jue=H((M7t,ltt)=>{ltt.exports={name:"dotenv",version:"16.3.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://github.com/motdotla/dotenv?sponsor=1",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@definitelytyped/dtslint":"^0.0.133","@types/node":"^18.11.3",decache:"^4.6.1",sinon:"^14.0.1",standard:"^17.0.0","standard-markdown":"^7.1.0","standard-version":"^9.5.0",tap:"^16.3.0",tar:"^6.1.11",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var efe=H((U7t,kp)=>{var Zue=Ae("fs"),TH=Ae("path"),utt=Ae("os"),ftt=Ae("crypto"),htt=Jue(),QH=htt.version,Att=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function ptt(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,`
`);let s;for(;(s=Att.exec(r))!=null;){let a=s[1],n=s[2]||"";n=n.trim();let l=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),l==='"'&&(n=n.replace(/\\n/g,`
`),n=n.replace(/\\r/g,"\r")),e[a]=n}return e}function dtt(t){let e=$ue(t),r=po.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let s=Xue(t).split(","),a=s.length,n;for(let l=0;l<a;l++)try{let f=s[l].trim(),h=ytt(r,f);n=po.decrypt(h.ciphertext,h.key);break}catch(f){if(l+1>=a)throw f}return po.parse(n)}function gtt(t){console.log(`[dotenv@${QH}][INFO] ${t}`)}function mtt(t){console.log(`[dotenv@${QH}][WARN] ${t}`)}function RH(t){console.log(`[dotenv@${QH}][DEBUG] ${t}`)}function Xue(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function ytt(t,e){let r;try{r=new URL(e)}catch(f){throw f.code==="ERR_INVALID_URL"?new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:[email protected]/vault/.env.vault?environment=development"):f}let s=r.password;if(!s)throw new Error("INVALID_DOTENV_KEY: Missing key part");let a=r.searchParams.get("environment");if(!a)throw new Error("INVALID_DOTENV_KEY: Missing environment part");let n=`DOTENV_VAULT_${a.toUpperCase()}`,l=t.parsed[n];if(!l)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:l,key:s}}function $ue(t){let e=TH.resolve(process.cwd(),".env");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(".vault")?e:`${e}.vault`}function Ett(t){return t[0]==="~"?TH.join(utt.homedir(),t.slice(1)):t}function Itt(t){gtt("Loading env from encrypted .env.vault");let e=po._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),po.populate(r,e,t),{parsed:e}}function wtt(t){let e=TH.resolve(process.cwd(),".env"),r="utf8",s=!!(t&&t.debug);t&&(t.path!=null&&(e=Ett(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=po.parse(Zue.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),po.populate(n,a,t),{parsed:a}}catch(a){return s&&RH(`Failed to load ${e} ${a.message}`),{error:a}}}function Ctt(t){let e=$ue(t);return Xue(t).length===0?po.configDotenv(t):Zue.existsSync(e)?po._configVault(t):(mtt(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),po.configDotenv(t))}function Btt(t,e){let r=Buffer.from(e.slice(-64),"hex"),s=Buffer.from(t,"base64"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let l=ftt.createDecipheriv("aes-256-gcm",r,a);return l.setAuthTag(n),`${l.update(s)}${l.final()}`}catch(l){let f=l instanceof RangeError,h=l.message==="Invalid key length",A=l.message==="Unsupported state or unable to authenticate data";if(f||h){let m="INVALID_DOTENV_KEY: It must be 64 characters long (or more)";throw new Error(m)}else if(A){let m="DECRYPTION_FAILED: Please check your DOTENV_KEY";throw new Error(m)}else throw console.error("Error: ",l.code),console.error("Error: ",l.message),l}}function vtt(t,e,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof e!="object")throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),s&&RH(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):t[n]=e[n]}var po={configDotenv:wtt,_configVault:Itt,_parseVault:dtt,config:Ctt,decrypt:Btt,parse:ptt,populate:vtt};kp.exports.configDotenv=po.configDotenv;kp.exports._configVault=po._configVault;kp.exports._parseVault=po._parseVault;kp.exports.config=po.config;kp.exports.decrypt=po.decrypt;kp.exports.parse=po.parse;kp.exports.populate=po.populate;kp.exports=po});var rfe=H((H7t,tfe)=>{"use strict";tfe.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var hy=H((j7t,FH)=>{"use strict";var Stt=rfe(),nfe=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,s=()=>{r--,e.length>0&&e.shift()()},a=(f,h,...A)=>{r++;let m=Stt(f,...A);h(m),m.then(s,s)},n=(f,h,...A)=>{r<t?a(f,h,...A):e.push(a.bind(null,f,h,...A))},l=(f,...h)=>new Promise(A=>n(f,A,...h));return Object.defineProperties(l,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),l};FH.exports=nfe;FH.exports.default=nfe});function Mh(t){return`YN${t.toString(10).padStart(4,"0")}`}function KT(t){let e=Number(t.slice(2));if(typeof Tr[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var Tr,zT=tt(()=>{Tr=(Ge=>(Ge[Ge.UNNAMED=0]="UNNAMED",Ge[Ge.EXCEPTION=1]="EXCEPTION",Ge[Ge.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Ge[Ge.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Ge[Ge.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Ge[Ge.BUILD_DISABLED=5]="BUILD_DISABLED",Ge[Ge.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Ge[Ge.MUST_BUILD=7]="MUST_BUILD",Ge[Ge.MUST_REBUILD=8]="MUST_REBUILD",Ge[Ge.BUILD_FAILED=9]="BUILD_FAILED",Ge[Ge.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Ge[Ge.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Ge[Ge.LINKER_NOT_FOUND=12]="LINKER_NOT_FO Line truncated
`,"\r","(",")","!","|","&","^"],!0,!1),ae=function(re){return e.queryPattern.test(re)},ge=function(re){return e.checkFn(re)},de=Qe("whitespace"),xe=/^[ \t\n\r]/,we=Fe([" "," ",`
`,"\r"],!1,!1),d=0,be=0,Ce=[{line:1,column:1}],Ee=0,he=[],$=0,De;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function Te(){return t.substring(be,d)}function ot(){return Me(be,d)}function j(re,ce){throw ce=ce!==void 0?ce:Me(be,d),P([Qe(re)],t.substring(be,d),ce)}function rt(re,ce){throw ce=ce!==void 0?ce:Me(be,d),C(re,ce)}function Ne(re,ce){return{type:"literal",text:re,ignoreCase:ce}}function Fe(re,ce,ke){return{type:"class",parts:re,inverted:ce,ignoreCase:ke}}function Pe(){return{type:"any"}}function He(){return{type:"end"}}function Qe(re){return{type:"other",description:re}}function ft(re){var ce=Ce[re],ke;if(ce)return ce;for(ke=re-1;!Ce[ke];)ke--;for(ce=Ce[ke],ce={line:ce.line,column:ce.column};ke<re;)t.charCodeAt(ke)===10?(ce.line++,ce.column=1):ce.column++,ke++;return Ce[re]=ce,ce}function Me(re,ce){var ke=ft(re),Le=ft(ce);return{start:{offset:re,line:ke.line,column:ke.column},end:{offset:ce,line:Le.line,column:Le.column}}}function x(re){d<Ee||(d>Ee&&(Ee=d,he=[]),he.push(re))}function C(re,ce){return new Ay(re,null,null,ce)}function P(re,ce,ke){return new Ay(Ay.buildMessage(re,ce),re,ce,ke)}function E(){var re,ce,ke,Le,pt,St,er,ur;if(re=d,ce=F(),ce!==r){for(ke=[],Le=d,pt=X(),pt!==r?(t.charCodeAt(d)===124?(St=n,d++):(St=r,$===0&&x(l)),St===r&&(t.charCodeAt(d)===38?(St=f,d++):(St=r,$===0&&x(h)),St===r&&(t.charCodeAt(d)===94?(St=A,d++):(St=r,$===0&&x(m)))),St!==r?(er=X(),er!==r?(ur=F(),ur!==r?(pt=[pt,St,er,ur],Le=pt):(d=Le,Le=r)):(d=Le,Le=r)):(d=Le,Le=r)):(d=Le,Le=r);Le!==r;)ke.push(Le),Le=d,pt=X(),pt!==r?(t.charCodeAt(d)===124?(St=n,d++):(St=r,$===0&&x(l)),St===r&&(t.charCodeAt(d)===38?(St=f,d++):(St=r,$===0&&x(h)),St===r&&(t.charCodeAt(d)===94?(St=A,d++):(St=r,$===0&&x(m)))),St!==r?(er=X(),er!==r?(ur=F(),ur!==r?(pt=[pt,St,er,ur],Le=pt):(d=Le,Le=r)):(d=Le,Le=r)):(d=Le,Le=r)):(d=Le,Le=r);ke!==r?(be=re,ce=w(ce,ke),re=ce):(d=re,re=r)}else d=re,re=r;return re}function F(){var re,ce,ke,Le,pt,St;return re=d,t.charCodeAt(d)===33?(ce=v,d++):(ce=r,$===0&&x(D)),ce!==r?(ke=F(),ke!==r?(be=re,ce=I(ke),re=ce):(d=re,re=r)):(d=re,re=r),re===r&&(re=d,t.charCodeAt(d)===40?(ce=R,d++):(ce=r,$===0&&x(N)),ce!==r?(ke=X(),ke!==r?(Le=E(),Le!==r?(pt=X(),pt!==r?(t.charCodeAt(d)===41?(St=U,d++):(St=r,$===0&&x(V)),St!==r?(be=re,ce=ee(Le),re=ce):(d=re,re=r)):(d=re,re=r)):(d=re,re=r)):(d=re,re=r)):(d=re,re=r),re===r&&(re=Z())),re}function Z(){var re,ce,ke,Le,pt;if(re=d,ce=X(),ce!==r){if(ke=d,Le=[],te.test(t.charAt(d))?(pt=t.charAt(d),d++):(pt=r,$===0&&x(ie)),pt!==r)for(;pt!==r;)Le.push(pt),te.test(t.charAt(d))?(pt=t.charAt(d),d++):(pt=r,$===0&&x(ie));else Le=r;Le!==r?ke=t.substring(ke,d):ke=Le,ke!==r?(be=d,Le=ae(ke),Le?Le=void 0:Le=r,Le!==r?(be=re,ce=ge(ke),re=ce):(d=re,re=r)):(d=re,re=r)}else d=re,re=r;return re}function X(){var re,ce;for($++,re=[],xe.test(t.charAt(d))?(ce=t.charAt(d),d++):(ce=r,$===0&&x(we));ce!==r;)re.push(ce),xe.test(t.charAt(d))?(ce=t.charAt(d),d++):(ce=r,$===0&&x(we));return $--,re===r&&(ce=r,$===0&&x(de)),re}if(De=a(),De!==r&&d===t.length)return De;throw De!==r&&d<t.length&&x(He()),P(he,Ee<t.length?t.charAt(Ee):null,Ee<t.length?Me(Ee,Ee+1):Me(Ee,Ee))}Khe.exports={SyntaxError:Ay,parse:Fit}});var Jhe=H(cQ=>{var{parse:Nit}=zhe();cQ.makeParser=(t=/[a-z]+/)=>(e,r)=>Nit(e,{queryPattern:t,checkFn:r});cQ.parse=cQ.makeParser()});var Xhe=H((LVt,Zhe)=>{"use strict";Zhe.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],lightgoldenrodLine truncated
`:`
`)+r,a=s+1,s=t.indexOf(`
`,a)}while(s!==-1);return n+=t.substr(a),n};dAe.exports={stringReplaceAll:Kit,stringEncaseCRLFWithFirstIndex:zit}});var wAe=H((VVt,IAe)=>{"use strict";var Jit=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,mAe=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Zit=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Xit=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,$it=new Map([["n",`
`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function EAe(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$it.get(t)||t}function est(t,e){let r=[],s=e.trim().split(/\s*,\s*/g),a;for(let n of s){let l=Number(n);if(!Number.isNaN(l))r.push(l);else if(a=n.match(Zit))r.push(a[2].replace(Xit,(f,h,A)=>h?EAe(h):A));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function tst(t){mAe.lastIndex=0;let e=[],r;for(;(r=mAe.exec(t))!==null;){let s=r[1];if(r[2]){let a=est(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function yAe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}IAe.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(Jit,(n,l,f,h,A,m)=>{if(l)a.push(EAe(l));else if(h){let w=a.join("");a=[],s.push(r.length===0?w:yAe(t,r)(w)),r.push({inverse:f,styles:tst(h)})}else if(A){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(yAe(t,r)(a.join(""))),a=[],r.pop()}else a.push(m)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var Cw=H((WVt,DAe)=>{"use strict";var kS=fQ(),{stdout:a5,stderr:c5}=pAe(),{stringReplaceAll:rst,stringEncaseCRLFWithFirstIndex:nst}=gAe(),{isArray:hQ}=Array,BAe=["ansi","ansi","ansi256","ansi16m"],ww=Object.create(null),ist=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=a5?a5.level:0;t.level=e.level===void 0?r:e.level},l5=class{constructor(e){return vAe(e)}},vAe=t=>{let e={};return ist(e,t),e.template=(...r)=>bAe(e.template,...r),Object.setPrototypeOf(e,AQ.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=l5,e.template};function AQ(t){return vAe(t)}for(let[t,e]of Object.entries(kS))ww[t]={get(){let r=pQ(this,u5(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};ww.visible={get(){let t=pQ(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var SAe=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of SAe)ww[t]={get(){let{level:e}=this;return function(...r){let s=u5(kS.color[BAe[e]][t](...r),kS.color.close,this._styler);return pQ(this,s,this._isEmpty)}}};for(let t of SAe){let e="bg"+t[0].toUpperCase()+t.slice(1);ww[e]={get(){let{level:r}=this;return function(...s){let a=u5(kS.bgColor[BAe[r]][t](...s),kS.bgColor.close,this._styler);return pQ(this,a,this._isEmpty)}}}}var sst=Object.defineProperties(()=>{},{...ww,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),u5=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},pQ=(t,e,r)=>{let s=(...a)=>hQ(a[0])&&hQ(a[0].raw)?CAe(s,bAe(s,...a)):CAe(s,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(s,sst),s._generator=t,s._styler=e,s._isEmpty=r,s},CAe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=rst(e,r.close,r.open),r=r.parent;let n=e.indexOf(`
`);return n!==-1&&(e=nst(e,a,s,n)),s+e+a},o5,bAe=(t,...e)=>{let[r]=e;if(!hQ(r)||!hQ(r.raw))return e.join(" ");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(s[n-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[n]));return o5===void 0&&(o5=wAe()),o5(t,a.join(""))};Object.defineProperties(AQ.prototype,ww);var dQ=AQ();dQ.supportsColor=a5;dQ.stderr=AQ({level:c5?c5.level:0});dQ.stderr.supportsColor=c5;DAe.exports=dQ});var gQ=H(fu=>{"use strict";fu.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;fu.find=(t,e)=>t.nodes.find(r=>r.type===e);fu.exceedsLimit=(t,e,r=1,s)=>s===!1||!fu.isInteger(t)||!fu.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=s;fu.escapeNode=(t,e=0,r)=>{let s=t.nodes[e];s&&(r&&s.type===r||s.type==="open"||s.type==="close")&&s.escaped!==!0&&(s.value="\\"+s.value,s.escaped=!0)};fu.encloseBrace=t=>t.type!=="brace"||t.commas>>0+t.ranges>>0?!1:(t.invalid=!0,!0);fu.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:!(t.commas>>0+t.ranges>>0)||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;fu.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;fu.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);fu.flatten=(...t)=>{let e=[],r=s=>{for(let a=0;a<s.length;a++){let n=s[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var mQ=H((KVt,xAe)=>{"use strict";var PAe=gQ();xAe.exports=(t,e={})=>{let r=(s,a={})=>{let n=e.escapeInvalid&&PAe.isInvalidBrace(a),l=s.invalid===!0&&e.escapeInvalid===!0,f="";if(s.value)return(n||l)&&PAe.isOpenOrClose(s)?"\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let h of s.nodes)f+=r(h);return f};return r(t)}});var RAe=H((zVt,kAe)=>{"use strict";kAe.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var UAe=H((JVt,MAe)=>{"use strict";var TAe=RAe(),py=(t,e,r)=>{if(TAe(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(TAe(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let s={relaxZeros:!0,...r};typeof s.strictZeros=="boolean"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),l=String(s.capture),f=String(s.wrap),h=t+":"+e+"="+a+n+l+f;if(py.cache.hasOwnProperty(h))return py.cache[h].result;let A=Math.min(t,e),m=Math.max(t,e);if(Math.abs(A-m)===1){let R=t+"|"+e;return s.capture?`(${R})`:s.wrap===!1?R:`(?:${R})`}let w=_Ae(t)||_Ae(e),v={min:t,max:e,a:A,b:m},D=[],I=[];if(w&&(v.isPadded=w,v.maxLen=String(v.max).length),A<0){let R=m<0?Math.abs(m):1;I=QAe(R,Math.abs(A),v,s),A=v.a=0}return m>=0&&(D=QAe(A,m,v,s)),v.negatives=I,v.positives=D,v.result=ost(I,D,s),s.capture===!0?v.result=`(${v.result})`:s.wrap!==!1&&D.length+I.length>1&&(v.result=`(?:${v.result})`),py.cache[h]=v,v.result};function ost(t,e,r){let s=f5(t,e,"-",!1,r)||[],a=f5(e,t,"",!1,r)||[],n=f5(t,e,"-?",!0,r)||[];return s.concat(n).concat(a).join("|")}function ast(t,e){let r=1,s=1,a=NAe(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=NAe(t,r);for(a=OAe(e+1,s)-1;t<a&&a<=e;)n.add(a),s+=1,a=OAe(e+1,s)-1;return n=[...n],n.sort(ust),n}function cst(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let s=lst(t,e),a=s.length,n="",l=0;for(let f=0;f<a;f++){let[h,A]=s[f];h===A?n+=h:h!=="0"||A!=="9"?n+=fst(h,A,r):l++}return l&&(n+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:n,count:[l],digits:a}}function QAe(t,e,r,s){let a=ast(t,e),n=[],l=t,f;for(let h=0;h<a.length;h++){let A=a[h],m=cst(String(l),String(A),s),w="";if(!r.isPadded&&f&&f.pattern===m.pattern){f.count.length>1&&f.count.pop(),f.count.push(m.count[0]),f.string=f.pattern+LAe(f.count),l=A+1;continue}r.isPadded&&(w=hst(A,r,s)),m.string=w+m.pattern+LAe(m.count),n.push(m),l=A+1,f=m}return n}function f5(t,e,r,s,a){let n=[];for(let l of t){let{string:f}=l;!s&&!FAe(e,"string",f)&&n.push(r+f),s&&FAe(e,"string",f)&&n.push(r+f)}return n}function lst(t,e){let r=[];for(let s=0;s<t.length;s++)r.push([t[s],e[s]]);return r}function ust(t,e){return t>e?1:e>t?-1:0}function FAe(t,e,r){return t.some(s=>s[e]===r)}function NAe(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function OAe(t,e){return t-t%Math.pow(10,e)}function LAe(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function fst(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function _Ae(t){return/^-?(0+)\d/.test(t)}function hst(t,e,r){if(!e.isPadded)return t;let s=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(s){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${s}}`:`0{${s}}`}}py.cache={};py.clearCache=()=>py.cache={};MAe.exports=py});var p5=H((ZVt,KAe)=>{"use strict";var Ast=Ae("util"),GAe=UAe(),HAe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),pst=t=>e=>t===!0?Number(e):String(e),h5=t=>typeof t=="numb 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 ape=H((tWt,ope)=>{"use strict";var Sst=mQ(),{MAX_LENGTH:npe,CHAR_BACKSLASH:d5,CHAR_BACKTICK:bst,CHAR_COMMA:Dst,CHAR_DOT:Pst,CHAR_LEFT_PARENTHESES:xst,CHAR_RIGHT_PARENTHESES:kst,CHAR_LEFT_CURLY_BRACE:Rst,CHAR_RIGHT_CURLY_BRACE:Tst,CHAR_LEFT_SQUARE_BRACKET:ipe,CHAR_RIGHT_SQUARE_BRACKET:spe,CHAR_DOUBLE_QUOTE:Qst,CHAR_SINGLE_QUOTE:Fst,CHAR_NO_BREAK_SPACE:Nst,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ost}=rpe(),Lst=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},s=typeof r.maxLength=="number"?Math.min(npe,r.maxLength):npe;if(t.length>s)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${s})`);let a={type:"root",input:t,nodes:[]},n=[a],l=a,f=a,h=0,A=t.length,m=0,w=0,v,D={},I=()=>t[m++],R=N=>{if(N.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&N.type==="text"){f.value+=N.value;return}return l.nodes.push(N),N.parent=l,N.prev=f,f=N,N};for(R({type:"bos"});m<A;)if(l=n[n.length-1],v=I(),!(v===Ost||v===Nst)){if(v===d5){R({type:"text",value:(e.keepEscaping?v:"")+I()});continue}if(v===spe){R({type:"text",value:"\\"+v});continue}if(v===ipe){h++;let N=!0,U;for(;m<A&&(U=I());){if(v+=U,U===ipe){h++;continue}if(U===d5){v+=I();continue}if(U===spe&&(h--,h===0))break}R({type:"text",value:v});continue}if(v===xst){l=R({type:"paren",nodes:[]}),n.push(l),R({type:"text",value:v});continue}if(v===kst){if(l.type!=="paren"){R({type:"text",value:v});continue}l=n.pop(),R({type:"text",value:v}),l=n[n.length-1];continue}if(v===Qst||v===Fst||v===bst){let N=v,U;for(e.keepQuotes!==!0&&(v="");m<A&&(U=I());){if(U===d5){v+=U+I();continue}if(U===N){e.keepQuotes===!0&&(v+=U);break}v+=U}R({type:"text",value:v});continue}if(v===Rst){w++;let U={type:"brace",open:!0,close:!1,dollar:f.value&&f.value.slice(-1)==="$"||l.dollar===!0,depth:w,commas:0,ranges:0,nodes:[]};l=R(U),n.push(l),R({type:"open",value:v});continue}if(v===Tst){if(l.type!=="brace"){R({type:"text",value:v});continue}let N="close";l=n.pop(),l.close=!0,R({type:N,value:v}),w--,l=n[n.length-1];continue}if(v===Dst&&w>0){if(l.ranges>0){l.ranges=0;let N=l.nodes.shift();l.nodes=[N,{type:"text",value:Sst(l)}]}R({type:"comma",value:v}),l.commas++;continue}if(v===Pst&&w>0&&l.commas===0){let N=l.nodes;if(w===0||N.length===0){R({type:"text",value:v});continue}if(f.type==="dot"){if(l.range=[],f.value+=v,f.type="range",l.nodes.length!==3&&l.nodes.length!==5){l.invalid=!0,l.ranges=0,f.type="text";continue}l.ranges++,l.args=[];continue}if(f.type==="range"){N.pop();let U=N[N.length-1];U.value+=f.value+v,f=U,l.ranges--;continue}R({type:"dot",value:v});continue}R({type:"text",value:v})}do if(l=n.pop(),l.type!=="root"){l.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 N=n[n.length-1],U=N.nodes.indexOf(l);N.nodes.splice(U,1,...l.nodes)}while(n.length>0);return R({type:"eos"}),a};ope.exports=Lst});var upe=H((rWt,lpe)=>{"use strict";var cpe=mQ(),_st=ZAe(),Mst=epe(),Ust=ape(),Dl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let s of t){let a=Dl.create(s,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(Dl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Dl.parse=(t,e={})=>Ust(t,e);Dl.stringify=(t,e={})=>cpe(typeof t=="string"?Dl.parse(t,e):t,e);Dl.compile=(t,e={})=>(typeof t=="string"&&(t=Dl.parse(t,e)),_st(t,e));Dl.expand=(t,e={})=>{typeof t=="string"&&(t=Dl.parse(t,e));let r=Mst(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Dl.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Dl.compile(t,e):Dl.expand(t,e);lpe.exports=Dl});var TS=H((nWt,dpe)=>{"use strict";var Hst=Ae("path"),Hh="\\\\/",fpe=`[^${Hh}]`,Rp="\\.",jst="\\+",Gst="\\?",EQ="\\/",qst="(?=.)",hpe="[^/]",g5=`(?:${EQ}|$)`,Ape=`(?:^|${EQ})`,m5=`${Rp}{1,2}${g5}`,Vst=`(?!${Rp})`,Wst=`(?!${Ape}${m5})`,Yst=`(?!${Rp}{0,1}${g5})`,Kst=`(?!${m5})`,zst=`[^.${EQ}]`,Jst=`${hpe}*?`,ppe={DOT_LITERAL:Rp,PLUS_LITERAL:jst,QMARK_LITERAL:Gst,SLASH_LITERAL:EQ,ONE_CHAR:qst,QMARK:hpe,END_ANCHOR:g5,DOTS_SLASH:m5,NO_DOT:Vst,NO_DOTS:Wst,NO_DOT_SLASH:Yst,NO_DOTS_SLASH:Kst,QMARK_NO_DOT:zst,STAR:Jst,START_ANCHOR:Ape},Zst={...ppe,SLASH_LITERAL:`[${Hh}]`,QMARK:fpe,STAR:`${fpe}*?`,DOTS_SLASH:`${Rp}{1,2}(?:[${Hh}]|$)`,NO_DOT:`(?!${Rp})`,NO_DOTS:`(?!(?:^|[${Hh}])${Rp}{1,2}(?:[${Hh}]|$))`,NO_DOT_SLASH:`(?!${Rp}{0,1}(?:[${Hh}]|$))`,NO_DOTS_SLASH:`(?!${Rp}{1,2}(?:[${Hh}]|$))`,QMARK_NO_DOT:`[^.${Hh}]`,START_ANCHOR:`(?:^|[${Hh}])`,END_ANCHOR:`(?:[${Hh}]|$)`},Xst={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:"\\-!\"#$%&' Line truncated
`),f!==-1){let h=a+l.substring(0,f);l=l.substring(f+1),a="",e!==null?this.reportInfo(null,`${e} ${h}`):this.reportInfo(null,h)}while(f!==-1);a+=l}),r.on("end",()=>{let n=s.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var Zw,H9=tt(()=>{mu();Ea();Zw=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));return s||null}getFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));if(!s)throw new Zt(11,`${hn(r.project.configuration,e)} isn't supported by any available fetcher`);return s}}});var Dy,j9=tt(()=>{Ea();Dy=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.getResolverByDescriptor(e,s).bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,s){return await this.getResolverByDescriptor(e,s).getCandidates(e,r,s)}async getSatisfying(e,r,s,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,s,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));return s||null}getResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!s)throw new Error(`${xi(r.project.configuration,e)} isn't supported by any available resolver`);return s}tryResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));return s||null}getResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));if(!s)throw new Error(`${hn(r.project.configuration,e)} isn't supported by any available resolver`);return s}}});var Xw,G9=tt(()=>{Mt();Ea();Xw=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=mo(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=mo(e,a),l=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,l,r)}getLocatorFilename(e){return Yw(e)}async ensureVirtualLink(e,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get("virtualFolder"),l=this.getLocatorFilename(e),f=Mo.makeVirtualPath(n,l,a),h=new Qh(f,{baseFs:r.packageFs,pathUtils:Y});return{...r,packageFs:h}}}});var UF,qge=tt(()=>{UF=class t{static{this.protocol="virtual:"}static isVirtualDescriptor(e){return!!e.range.startsWith(t.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(t.protocol)}supportsDescriptor(e,r){return t.isVirtualDescriptor(e)}supportsLocator(e,r){return t.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,s){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,s,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}});var $w,q9=tt(()=>{Mt();by();$w=class{supports(e){return!!e.reference.startsWith(Gi.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let s=this.getWorkspace(e,r).cwd;return{packageFs:new Jn(s),prefixPath:Rt.dot,localPath:s}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Gi.protocol.length))}}});function sb(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Vge(t){return typeof t>"u"?3:sb(t)?0:Array.isArray(t)?1:2}function Y9(t,e){return Object.hasOwn(t,e)}function aut(t){return sb(t)&&Y9(t,"onConflict")&&typeof t.onConflict=="string"}function cut(t){if(typeof t>"u")return{onConflict:"default",value:t};if(!aut(t))return{onConflict:"default",value:t};if(Y9(t,"value"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function Wge(t,e){let r=sb(t)&&Y9(t,e)?t[e]:void 0;return cut(r)}function eC(t,e){return[t,e,Yge]}function K9(t){return Array.isArray(t)?t[2]===Yge:!1}function V9(t,e){if(sb(t)){let r={};for(let s of Object.keys(t))r[s]=V9(t[s],e);return eC(e,r)}return Array.isArray(t)?eC(e,t.map(r=>V9(r,e))):eC(e,t)}function W9(t,e,r,s,a){let n,l=[],f=a,h=0;for(let m=a-Line truncated
Please report this to https://github.com/szmarczak/http2-wrapper/`);I(R)}return}s[0].resolve(D);return}}if(l in this.queue){if(f in this.queue[l]){this.queue[l][f].listeners.push(...s),this._tryToCreateNewSession(l,f);return}}else this.queue[l]={};let h=()=>{l in this.queue&&this.queue[l][f]===A&&(delete this.queue[l][f],Object.keys(this.queue[l]).length===0&&delete this.queue[l])},A=()=>{let m=`${f}:${l}`,w=!1;try{let v=Sft.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(m),...r});v[oc]=0,v[sC]=!1;let D=()=>v[oc]<v.remoteSettings.maxConcurrentStreams,I=!0;v.socket.once("session",N=>{this.tlsSessionCache.set(m,N)}),v.once("error",N=>{for(let{reject:U}of s)U(N);this.tlsSessionCache.delete(m)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once("close",()=>{if(w){I&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[l];N.splice(N.indexOf(v),1),N.length===0&&delete this.sessions[l]}else{let N=new Error("Session closed without receiving a SETTINGS frame");N.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of s)U(N);h()}this._tryToCreateNewSession(l,f)});let R=()=>{if(!(!(l in this.queue)||!D())){for(let N of v[yu])if(N in this.queue[l]){let{listeners:U}=this.queue[l][N];for(;U.length!==0&&D();)U.shift().resolve(v);let V=this.queue[l];if(V[N].listeners.length===0&&(delete V[N],Object.keys(V).length===0)){delete this.queue[l];break}if(!D())break}}};v.on("origin",()=>{v[yu]=v.originSet,D()&&(R(),xG(this.sessions[l],v))}),v.once("remoteSettings",()=>{if(v.ref(),v.unref(),this._sessionsCount++,A.destroyed){let N=new Error("Agent has been destroyed");for(let U of s)U.reject(N);v.destroy();return}v[yu]=v.originSet;{let N=this.sessions;if(l in N){let U=N[l];U.splice(Pft(U,v,xft),0,v)}else N[l]=[v]}this._freeSessionsCount+=1,w=!0,this.emit("session",v),R(),h(),v[oc]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),v.on("remoteSettings",()=>{R(),xG(this.sessions[l],v)})}),v[$me]=v.request,v.request=(N,U)=>{if(v[sC])throw new Error("The session is gracefully closing. No new streams are allowed.");let V=v[$me](N,U);return v.ref(),++v[oc],v[oc]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,V.once("close",()=>{if(I=D(),--v[oc],!v.destroyed&&!v.closed&&(kft(this.sessions[l],v),D()&&!v.closed)){I||(this._freeSessionsCount++,I=!0);let ee=v[oc]===0;ee&&v.unref(),ee&&(this._freeSessionsCount>this.maxFreeSessions||v[sC])?v.close():(xG(this.sessions[l],v),R())}}),V}}catch(v){for(let D of s)D.reject(v);h()}};A.listeners=s,A.completed=!1,A.destroyed=!1,this.queue[l][f]=A,this._tryToCreateNewSession(l,f)})}request(e,r,s,a){return new Promise((n,l)=>{this.getSession(e,r,[{reject:l,resolve:f=>{try{n(f.request(s,a))}catch(h){l(h)}}}])})}createConnection(e,r){return t.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let s=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),vft.connect(s,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[oc]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(e);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return eye({agent:this,isFree:!0})}get busySessions(){return eye({agent:this,isFree:!1})}};xy.kCurrentStreamsCount=oc;xy.kGracefullyClosing=sC;rye.exports={Agent:xy,globalAgent:new xy}});var TG=H((LJt,nye)=>{"use strict";var{Readable:Rft}=Ae("stream"),RG=class extends Rft{constructor(e,r){super({highWaterMark:r,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,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};nye.exports=RG});var QG=H((_Jt,iye)=>{"use strict";iye.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var oye=H((MJt,sye)=>{"use strict";sye.exports=(t,e,r)=>{for(let s of r)t.on(s,(...a)=>e.emit(s,...a))}});var cye=H((UJt,aye)=>{"use strict";aye.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var uye=H((jJt,lye)=>{"use strict";var oC=(t,e,r)=>{lye.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r: Line truncated
`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`
`).reverse();for(;f.length!==0&&f[0]===l[0];)l.shift();this.stack=`${this.stack.slice(0,n)}${l.reverse().join(`
`)}${f.reverse().join(`
`)}`}}};ai.RequestError=Ls;var aN=class extends Ls{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};ai.MaxRedirectsError=aN;var cN=class extends Ls{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};ai.HTTPError=cN;var lN=class extends Ls{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};ai.CacheError=lN;var uN=class extends Ls{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};ai.UploadError=uN;var fN=class extends Ls{constructor(e,r,s){super(e.message,e,s),this.name="TimeoutError",this.event=e.event,this.timings=r}};ai.TimeoutError=fN;var gb=class extends Ls{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};ai.ReadError=gb;var hN=class extends Ls{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};ai.UnsupportedProtocolError=hN;var _ht=["socket","connect","continue","information","upgrade","timeout"],AN=class extends Wye.Duplex{constructor(e,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[cC]=0,this[uC]=0,this.requestInitialized=!1,this[iN]=new Set,this.redirects=[],this[fC]=!1,this[sN]=!1,this[db]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",A=>{A.prependListener("data",a),A.on("data",n),A.prependListener("end",a),A.on("end",n)}),this.on("unpipe",A=>{A.off("data",a),A.off("data",n),A.off("end",a),A.off("end",n)}),this.on("pipe",A=>{A instanceof nq.IncomingMessage&&(this.options.headers={...A.headers,...this.options.headers})});let{json:l,body:f,form:h}=r;if((l||f||h)&&this._lockWrite(),ai.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,s)}catch(A){gt.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(A);return}(async()=>{var A;try{this.options.body instanceof mht.ReadStream&&await Nht(this.options.body);let{url:m}=this.options;if(!m)throw new TypeError("Missing `url` property");if(this.requestUrl=m.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(A=this[Go])===null||A===void 0||A.destroy();return}for(let w of this[db])w();this[db].length=0,this.requestInitialized=!0}catch(m){if(m instanceof Ls){this._beforeError(m);return}this.destroyed||this.destroy(m)}})()}static normalizeArguments(e,r,s){var a,n,l,f,h;let A=r;if(gt.default.object(e)&&!gt.default.urlInstance(e))r={...s,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...s,...r},e!==void 0&&(r.url=e),gt.default.urlInstance(r.url)&&(r.url=new V0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),gt.assert.any([gt.default.string,gt.default.undefined],r.method),gt.assert.any([gt.default.object,gt.default.undefined],r.headers),gt.assert.any([gt.default.string,gt.default.urlInstance,gt.default.undefined],r.prefixUrl),gt.assert.any([gt.default.object,gt.default.undefined],r.cookieJar),gt.assert.any([gt.default.object,gt.default.string,gt.default.undefined],r.searchParams),gt.assert.any([gt.default.object,gt.default.string,gt.default.undefined],r.cache),gt.assert.any([gt.default.object,gt.default.number,gt.default.undefined],r.timeout),gt.assert.any([gt.default.object,gt.default.undefined],r.context),gt.assert.any([gt.default.object,gt.default.undefined],r.hooks),gt.assert.any([gt.default.boolean,gt.default.undefined],r.decompress),gt.assert.any([gt.default.boolean,gt.default.undefined],r.ignoreInvalidCookies),gt.assert.any([gt.default.boolean,gt.default.undefined],r.followRedirect),gt.assert.any([gt.default.number,gt.default.undefined],r.maxRedirects),gt.assert.any([gt.default.boolean,gt.default.undefined],r.throwHttpErrors),gt.assert.any([gt.default.boolean,gt.default.undefined],r.http2),gt.assert.any([gt.default.boolean,gt.default.undefined],r.allowGetBody),gt.assert.any([gt.default.string,gt.default.undefined],r.localAddress),gt.assert.any([Xye.isDnsLookupIpVersion,gt.default.undefined],r.dnsLookupIpVersion),gt.assert.any([gt.default.object,gt.default.undefined],r.https),gt.assert.any([gt.default.boolean,gt.default.undefined],r.rejectUnauthorized),r.https&&(gt.assert.any([gt.default.boolean,gt.default.undefined],r.https.rejectUnauthorized),gt.assert.any([gt.default.function_,gt.default.undefined],r.https.checkServerIdentity),gt.assert.any([gt.default.string,gt.default.object,gt.default.array,gt.default.undefined],r.https.certificateAuthority),gt.assert.any([gt.default.string,gt.default.object,gt.default.array,gt.default.undefined],r.https.key),gt.assert.any([gt.default.string,gt.default.object,gt.default.array,gt.default.undefined],r.https.certificate),gt.assert.any([gt.default.string,gt.default.undefined],r.https.passphrase),gt.assert.any([gt.default.string,gt.default.buffer,gt.default.array,gt.default.undefined],r.httpLine truncated
`)[3];return BAt(e)}function Iq(){return typeof IN.default.availableParallelism<"u"?IN.default.availableParallelism():Math.max(1,IN.default.cpus().length)}var IN,gAt,kEe,mAt,yAt,REe,TEe,wAt,CAt,wN=tt(()=>{Mt();IN=st(Ae("os"));CN();Au();gAt=Number(process.versions.node.split(".")[0]),kEe=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),mAt=typeof kEe<"u"?async t=>{try{return await wq(kEe,[t],{cwd:Y.cwd()}),!0}catch{return!1}}:void 0,yAt="/usr/bin/ldd";wAt=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,CAt=/\((\S*)(?::(\d+))(?::(\d+))\)/});function Dq(t,e,r,s,a){let n=ob(r);if(s.isArray||s.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((l,f)=>Cq(t,`${e}[${f}]`,l,s,a)):String(n).split(/,/).map(l=>Cq(t,e,l,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return Cq(t,e,r,s,a)}function Cq(t,e,r,s,a){let n=ob(r);switch(s.type){case"ANY":return HF(n);case"SHAPE":return PAt(t,e,r,s,a);case"MAP":return xAt(t,e,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if("values"in s&&s.values?.includes(n))return n;let f=(()=>{if(s.type==="BOOLEAN"&&typeof n!="string")return qS(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${e}" to be a string, got ${typeof n}`);let h=$Q(n,{env:t.env});switch(s.type){case"ABSOLUTE_PATH":{let A=a,m=z9(r);return m&&m[0]!=="<"&&(A=Y.dirname(m)),Y.resolve(A,me.toPortablePath(h))}case"LOCATOR_LOOSE":return Op(h,!1);case"NUMBER":return parseInt(h);case"LOCATOR":return Op(h);case"BOOLEAN":return qS(h);case"DURATION":return eF(h,s.unit);default:return h}})();if("values"in s&&s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(", ")}`);return f}function PAt(t,e,r,s,a){let n=ob(r);if(typeof n!="object"||Array.isArray(n))throw new ht(`Object configuration settings "${e}" must be an object`);let l=Pq(t,s,{ignoreArrays:!0});if(n===null)return l;for(let[f,h]of Object.entries(n)){let A=`${e}.${f}`;if(!s.properties[f])throw new ht(`Unrecognized configuration settings found: ${e}.${f} - run "yarn config" to see the list of settings supported in Yarn`);l.set(f,Dq(t,A,h,s.properties[f],a))}return l}function xAt(t,e,r,s,a){let n=ob(r),l=new Map;if(typeof n!="object"||Array.isArray(n))throw new ht(`Map configuration settings "${e}" must be an object`);if(n===null)return l;for(let[f,h]of Object.entries(n)){let A=s.normalizeKeys?s.normalizeKeys(f):f,m=`${e}['${A}']`,w=s.valueDefinition;l.set(A,Dq(t,m,h,w,a))}return l}function Pq(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(e.properties))s.set(a,Pq(t,n));return s}case"MAP":return e.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(s=>Y.normalize(s)):Y.isAbsolute(e.default)?Y.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(s=>Y.resolve(t.projectCwd,s)):Y.resolve(t.projectCwd,e.default);case"DURATION":return eF(e.default,e.unit);default:return e.default}}function vN(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return DAt;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return me.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let s=[];for(let a of t)s.push(vN(a,e,r));return s}if(e.type==="MAP"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let l=vN(n,e.valueDefinition,r);typeof l<"u"&&s.set(a,l)}return s}if(e.type==="SHAPE"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let l=e.properties[a],f=vN(n,l,r);typeof f<"u"&&s.set(a,f)}return s}return t}function kAt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(SN)&&(e=(0,FEe.default)(e.slice(SN.length)),t[e]=r);return t}function vq(){let t=`${SN}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return Sq}async function QEe(t){try{return await fe.readFilePromise(t)}catch{return Buffer.of()}}async function RAt(t,e){return Buffer.compare(...await Promise.all([QEe(t),QEe(e)]))===0}async function TAt(t,e){let[r,s]=await Promise.all([fe.statPromise(t),fe.statPromise(e)]);return r.dev===s.dev&&r.ino===s.ino}async function FAt({configuration:t,selfPath:e}){let r=t.get("yarnPath");return t.get("ignorePath")||r===null||r===e||await QAt(r,e)?null:r}var FEe,jp,NEe,OEe,LEe,Bq,SAt,wb,bAt,Gp,SN,Sq,DAt,hC,_Ee,bq,bN,BN,QAt,$e,Cb=tt(()=>{Mt();au();FEe=st(aue()),jp=st(ly());sr();NEe=st(efe()),OEe=Ae("module"),LEe=st(hy()),Bq=Ae("stream");Tge();Jw();H9();j9();G9();qge();q9();by();zge();GF();pu();G0();EN();Au();wN();_p();Ea();SAt=function(){if(!jp.GITHUB_ACTIONS||!process.env.GITHUB_EVE Line truncated
`);return{stdout:n,stderr:l}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])e.push(new s);return new Dy([new UF,new Gi,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])e.push(new s);return new Zw([new Xw,new $w,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let s of r.linkers||[])e.push(new s);return e}getSupportedArchitectures(){let e=Ib(),r=this.get("supportedArchitectures"),s=r.get("os");s!==null&&(s=s.map(l=>l==="current"?e.os:l));let a=r.get("cpu");a!==null&&(a=a.map(l=>l==="current"?e.cpu:l));let n=r.get("libc");return n!==null&&(n=kl(n,l=>l==="current"?e.libc??kl.skip:l)),{os:s,cpu:a,libc:n}}isInteractive({interactive:e,stdout:r}){return r.isTTY?e??this.get("preferInteractive"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!Vc(s.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let l=new nr;l.load(a,{yamlCompatibilityMode:!0});let f=GS(e,s.identHash),h=[];f.push([s.range,h]);let A={status:"inactive",userProvided:n,parentDescriptor:s};for(let m of l.dependencies.values())h.push({...A,type:"Dependency",descriptor:m});for(let m of l.peerDependencies.values())h.push({...A,type:"PeerDependency",descriptor:m});for(let[m,w]of l.peerDependenciesMeta)for(let[v,D]of Object.entries(w))h.push({...A,type:"PeerDependencyMeta",selector:m,key:v,value:D})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get("packageExtensions"))r(q0(s,!0),XQ(a),{userProvided:!0});return e}normalizeLocator(e){return Vc(e.reference)?mo(e,`${this.get("defaultProtocol")}${e.reference}`):Gp.test(e.reference)?mo(e,`${this.get("defaultProtocol")}${e.reference}`):e}normalizeDependency(e){return Vc(e.range)?oi(e,`${this.get("defaultProtocol")}${e.range}`):Gp.test(e.range)?oi(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(e,{packageExtensions:r}){let s=ZS(e),a=r.get(e.identHash);if(typeof a<"u"){let l=e.version;if(l!==null){for(let[f,h]of a)if(Wh(l,f))for(let A of h)switch(A.status==="inactive"&&(A.status="redundant"),A.type){case"Dependency":typeof s.dependencies.get(A.descriptor.identHash)>"u"&&(A.status="active",s.dependencies.set(A.descriptor.identHash,this.normalizeDependency(A.descriptor)));break;case"PeerDependency":typeof s.peerDependencies.get(A.descriptor.identHash)>"u"&&(A.status="active",s.peerDependencies.set(A.descriptor.identHash,A.descriptor));break;case"PeerDependencyMeta":{let m=s.peerDependenciesMeta.get(A.selector);(typeof m>"u"||!Object.hasOwn(m,A.key)||m[A.key]!==A.value)&&(A.status="active",Rl(s.peerDependenciesMeta,A.selector,()=>({}))[A.key]=A.value)}break;default:z5(A)}}}let n=l=>l.scope?`${l.scope}__${l.name}`:`${l.name}`;for(let l of s.peerDependenciesMeta.keys()){let f=nc(l);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,oi(f,"*"))}for(let l of s.peerDependencies.values()){if(l.scope==="types")continue;let f=n(l),h=ic("types",f),A=Qn(h);s.peerDependencies.has(h.identHash)||s.peerDependenciesMeta.has(A)||s.dependencies.has(h.identHash)||(s.peerDependencies.set(h.identHash,oi(h,"*")),s.peerDependenciesMeta.set(A,{optional:!0}))}return s.dependencies=new Map(go(s.dependencies,([,l])=>Gc(l))),s.peerDependencies=new Map(go(s.peerDependencies,([,l])=>Gc(l))),s}getLimit(e){return Rl(this.limits,e,()=>(0,LEe.default)(this.get(e)))}async triggerHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);n&&await n(...r)}}async triggerMultipleHooks(e,r){for(let s of r)await this.triggerHook(e,...s)}async reduceHook(e,r,...s){let a=r;for(let n of this.plugins.values()){let l=n.hooks;if(!l)continue;let f=e(l);f&&(a=await f(a,...s))}return a}async firstHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);if(!n)continue;let l=await n(...r);if(typeof l<"u")return l}return null}}});var un={};lr(un,{EndStrategy:()=>Tq,ExecError:()=>DN,PipeError:()=>Bb,execvp:()=>wq,pipevp:()=>Tf});function Ry(t){return t!==null&&typeof t.fd=="number"}function xq(){}function kq(){for(let t of Ty)t.kill()}async function Tf(t,e,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:l,stderr:f,end:h=2}){let A=["pipe","pipe","pipe"];n===null?A[0]="ignore":Ry(n)&&(A[0]=n),Ry(l)&&(A[1]=l),Ry(f)&&(A[2]=f);let m=(0,Rq.default)(t,e,{cwd:me.fromPortablePath(r),env:{...s,PWD:me.fromPortablePath(r)},stdio:A});Ty.add(m),Ty.size===1&&(process.on("SIGINT",xq),process.on("SIGTERM",kq)),!Ry(n)&&n!==null&&n.pipe(m.stdin),Ry(l)||m.stdout.pipe(l,{end:!1}),Ry(f)||m.stderr.pipe(f,{end:!1});let w=()=>{for(let v of new Set([l,f]))Ry(v)||v.end()};return new Promise((v,D)=>{m.on("error",I=>{Ty.delete(m),Ty.size===0&&(process.off("SIGINT",xq),pro Line truncated
This command will run a command using Yarn's portable shell.
Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell.
Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell.
Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used.
For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md.
`,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await pC(r,[],{cwd:me.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Tl,tIe=tt(()=>{Tl=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var FN={};lr(FN,{fastGlobOptions:()=>iIe,isBraceExpansion:()=>Wq,isGlobPattern:()=>HAt,match:()=>jAt,micromatchOptions:()=>QN});function HAt(t){if(!TN.default.scan(t,QN).isGlob)return!1;try{TN.default.parse(t,QN)}catch{return!1}return!0}function jAt(t,{cwd:e,baseFs:r}){return(0,rIe.default)(t,{...iIe,cwd:me.fromPortablePath(e),fs:vT(nIe.default,new B0(r))})}function Wq(t){return TN.default.scan(t,QN).isBrace}var rIe,nIe,TN,QN,iIe,sIe=tt(()=>{Mt();rIe=st(xF()),nIe=st(Ae("fs")),TN=st(ma()),QN={strictBrackets:!0},iIe={onlyDirectories:!1,onlyFiles:!1}});function Yq(){}function Kq(){for(let t of Fy)t.kill()}function lIe(t,e,r,s){return a=>{let n=a[0]instanceof zh.Transform?"pipe":a[0],l=a[1]instanceof zh.Transform?"pipe":a[1],f=a[2]instanceof zh.Transform?"pipe":a[2],h=(0,aIe.default)(t,e,{...s,stdio:[n,l,f]});return Fy.add(h),Fy.size===1&&(process.on("SIGINT",Yq),process.on("SIGTERM",Kq)),a[0]instanceof zh.Transform&&a[0].pipe(h.stdin),a[1]instanceof zh.Transform&&h.stdout.pipe(a[1],{end:!1}),a[2]instanceof zh.Transform&&h.stderr.pipe(a[2],{end:!1}),{stdin:h.stdin,promise:new Promise(A=>{h.on("error",m=>{switch(Fy.delete(h),Fy.size===0&&(process.off("SIGINT",Yq),process.off("SIGTERM",Kq)),m.code){case"ENOENT":a[2].write(`command not found: ${t}
`),A(127);break;case"EACCES":a[2].write(`permission denied: ${t}
`),A(128);break;default:a[2].write(`uncaught error: ${m.message}
`),A(1);break}}),h.on("close",m=>{Fy.delete(h),Fy.size===0&&(process.off("SIGINT",Yq),process.off("SIGTERM",Kq)),A(m!==null?m:129)})})}}}function uIe(t){return e=>{let r=e[0]==="pipe"?new zh.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function NN(t,e){return Jq.start(t,e)}function oIe(t,e=null){let r=new zh.PassThrough,s=new cIe.StringDecoder,a="";return r.on("data",n=>{let l=s.write(n),f;do if(f=l.indexOf(`
`),f!==-1){let h=a+l.substring(0,f);l=l.substring(f+1),a="",t(e!==null?`${e} ${h}`:h)}while(f!==-1);a+=l}),r.on("end",()=>{let n=s.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function fIe(t,{prefix:e}){return{stdout:oIe(r=>t.stdout.write(`${r}
`),t.stdout.isTTY?e:null),stderr:oIe(r=>t.stderr.write(`${r}
`),t.stderr.isTTY?e:null)}}var aIe,zh,cIe,Fy,wu,zq,Jq,Zq=tt(()=>{aIe=st(O6()),zh=Ae("stream"),cIe=Ae("string_decoder"),Fy=new Set;wu=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},zq=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}},Jq=class t{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:s,stderr:a}){let n=new t(null,e);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(e,r=1){let s=new t(this,e),a=new zq;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}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 r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let s;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");s=this.stderr,e[2]=s.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let e=[];for(let s=this;s;s=s.ancestor)e.push(s.exec());return(await Promise.all(e))[0]}}});var Tb={};lr(Tb,{EntryCommand:()=>Db,ShellError:()=>Tl,execute:()=>pC,globUtils:()=>FN});function hIe(t,e,r){let s=new Ql.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(s,{end:!1}),(e&2)===2&&r.stdin instanceof Ql.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Tl(`Bad file descriptor: "${t}"`)}return s}function LN(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function qAt(t,e,r){let s=[],a=new Ql.PassThrough;return a.on("data",n=>s.push(n)),await _N(t,e,LN(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\r\n]+$/,"")}async function AIe(t,e,r){let s=t.map(async n=>{let l=await Ny(n.args,e,r);return{name:n.name,value:l.join(" ")}});return(await Promise.all(s)).reduce((n,l)=>(n[l.name]=l.value,n),{})}function ON(t){return t.match(/[^ \r\n\t]+/g)||[]}async function EIe(t,e,r,s,a=s){switch(t.name){case"$":s(String(process.pid));break;case"#":s(String(e.args.length));break;case"@":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let l=ON(n);for(let f=0;f<l.length-1;++f)a(l[f]);s(l[l.length-1])}break;case"*":{let n=e.args.join(" ");if(t.quoted)s(n);else for(let l of ON(n))a(l)}break;case"PPID":s(String(process.ppid));break;case"RANDOM":s(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),l,f=Number.isFinite(n);if(f?n>=0&&n<e.args.length&&(l=e.args[n]):Object.hasOwn(r.variables,t.name)?l=r.variables[t.name]:Object.hasOwn(r.environment,t.name)&&(l=r.environment[t.name]),typeof l<"u"&&t.alternativeValue?l=(await Ny(t.alternativeValue,e,r)).join(" "):typeof l>"u"&&(t.defaultValue?l=(await Ny(t.defaultValue,e,r)).join(" "):t.alternativeValue&&(l="")),typeof l>"u")throw f?new Tl(`Unbound argument #${n}`):new Tl(`Unbound variable "${t.name}"`);if(t.quoted)s(l);else{let h=ON(l);for(let m=0;m<h.length-1;++m)a(h[m]);let A=h[h.length-1];typeof A<"u"&&s(A)}}break}}async function xb(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let s=[];await EIe({...t,quoted:!0},e,r,n=>s.push(n));let a=Number(s.join(" "));return Number.isNaN(a)?xb({type:"variable",name:s.join(" ")},e,r):xb({type:"number",value:a},e,r)}else return VAt[t.type](await xb(t.left,e,r),await xb(t.right,e,r))}async function Ny(t,e,r){let s=new Map,a=[],n=[],l=m=>{n.push(m)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},h=m=>{l(m),f()},A=(m,w,v)=>{let D=JSON.stringify({type:m,fd:w}),I=s.get(D);typeof I>"u"&&s.set(D,I=[]),I.push(v)};for(let m of t){let w=!1;switch(m.type){case"redirection":{let v=await Ny(m.args,e,r);for(let D of v)A(m.subtype,m.fd,D)}break;case"argument":for(let v of m.segments)switch(v.type){case"text":l(v.text);break;case"glob":l(v.pattern),w=!0;break;case"shell":{let D=await qAt(v.shell,e,r);if(v.quoted)l(D);else{let I=ON(D);for(let R=0;R<I.length-1;++R)h(I[R]);l(I[I.length-1])}}break;case"variable":await EIe(v,e,r,l,h);break;case"arithmetic":l(String(await xb(v.arithmetic,e,r)));break}break}if(f(),w){let v=a.pop();if(typeof v>"u")throw new Error("Assertion failed: Expected a glob pa Line truncated
`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${h}, '${l(hw(t))}' has ended
`)})),0}return await dIe(t,e,r)}async function zAt(t,e,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},l=async f=>{try{return await KAt(f.chain,e,r,{background:s&&typeof f.then>"u"})}catch(h){if(!(h instanceof Tl))throw h;return r.stderr.write(`${h.message}
`),1}};for(n(await l(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await l(t.then.line));break;case"||":a!==0&&n(await l(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function _N(t,e,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:l}of t){if(a=await zAt(n,e,r,{background:l==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function IIe(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rb(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>Rb(e));case"arithmetic":return Xq(t.arithmetic);case"shell":return $q(t.shell);default:return!1}}function Rb(t){switch(t.type){case"redirection":return t.args.some(e=>Rb(e));case"argument":return t.segments.some(e=>IIe(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function Xq(t){switch(t.type){case"variable":return IIe(t);case"number":return!1;default:return Xq(t.left)||Xq(t.right)}}function $q(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let s;switch(r.type){case"subshell":s=$q(r.subshell);break;case"command":s=r.envs.some(a=>a.args.some(n=>Rb(n)))||r.args.some(a=>Rb(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function pC(t,e=[],{baseFs:r=new pi,builtins:s={},cwd:a=me.toPortablePath(process.cwd()),env:n=process.env,stdin:l=process.stdin,stdout:f=process.stdout,stderr:h=process.stderr,variables:A={},glob:m=FN}={}){let w={};for(let[I,R]of Object.entries(n))typeof R<"u"&&(w[I]=R);let v=new Map(GAt);for(let[I,R]of Object.entries(s))v.set(I,R);l===null&&(l=new Ql.PassThrough,l.end());let D=DT(t,m);if(!$q(D)&&D.length>0&&e.length>0){let{command:I}=D[D.length-1];for(;I.then;)I=I.then.line;let R=I.chain;for(;R.then;)R=R.then.chain;R.type==="command"&&(R.args=R.args.concat(e.map(N=>({type:"argument",segments:[{type:"text",text:N}]}))))}return await _N(D,{args:e,baseFs:r,builtins:v,initialStdin:l,initialStdout:f,initialStderr:h,glob:m},{cwd:a,environment:w,exitCode:null,procedures:{},stdin:l,stdout:f,stderr:h,variables:Object.assign({},A,{"?":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var gIe,mIe,Ql,yIe,GAt,VAt,Pb=tt(()=>{Mt();au();gIe=st(Cw()),mIe=Ae("os"),Ql=Ae("stream"),yIe=Ae("timers/promises");eIe();tIe();sIe();Zq();Zq();GAt=new Map([["cd",async([t=(0,mIe.homedir)(),...e],r,s)=>{let a=Y.resolve(s.cwd,me.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(l=>{throw l.code==="ENOENT"?new Tl(`cd: no such file or directory: ${t}`):l})).isDirectory())throw new Tl(`cd: not a directory: ${t}`);return s.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${me.fromPortablePath(r.cwd)}
`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,s)=>s.exitCode=parseInt(t??s.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")}
`),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new Tl("sleep: missing operand");let s=Number(t);if(Number.isNaN(s))throw new Tl(`sleep: invalid time interval '${t}'`);return await(0,yIe.setTimeout)(1e3*s,0)}],["unset",async(t,e,r)=>{for(let s of t)delete r.environment[s],delete r.variables[s];return 0}],["__ysh_run_procedure",async(t,e,r)=>{let s=r.procedures[t[0]];return await NN(s,{stdin:new wu(r.stdin),stdout:new wu(r.stdout),stderr:new wu(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,l=[],f=[],h=[],A=0;for(;t[A]!=="--";){let w=t[A++],{type:v,fd:D}=JSON.parse(w),I=V=>{switch(D){case null:case 0:l.push(V);break;default:throw new Error(`Unsupported file descriptor: "${D}"`)}},R=V=>{switch(D){case null:case 1:f.push(V);break;case 2:h.push(V);break;default:throw new Error(`Unsupported file descriptor: "${D}"`)}},N=Number(t[A++]),U=A+N;for(let V=A;V<U;++A,++V)switch(v){case"<":I(()=>e.baseFs.createReadStream(Y.resolve(r.cwd,me.toPortablePath(t[V]))));break;case"<<<":I(()=>{let ee=new Ql.PassThrough;return process.nextTick(()=>{ee.write(`${t[V]}
`),ee.end()}),ee});break;case"<&":I(()=>hIe(Number(t[V]),1,r));break;case">":case">>":{let ee=Y.resolve(r.cwd,me.toPortablePath(t[V]));R(ee==="/dev/null"?new Ql.Writable({autoDestroy:!0,emitClose:!0,write(te,ie,ae){setImmediate(ae)}}):e.baseFs.createWriteStream(ee,v===">>"?{flags:"a"}:void 0))}break;case">&":R(hIe(Number(t[V]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${v}"`)}}if(l.length>0){let w=new Ql.PassThrough;s=w;let v=D=>{if(D===l.length)w.end();else{let I=l[D]();I.pipe(w,{end:!1}),I.on("end",()=>{v(D+1)})}};v(0)}if(f.length>0){let w=new Ql.PassThrough;a=w;for(let v of f)w.pipe(v)}if(h.length>0){let w=new Ql.PassThrough;n=w;for(let v of h)w.pipe(v)}let m=await NN(kb(t.slice(A+1),e,r),{stdin:new wu(s),stdout:new wu(a),stderr:new wu(n)}).run();return await Promise.all(f.map(w=>new Promise((v,D)=>{w.on("error",I=>{D(I)}),w.on("close",()=>{v()}),w.end()}))),await Promise.all(h.map(w=>new Promise((v,D)=>{w.on("error",I=>{D(I)}),w.on("close",()=>{v()}),w.end()}))),m}]]);VAt={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var wIe=H((g$t,MN)=>{function JAt(){var t=0,e=1,r=2,s=3,a=4,n=5,l=6,f=7,h=8,A=9,m=10,w=11,v=12,D=13,I=14,R=15,N=16,U=17,V=0,ee=1,te=2,ie=3,ae=4;function ge(d,be){return 55296<=d.charCodeAt(be)&&d.charCodeAt(be)<=56319&&56320<=d.charCodeAt(be+1)&&d.charCodeAt(be+1)<=57343}function de(d,be){be===void 0&&(be=0);var Ce=d.charCodeAt(be);if(55296<=Ce&&Ce<=56319&&be<d.length-1){var Ee=Ce,he=d.charCodeAt(be+1);return 56320<=he&&he<=57343?(Ee-55296)*1024+(he-56320)+65536:Ee}if(56320<=Ce&&Ce<=57343&&be>=1){var Ee=d.charCodeAt(be-1),he=Ce;return 55296<=Ee&&Ee<=56319?(Ee-55296)*1024+(he-56320)+65536:he}return Ce}function xe(d,be,Ce){var Ee=[d].concat(be).concat([Ce]),he=Ee[Ee.length-2],$=Ce,De=Ee.lastIndexOf(I);if(De>1&&Ee.slice(1,De).every(function(j){return j==s})&&[s,D,U].indexOf(d)==-1)return te;var Te=Ee.lastIndexOf(a);if(Te>0&&Ee.slice(1,Te).every(function(j){return j==a})&&[v,a].indexOf(he)==-1)return Ee.filter(function(j){return j==a}).length%2==1?ie:ae;if(he==t&&$==e)return V;if(he==r||he==t||he==e)return $==I&&be.every(function(j){return j==s})?te:ee;if($==r||$==t||$==e)return ee;if(he==l&&($==l||$==f||$==A||$==m))return V;if((he==A||he==f)&&($==f||$==h))return V;if((he==m||he==h)&&$==h)return V;if($==s||$==R)return V;if($==n)return V;if(he==v)return V;var ot=Ee.indexOf(s)!=-1?Ee.lastIndexOf(s)-1:Ee.length-2;return[D,U].indexOf(Ee[ot])!=-1&&Ee.slice(ot+1,-1).every(function(j){return j==s})&&$==I||he==R&&[N,U].indexOf($)!=-1?V:be.indexOf(a)!=-1?te:he==a&&$==a?V:ee}this.nextBreak=function(d,be){if(be===void 0&&(be=0),be<0)return 0;if(be>=d.length-1)return d.length;for(var Ce=we(de(d,be)),Ee=[],he=be+1;he<d.length;he++)if(!ge(d,he-1)){var $=we(de(d,he));if(xe(Ce,Ee,$))return he;Ee.push($)}return d.length},this.splitGraphemes=function(d){for(var be=[],Ce=0,Ee;(Ee=this.nextBreak(d,Ce))<d.length;)be.push(d.slice(Ce,Ee)),Ce=Ee;return Ce<d.length&&be.push(d.slice(Ce)),be},this.iterateGraphemes=function(d){var be=0,Ce={next:function(){var Ee,he;return(he=this.nextBreak(d,be))<d.length?(Ee=d.slice(be,he),be=he,{value:Ee,done:!1}):be<d.length?(Ee=d.slice(be),be=d.length,{value:Ee,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(Ce[Symbol.iterator]=function(){return Ce}),Ce},this.countGraphemes=function(d){for(var be=0,Ce=0,Ee;(Ee=this.nextBreak(d,Ce))<d.length;)Ce=Ee,be++;return Ce<d.length&&be++,be};function we(d){return 1536<=d&&d<=1541||d==1757||d==1807||d==2274||d==3406||d==69821||70082<=d&&d<=70083||d==72250||72326<=d&&d<=72329||d==73030?v:d==13?t:d==10?e:0<=d&&d<=9||11<=d&&d<=12||14<=d&&d<=31||127<=d&&d<=159||d==173||d==1564||d==6158||d==8203||8206<=d&&d<=8207||d==8232||d==8233||8234<=d&&d<=8238||8288<=d&&d<=8292||d==8293||8294<=d&&d<=8303||55296<=d&&d<=57343||d==65279||65520<=d&&d<=65528||65529<=d&&d<=65531||113824<=d&&d<=113827||119155<=d&&d<=119162||d==917504||d==917505||917506<=d&&d<=917535||917632<=d&&d<=917759||918e3<=d&&d<=921599?r:768<=d&&d<=879||1155<=d&&d<=1159||1160<=d&&d<=1161||1425<=d&&d<=1469||d==1471||1473<=d&&d<=1474||1476<=d&&d<=1477||d==1479||1552<=d&&d<=1562||1611<=d&&d<=1631||d==1648||1750<=d&&d<=1756||1759<=d&&d<=1764||1767<=d&&d<=1768||1770<=d&&d<=1773||d==1809||1840<=d&&d<=1866||1958<=d&&d<=1968||2027<=d&&d<=2035||2070<=d&&d<=2073||2075<=d&&d<=2083||2085<=d&&d<=2087||2089<=d&&d<=2093||2137<=d&&d<=2139||2260<=d&&d<=2273||2275<=d&&d<=2306||d==2362||d==2364||2369<=d&&d<=2376||d==2381||2385<=d&&d<=2391||2402<=d&&d<=2403||d==2433||d==2492||d==2494||2497<=d&&d<=2500||d==2509||d==2519||2530<=d&&d<=2531||2561<=d&&d<=2562||d==2620||2625<=d&&d<=2626||2631<=d&&d<=2632||2635<=d&&d<=2637||d==2641||2672<=d&&d<=2673||d==2677||2689<=d&&d<=2690||d==2748||2753<=d&&d<=2757||2759<=d&&d<=2760||d==2765||2786<=d&&d<=2787||2810<=d&&d<=2815||d==2817||d==2876||d==2878||d==2879||2881<=d&&d<=2884||d==2893||d==2902||d==2903||2914<=d&&d<=2915||d==2946||d==3006|| Line truncated
`,end:t=>`::endgroup::
`}:HN.default.TRAVIS?{start:t=>`travis_fold:start:${t}
`,end:t=>`travis_fold:end:${t}
`}:HN.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${t}
`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,PIe=z0!==null,bIe=new Date,ept=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,tpt=t=>t,jN=tpt({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}}),rpt=ept&&Object.keys(jN).find(t=>{let e=jN[t];return!(e.date&&(e.date[0]!==bIe.getDate()||e.date[1]!==bIe.getMonth()+1))})||"default";Wt=class extends jo{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:l=!0,includePrefix:f=!0,includeFooter:h=!0,includeLogs:A=!a,includeInfos:m=A,includeWarnings:w=A}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(YS(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=l,this.includePrefix=f,this.includeFooter=h,this.includeInfos=m,this.includeWarnings=w,this.json=a,this.stdout=s,r.get("enableProgressBars")&&!a&&s.isTTY&&s.columns>22){let v=r.get("progressBarStyle")||rpt;if(!Object.hasOwn(jN,v))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=jN[v];let D=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*D/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(l,f)=>{if(typeof l!="string"){let A=l;l=A.message,f=f??A.name}let h=typeof f<"u"?`${f}: ${l}`:l;a.reportWarning(0,h)},r.includeVersion&&a.reportInfo(0,wy(r.configuration,`Yarn ${Fn}`,2));try{await s(a)}catch(l){a.reportExceptionOnce(l)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let l={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(l):(l.action(),l.committed=!0);let f=Date.now();try{return n()}catch(h){throw this.reportExceptionOnce(h),h}finally{let h=Date.now();this.uncommitted.delete(l),l.committed&&s?.(h-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let l={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(l):(l.action(),l.committed=!0);let f=Date.now();try{return await n()}catch(h){throw this.reportExceptionOnce(h),h}finally{let h=Date.now();this.uncommitted.delete(l),l.committed&&s?.(h-f)}}startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,z0!==null&&!this.json&&this.includeInfos&&this.stdout.write(z0.start(r))},reportFooter:f=>{if(this.indent-=1,z0!==null&&!this.json&&this.includeInfos){this.stdout.write(z0.end(r));for(let h of this.timerFooter)h()}this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${or(this.configuration,f,Ct.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof s=="function"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...l}=this.startTimerImpl(r,s,a);return this.startSectionSync(l,n)}async startTimerPromise(r,s,a){let{cb:n,...l}=this.startTimerImpl(r,s,a);return this.startSectionPromise(l,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",l=`${this.formatPrefix(n,"blueBright")}${s}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(l)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"redBright")}${s}`,{truncate:!1})}reportFold(r,s){if(!z0)return;let a=`${z0.start(r)}${s}${z0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)ret Line truncated
`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})}
`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||s)&&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 r=Date.now();r-this.progressTime>SIe&&(this.progressFrame=(this.progressFrame+1)%vIe.length,this.progressTime=r);let s=vIe[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let A=this.progressStyle.chars[0].repeat(a.lastScaledSize),m=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${A}${m}`}let l=this.formatName(null),f=l?`${l}: `:"",h=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${or(this.configuration,"\u27A4","blueBright")} ${f}${s}${n}${h}
`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},SIe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let l of this.progress.values()){let f=typeof l.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*l.definition.progress):void 0,h=l.lastScaledSize;l.lastScaledSize=f;let A=l.lastTitle;if(l.lastTitle=l.definition.title,f!==h||(n=A!==l.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>"u"&&(s=this.configuration.get("preferTruncatedLines")),s&&(r=(0,DIe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?xIe(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,s){return this.includePrefix?`${or(this.configuration,"\u27A4",s)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?e7(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${$At} `}}});var qn={};lr(qn,{PackageManager:()=>RIe,detectPackageManager:()=>TIe,executePackageAccessibleBinary:()=>LIe,executePackageScript:()=>GN,executePackageShellcode:()=>t7,executeWorkspaceAccessibleBinary:()=>lpt,executeWorkspaceLifecycleScript:()=>NIe,executeWorkspaceScript:()=>FIe,getPackageAccessibleBinaries:()=>qN,getWorkspaceAccessibleBinaries:()=>OIe,hasPackageScript:()=>opt,hasWorkspaceScript:()=>r7,isNodeScript:()=>n7,makeScriptEnv:()=>Nb,maybeExecuteWorkspaceLifecycleScript:()=>cpt,prepareExternalProject:()=>spt});async function J0(t,e,r,s=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${s.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await fe.writeFilePromise(Y.format({dir:t,name:e,ext:".cmd"}),a)}await fe.writeFilePromise(Y.join(t,e),`#!/bin/sh
exec "${r}" ${s.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@"
`,{mode:493})}async function TIe(t){let e=await nr.tryFind(t);if(e?.packageManager){let s=NF(e.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=s.reference.split(".");switch(s.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await fe.readFilePromise(Y.join(t,Or.lockfile),"utf8")}catch{}return r!==void 0?r.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'}:fe.existsSync(Y.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:fe.existsSync(Y.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Nb({project:t,locator:e,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let l={};for(let[m,w]of Object.entries(n))typeof w<"u"&&(l[m.toLowerCase()!=="path"?m:"PATH"]=w);let f=me.fromPortablePath(r);l.BERRY_BIN_FOLDER=me.fromPortablePath(f);let h=process.env.COREPACK_ROOT&&!s?me.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([J0(r,"node",process.execPath),...Fn!==null?[J0(r,"run",process.execPath,[h,"run"]),J0(r,"yarn",process.execPath,[h]),J0(r,"yarnpkg",process.execPath,[h]),J0(r,"node-gyp",process.execPath,[h,"run","--top-level","node-gyp"])]:[]]),t&&(l.INIT_CWD=me.fromPortablePath(t.configuration.startingCwd),l.PROJECT_CWD=me.fromPortablePath(t.cwd)),l.PATH=l.PATH?`${f}${me.delimiter}${l.PATH}`:`${f}`,l.npm_execpath=`${f}${me.sep}yarn`,l.npm_node_execpath=`${f}${me.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let m=t.tryWorkspaceByLocator(e),w=m?m.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";l.npm_package_name=Qn(e),l.npm_package_version=w;let v;if(m)v=m.cwd;else{let D=t.storedPackages.get(e.locatorHash);if(!D)throw new Error(`Package for ${hn(t.configuration,e)} not found in the project`);let I=t.configuration.getLinkers(),R={project:t,report:new Wt({stdout:new Z0.PassThrough,configuration:t.configuration})},N=I.find(U=>U.supportsPackage(D,R));if(!N)throw new Error(`The package ${hn(t.configuration,D)} isn't supported by any of the available linkers`);v=await N.findPackageLocation(D,R)}l.npm_package_json=me.fromPortablePath(Y.join(v,Or.manifest))}let A=Fn!==null?`yarn/${Fn}`:`yarn/${Qp("@yarnpkg/core").version}-core`;return l.npm_config_user_agent=`${A} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(l.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(m=>m.setupScriptEnvironment,t,l,async(m,w,v)=>await J0(r,m,w,v)),l}async function spt(t,e,{configuration:r,report:s,workspace:a=null,locator:n=null}){await ipt(async()=>{await fe.mktempPromise(async l=>{let f=Y.join(l,"pack.log"),h=null,{stdout:A,stderr:m}=r.getSubprocessStreams(f,{prefix:me.fromPortablePath(t),report:s}),w=n&&kf(n)?Ww(n):n,v=w?qc(w):"an external project";A.write(`Packing ${v} from sources
`);let D=await TIe(t),I;D!==null?(A.write(`Using ${D.packageManager} for bootstrap. Reason: ${D.reason}
`),I=D.packageManager):(A.write(`No package manager configuration detected; defaulting to Yarn
`),I="Yarn");let R=I==="Yarn"&&!D?.packageManagerField;await fe.mktempPromise(async N=>{let U=await Nb({binFolder:N,ignoreCorepack:R,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:"0"}}),ee=new Map([["Yarn Classic",async()=>{let ie=a!==null?["workspace",a]:[],ae=Y.join(t,Or.manifest),ge=await fe.readFilePromise(ae),de=await Tf(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:t,env:U,stdin:h,stdout:A,stderr:m,end:1});if(de.code!==0)return de.code;await fe.writeFilePromise(ae,ge),await fe.appendFilePromise(Y.join(t,".npmignore"),`/.yarn
`),A.write(`
`),delete U.NODE_ENV;let xe=await Tf("yarn",["install"],{cwd:t,env:U,stdin:h,stdout:A,stderr:m,end:1});if(xe.code!==0)return xe.code;A.write(`
`);let we=await Tf("yarn",[...ie,"pack","--filename",me.fromPortablePath(e)],{cwd:t,env:U,stdin:h,stdout:A,stderr:m});return we.code!==0?we.code:0}],["Yarn",async()=>{let ie=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let ae=Y.join(t,Or.lockfile);await fe.existsPromise(ae)||await fe.writeFilePromise(ae,"");let ge=await Tf("yarn",[...ie,"pack","--install-if-needed","--filename",me.fromPortablePath(e)],{cwd:t,env:U,stdin:h,stdout:A,stderr:m});return ge.code!==0?ge.code:0}],["npm",async()=>{if(a!==null){let be=new Z0.PassThrough,Ce=Nw(be);be.pipe(A,{end:!1});let Ee=await Tf("npm",["--version"],{cwd:t,env:U,stdin:h,stdout:be,stderr:m,end:0});if(be.end(),Ee.code!==0)return A.end(),m.end(),Ee.code;let he=(await Ce).toString().trim();if(!Wh(he,">=7.x")){let $=ic(null,"npm"),De=oi($,he),Te=oi($,">=7.x");throw new Error(`Workspaces aren't supported by ${xi(r,De)}; please upgrade to ${xi(r,Te)} (npm has been detected as the primary package manager for ${or(r,t,Ct.PATH)})`)}}let ie=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ae=await Tf("npm",["install","--legacy-peer-deps"],{cwd:t,env:U,stdin:h,stdout:A,stderr:m,end:1});if(ae.code!==0)return ae.code;let ge=new Z0.PassThrough,de=Nw(ge);ge.pipe(A);let xe=await Tf("npm",["pack","--silent",...ie],{cwd:t,env:U,stdin:h,stdout:ge,stderr:m});if(xe.code!==0)return xe.code;let we=(await de).toString().trim().replace(/^.*\n/s,""),d=Y.resolve(t,me.toPortablePath(we));return await fe.renamePromise(d,e),0}]]).get(I);if(typeof ee>"u")throw new Error("Assertion failed: Unsupported workflow");let te=await ee();if(!(te===0||typeof te>"u"))throw fe.detachTemp(l),new Zt(58,`Packing the package failed (exit code ${te}, logs can be found here: ${or(r,f,Ct.PATH)})`)})})})}async function opt(t,e,{project:r}){let s=r.tryWorkspaceByLocator(t);if(s!==null)return r7(s,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${hn(r.configuration,t)} not found in the project`);return await Yh.openPromise(async n=>{let l=r.configuration,f=r.configuration.getLinkers(),h={project:r,report:new Wt({stdout:new Z0.PassThrough,configuration:l})},A=f.find(D=>D.supportsPackage(a,h));if(!A)throw new Error(`The package ${hn(r.configuration,a)} isn't supported by any of the available linkers`);let m=await A.findPackageLocation(a,h),w=new Jn(m,{baseFs:n});return(await nr.find(Rt.dot,{baseFs:w})).scripts.has(e)})}async function GN(t,e,r,{cwd:s,project:a,stdin:n,stdout:l,stderr:f}){return await fe.mktempPromise(async h=>{let{manifest:A,env:m,cwd:w}=await QIe(t,{project:a,binFolder:h,cwd:s,lifecycleScript:e}),v=A.scripts.get(e);if(typeof v>"u")return 1;let D=async()=>await pC(v,r,{cwd:w,env:m,stdin:n,stdout:l,stderr:f});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,D,a,t,e,{script:v,args:r,cwd:w,env:m,stdin:n,stdout:l,stderr:f}))()})}async function t7(t,e,r,{cwd:s,project:a,stdin:n,stdout:l,stderr:f}){return await fe.mktempPromise(async h=>{let{env:A,cwd:m}=await QIe(t,{project:a,binFolder:h,cwd:s});return await pC(e,r,{cwd:m,env:A,stdin:n,stdout:l,stderr:f})})}async function apt(t,{binFolder:e,cwd:r,lifecycleScript:s}){let a=await Nb({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:s});return await i7(e,await OIe(t)),typeof r>"u"&&(r=Y.dirname(await fe.realpathPromise(Y.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function QIe(t,{project:e,binFolder:r,cwd:s,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return apt(n,{binFolder:r,cwd:s,lifecycleScript:a});let l=e.storedPackages.get(t.locatorHash);if(!l)throw new Error(`Package for ${hn(e.configuration,t)} not found in the project`);return await Yh.openPromise(async f=>{let h=e.configuration,A=e.configuration.getLinkers(),m={project:e,report:new Wt({stdout:new Z0.PassThrough,configuration:h})},w=A.find(N=>N.supportsPackage(l,m));if(!w)throw new Error(`The package ${hn(e.configuration,l)} isn't supported by any of the available linkers`);let v=await Nb({project:e,locator:t,binFolder:r,lifecycleScript:a});await i7(r,await qN(t,{project:e}));let D=await w.findPackageLocation(l,m),I=new Jn(D,{baseFs:f}),R=await nr.find(Rt.dot,{baseFs:I});return typeof s>"u"&&(s=D),{manifest:R,binFolder:r,env:v,cwd:s}})}async function FIe(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:l}){return await GN(t.anchoredLocator,e,r,{cwd:s,project:t.project,stdin:a,stdout:n,stderr:l})}function r7(t,e){return t.manifest.scripts.has(e)}async function NIe(t,e,{cwd:r,report:s}){let{configuration:a}=t.project,n=null;await fe.mktempPromise(async l=>{let f=Y.join(l,`${e}.log`),h=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${me.fromPortablePath(t.cwd)}")
`,{stdout:A,stderr:m}=a.getSubprocessStreams(f,{report:s,prefix:hn(a,t.anchoredLocator),header:h});s.reportInfo(36,`Calling the "${e}" lifecycle script`);let w=await FIe(t,e,[],{cwd:r,stdin:n,stdout:A,stderr:m});if(A.end(),m.end(),w!==0)throw fe.detachTemp(l),new Zt(36,`${HS(e)} script failed (exit code ${or(a,w,Ct.NUMBER)}, logs can be found here: ${or(a,f,Ct.PATH)}); run ${or(a,`yarn ${e}`,Ct.CODE)} to investigate`)})}async function cpt(t,e,r){r7(t,e)&&await NIe(t,e,r)}function n7(t){let e=Y.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0;if(e===".exe"||e===".bin")return!1;let r=Buffer.alloc(4),s;try{s=fe.openSync(t,"r")}catch{return!0}try{fe.readSync(s,r,0,r.length,0)}finally{fe.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function qN(t,{project:e}){let r=e.configuration,s=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${hn(r,t)} not found in the project`);let n=new Z0.Writable,l=r.getLinkers(),f={project:e,report:new Wt({configuration:r,stdout:n})},h=new Set([t.locatorHash]);for(let m of a.dependencies.values()){let w=e.storedResolutions.get(m.descriptorHash);if(!w)throw new Error(`Assertion failed: The resolution (${xi(r,m)}) should have been registered`);h.add(w)}let A=await Promise.all(Array.from(h,async m=>{let w=e.storedPackages.get(m);if(!w)throw new Error(`Assertion failed: The package (${m}) should have been registered`);if(w.bin.size===0)return kl.skip;let v=l.find(I=>I.supportsPackage(w,f));if(!v)return kl.skip;let D=null;try{D=await v.findPackageLocation(w,f)}catch(I){if(I.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw I}return{dependency:w,packageLocation:D}}));for(let m of A){if(m===kl.skip)continue;let{dependency:w,packageLocation:v}=m;for(let[D,I]of w.bin){let R=Y.resolve(v,I);s.set(D,[w,me.fromPortablePath(R),n7(R)])}}return s}async function OIe(t){return await qN(t.anchoredLocator,{project:t.project})}async function i7(t,e){await Promise.all(Array.from(e,([r,[,s,a]])=>a?J0(t,r,process.execPath,[s]):J0(t,r,s,[])))}async function LIe(t,e,r,{cwd:s,project:a,stdin:n,stdout:l,stderr:f,nodeArgs:h=[],packageAccessibleBinaries:A}){A??=await qN(t,{project:a});let m=A.get(e);if(!m)throw new Error(`Binary not found (${e}) for ${hn(a.configuration,t)}`);return await fe.mktempPromise(async w=>{let[,v]=m,D=await Nb({project:a,locator:t,binFolder:w});await i7(D.BERRY_BIN_FOLDER,A);let I=n7(me.toPortablePath(v))?Tf(process.execPath,[...h,v,...r],{cwd:s,env:D,stdin:n,stdout:l,stderr:f}):Tf(v,r,{cwd:s,env:D,stdin:n,stdout:l,stderr:f}),R;try{R=await I}finally{await fe.removePromise(D.BERRY_BIN_FOLDER)}return R.code})}async function lpt(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:l,packageAccessibleBinaries:f}){return await LIe(t.anchoredLocator,e,r,{project:t.project,cwd:s,stdin:a,stdout:n,stderr:l,packageAccessibleBinaries:f})}var kIe,Z0,RIe,npt,ipt,s7=tt(()=>{Mt();Mt();Kh();Pb();xl();kIe=st(hy()),Z0=Ae("stream");Jw();mu();Fb();Qb();CN();pu();Au();_p();Ea();RIe=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(RIe||{});npt=2,ipt=(0,kIe.default)(npt)});function Cdt(t,e,r){let s=e,a=e?e.next:t.head,n=new lV(r,s,a,t);return n.next===void 0&&(t.tail=n),n.prev===void 0&&(t.head=n),t.length++,n}function Bdt(t,e){t.tail=new lV(e,t.tail,void 0,t),t.head||(t.head=t.tail),t.length++}function vdt(t,e){t.head=new lV(e,void 0,t.head,t),t.tail||(t.tail=t.head),t.length++}var pwe,lc,IO,tV,dwe,nV,Wy,CO,ywe,gO,og,jIe,Ewe,Vy,Swe,nD,Of,L7,kwe,V7,fV,Owe,hV,Vn,Us,AV,oD,SC,Yc,Hwe,iD,pV,Wc,gV,upt,fpt,_Ie,hpt,Apt,ppt,Vp,Wp,X0,VN,Ob,WN,MIe,YN,UIe,Qf,gC,yo,Lb,IC,Eo,cc,Io,o7,KN,Ba,Ss,a7,c7,HIe,l7,Jh,u7,zN,_b,Oy,Fl,Mb,dpt,gpt,mpt,ypt,gwe,Ept,Ipt,wpt,Zy,Cpt,cg,_f,Ub,di,f7,Jp,h7,Q7,F7,Jb,JN,vC,bC,A7,wC,lg,Lf,rg,Zh,CC,p7,zp,Hb,d7,sO,Ly,oO,Yy,rV,Bpt,wO,mwe,vpt,Spt,bpt,Dpt,Ppt,xpt,kpt,iV,sD,Rpt,eA,Tpt,GIe,Qpt,g7,Ky,ZN,m7,sV,Iwe,Fpt,Npt,wwe,Opt,Lpt,Cwe,_pt,Mpt,Upt,Hpt,jpt,Gpt,qpt,Vpt,Bwe,vwe,Wpt,aO,Ypt,BO,oV,zy,Kpt,_y,y7,zpt,ng,Jpt,Zpt,Xpt,ig,$pt,edt,tdt,E7,rdt,My,mO,ndt,idt,sdt,odt,xn,Dwe,vO,adt,N7,O7,cdt,Cu,Uy,Yp,I7,qIe,Xh,jb,$0,VIe,qi,Kp,eg,w7,Hy,Ms,XN,$N,C7,WIe,YIe,Gb,B7,eO,mC,tg,tO,jy,rO,nO,KIe,ldt,Jy,Zb,udt,Pwe,fdt,hdt,SO,xwe,Adt,zIe,aV,bO,cV,pdt,ddt,JIe,gdt,Rwe,mdt,ZIe,XIe,$Ie,_7,ewe,qb,cO,M7,lO,U7,H7,j7,G7,sg,yO,q7,v7,$h,Twe,ydt,Edt,Idt,wdt,lV,twe,rwe,uO,Vb,Ff,Gy,qy,Wb,S7,Nf,b7,fO,nwe,W7,Y7,hO,AO,iwe,D7,pO,Qwe,P7,DO,uV,Sdt,bdt,Fwe,Nwe,Ddt,Pdt,M$t,xdt,kdt,Rdt,Tdt,Qdt,Lwe,Fdt,Ndt,Odt,_we,K7,EO,Ldt,Mwe,_dt,Uwe,jwe,PO,Mdt,Udt,z7,Gwe,Hdt,jdt,x7,swe,yC,Gdt,qdt,Vdt,Wdt,Ydt,Kdt,owe,J7,awe,Z7,Bu,X7,$7,dO,cwe,lwe,zb,uwe,fwe,k7,ag,wo,iO,hwe,EC,R7,T7,eV,Xb,$b,eD,tD,zdt,rD,Jdt,Zdt,Xdt,Awe,dV,Yb,qwe,$dt,e0t,U$t,t0t,r0t,n0t,i0t,s0t,Kb,H$t,o0t,Vwe=tt(()=>{pwe=st(Ae("events"),1),lc=st(Ae("fs"),1),IO=Ae("node:events"),tV=st(Ae("node:stream"),1),dwe=Ae("node:string_decoder"),nV=st(Ae("node:path"),1),Wy=st(Ae("node:fs"),1),CO=Ae("path"),ywe=Ae("events"),gO=st(Ae("assert"),1),og=Ae("buffer"),jIe=st(Ae("zlib"),1), Line truncated
`,n=Buffer.byteLength(a),l=Math.floor(Math.log(n)/Math.log(10))+1;return n+l>=Math.pow(10,l)&&(l+=1),l+n+a}static parse(e,r,s=!1){return new bwe(ndt(idt(e),r),s)}},ndt=(t,e)=>e?Object.assign({},e,t):t,idt=t=>t.replace(/\n$/,"").split(`
`).reduce(sdt,Object.create(null)),sdt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.slice((r+" ").length);let s=e.split("="),a=s.shift();if(!a)return t;let n=a.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),l=s.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(l)*1e3):/^[0-9]+$/.test(l)?+l:l,t},odt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,xn=odt!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/"),Dwe=class extends Zy{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,r){switch(super({}),this.pause(),this.extended=e,this.globalExtended=r,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=xn(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?xn(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#e(e),r&&this.#e(r,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let r=this.remain,s=this.blockRemain;return this.remain=Math.max(0,r-e),this.blockRemain=Math.max(0,s-e),this.ignore?!0:r>=e?super.write(t):super.write(t.subarray(0,r))}#e(t,e=!1){t.path&&(t.path=xn(t.path)),t.linkpath&&(t.linkpath=xn(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([r,s])=>!(s==null||r==="path"&&e))))}},vO=(t,e,r,s={})=>{t.file&&(s.file=t.file),t.cwd&&(s.cwd=t.cwd),s.code=r instanceof Error&&r.code||e,s.tarCode=e,!t.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),t.emit("warn",e,r,s)):r instanceof Error?t.emit("error",Object.assign(r,s)):t.emit("error",Object.assign(new Error(`${e}: ${r}`),s))},adt=1024*1024,N7=Buffer.from([31,139]),O7=Buffer.from([40,181,47,253]),cdt=Math.max(N7.length,O7.length),Cu=Symbol("state"),Uy=Symbol("writeEntry"),Yp=Symbol("readEntry"),I7=Symbol("nextEntry"),qIe=Symbol("processEntry"),Xh=Symbol("extendedHeader"),jb=Symbol("globalExtendedHeader"),$0=Symbol("meta"),VIe=Symbol("emitMeta"),qi=Symbol("buffer"),Kp=Symbol("queue"),eg=Symbol("ended"),w7=Symbol("emittedEnd"),Hy=Symbol("emit"),Ms=Symbol("unzip"),XN=Symbol("consumeChunk"),$N=Symbol("consumeChunkSub"),C7=Symbol("consumeBody"),WIe=Symbol("consumeMeta"),YIe=Symbol("consumeHeader"),Gb=Symbol("consuming"),B7=Symbol("bufferConcat"),eO=Symbol("maybeEnd"),mC=Symbol("writing"),tg=Symbol("aborted"),tO=Symbol("onDone"),jy=Symbol("sawValidEntry"),rO=Symbol("sawNullBlock"),nO=Symbol("sawEOF"),KIe=Symbol("closeStream"),ldt=()=>!0,Jy=class extends ywe.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[Kp]=[];[qi];[Yp];[Uy];[Cu]="begin";[$0]="";[Xh];[jb];[eg]=!1;[Ms];[tg]=!1;[jy];[rO]=!1;[nO]=!1;[mC]=!1;[Gb]=!1;[w7]=!1;constructor(t={}){super(),this.file=t.file||"",this.on(tO,()=>{(this[Cu]==="begin"||this[jy]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(tO,t.ondone):this.on(tO,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||adt,this.filter=typeof t.filter=="function"?t.filter:ldt;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let r=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:r?!0:void 0,this.on("end",()=>this[KIe]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,r={}){vO(this,t,e,r)}[YIe](t,e){this[jy]===void 0&&(this[jy]=!1);let r;try{r=new zy(t,e,this[Xh],this[jb])}catch(s){return this.warn("TAR_ENTRY_INVALID",s)}if(r.nullBlock)this[rO]?(this[nO]=!0,this[Cu]==="begin"&&(this[Cu]="header"),this[Hy]("eof")):(this[rO]=!0,this[Hy]("nullBlock"));else if(this[rO]=!1,!r.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:r});else if(!r.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:r});else{let s=r.type;if(/^(Symbolic)?Link$/.test(s)&&!r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:r});else if(!/^(Symbolic)?Link$/.test(s)&&!/^(Global)?ExtendedHeader$/.test Line truncated
`}),f},s})});var bs={};lr(bs,{emitList:()=>A0t,emitTree:()=>oCe,treeNodeToJson:()=>sCe,treeNodeToTreeify:()=>iCe});function iCe(t,{configuration:e}){let r={},s=0,a=(n,l)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[h,A]of f){if(!A)continue;let{label:m,value:w,children:v}=A,D=[];typeof m<"u"&&D.push(wy(e,m,2)),typeof w<"u"&&D.push(or(e,w[0],w[1])),D.length===0&&D.push(wy(e,`${h}`,2));let I=D.join(": ").trim(),R=`\0${s++}\0`,N=l[`${R}${I}`]={};typeof v<"u"&&a(v,N)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return a(t.children,r),r}function sCe(t){let e=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Cy(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,l]of s)l&&(a[p0t(n)]=e(l));return typeof r.value>"u"?a:{value:Cy(r.value[0],r.value[1]),children:a}};return e(t)}function A0t(t,{configuration:e,stdout:r,json:s}){let a=t.map(n=>({value:n}));oCe({children:a},{configuration:e,stdout:r,json:s})}function oCe(t,{configuration:e,stdout:r,json:s,separators:a=0}){if(s){let l=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let f of l)f&&r.write(`${JSON.stringify(sCe(f))}
`);return}let n=(0,nCe.asTree)(iCe(t,{configuration:e}),!1,!1);if(n=n.replace(/\0[0-9]+\0/g,""),a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502
$1`).replace(/^│\n/,"")),a>=2)for(let l=0;l<2;++l)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502
$2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}function p0t(t){return typeof t=="string"?t.replace(/^\0[0-9]+\0/,""):t}var nCe,aCe=tt(()=>{nCe=st(rCe());pu()});var xO,cCe=tt(()=>{xO=class{constructor(e){this.releaseFunction=e;this.map=new Map}addOrCreate(e,r){let s=this.map.get(e);if(typeof s<"u"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(e)}`);return s.refCount++,{value:s.value,release:()=>this.release(e)}}else{let a=r();return this.map.set(e,{refCount:1,value:a}),{value:a,release:()=>this.release(e)}}}release(e){let r=this.map.get(e);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(e)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(e)}`);s==1?(this.map.delete(e),this.releaseFunction(r.value)):r.refCount--}}});function lD(t){let e=t.match(d0t);if(!e?.groups)throw new Error("Assertion failed: Expected the checksum to match the requested pattern");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var lCe,BV,vV,kO,gn,d0t,SV=tt(()=>{We();Mt();Mt();Kh();lCe=Ae("crypto"),BV=st(Ae("fs"));cCe();mu();G0();Au();Ea();vV=Ow(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),kO=Ow(process.env.YARN_CACHE_VERSION_OVERRIDE??10),gn=class t{constructor(e,{configuration:r,immutable:s=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new xO(e=>{e.discardAndClose()});this.cacheId=`-${(0,lCe.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:l}=t.getCacheKey(r);this.cacheSpec=n,this.cacheKey=l}static async find(e,{immutable:r,check:s}={}){let a=new t(e.get("cacheFolder"),{configuration:e,immutable:r,check:s});return await a.setup(),a}static getCacheKey(e){let r=e.get("compressionLevel"),s=r!=="mixed"?`c${r}`:"";return{cacheKey:[kO,s].join(""),cacheSpec:s}}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`${Yw(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=lD(r).hash.slice(0,10);return`${Yw(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:s}=lD(e);if(r===null||r<vV)return!1;let a=this.configuration.get("cacheMigrationMode");return!(r<kO&&a==="always"||s!==this.cacheSpec&&a!=="required-only")}getLocatorPath(e,r){return this.mirrorCwd===null?Y.resolve(this.cwd,this.getVersionFilename(e)):r===null?Y.resolve(this.cwd,this.getVersionFilename(e)):Y.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?Y.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await fe.existsPromise(this.cwd))throw new Zt(56,"Cache path does not exist.")}else{await fe.mkdirPromise(this.cwd,{recursive:!0});let e=Y.resolve(this.cwd,".gitignore");await fe.changeFilePromise(e,`/.gitignore
*.flock
*.tmp
`)}(this.mirrorCwd||!this.immutable)&&await fe.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:s,onMiss:a,loader:n,...l}){let f=this.getLocatorMirrorPath(e),h=new pi,A=()=>{let de=new _s,xe=Y.join(Rt.root,L9(e));return de.mkdirSync(xe,{recursive:!0}),de.writeJsonSync(Y.join(xe,Or.manifest),{name:Qn(e),mocked:!0}),de},m=async(de,{isColdHit:xe,controlPath:we=null})=>{if(we===null&&l.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let d=r&&!xe?lD(r).cacheKey:this.cacheKey,be=!l.skipIntegrityCheck||!r?`${d}/${await RF(de)}`:r;if(we!==null){let Ee=!l.skipIntegrityCheck||!r?`${this.cacheKey}/${await RF(we)}`:r;if(be!==Ee)throw new Zt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let Ce=null;switch(r!==null&&be!==r&&(this.check?Ce="throw":lD(r).cacheKey!==lD(be).cacheKey?Ce="update":Ce=this.configuration.get("checksumBehavior")),Ce){case null:case"update":return{isValid:!0,hash:be};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new Zt(18,"The remote archive doesn't match the expected checksum")}},w=async de=>{if(!n)throw new Error(`Cache check required but no loader configured for ${hn(this.configuration,e)}`);let xe=await n(),we=xe.getRealPath();xe.saveAndClose(),await fe.chmodPromise(we,420);let d=await m(de,{controlPath:we,isColdHit:!1});if(!d.isValid)throw new Error("Assertion failed: Expected a valid checksum");return d.hash},v=async()=>{if(f===null||!await fe.existsPromise(f)){let de=await n(),xe=de.getRealPath();return de.saveAndClose(),{source:"loader",path:xe}}return{source:"mirror",path:f}},D=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${hn(this.configuration,e)}`);if(this.immutable)throw new Zt(56,`Cache entry required but missing for ${hn(this.configuration,e)}`);let{path:de,source:xe}=await v(),{hash:we}=await m(de,{isColdHit:!0}),d=this.getLocatorPath(e,we),be=[];xe!=="mirror"&&f!==null&&be.push(async()=>{let Ee=`${f}${this.cacheId}`;await fe.copyFilePromise(de,Ee,BV.default.constants.COPYFILE_FICLONE),await fe.chmodPromise(Ee,420),await fe.renamePromise(Ee,f)}),(!l.mirrorWriteOnly||f===null)&&be.push(async()=>{let Ee=`${d}${this.cacheId}`;await fe.copyFilePromise(de,Ee,BV.default.constants.COPYFILE_FICLONE),await fe.chmodPromise(Ee,420),await fe.renamePromise(Ee,d)});let Ce=l.mirrorWriteOnly?f??d:d;return await Promise.all(be.map(Ee=>Ee())),[!1,Ce,we]},I=async()=>{let xe=(async()=>{let we=l.unstablePackages?.has(e.locatorHash),d=we||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,be=d!==null?this.markedFiles.has(d)||await h.existsPromise(d):!1,Ce=!!l.mockedPackages?.has(e.locatorHash)&&(!this.check||!be),Ee=Ce||be,he=Ee?s:a;if(he&&he(),Ee){let $=null,De=d;if(!Ce)if(this.check)$=await w(De);else{let Te=await m(De,{isColdHit:!1});if(Te.isValid)$=Te.hash;else return D()}return[Ce,De,$]}else{if(this.immutable&&we)throw new Zt(56,`Cache entry required but missing for ${hn(this.configuration,e)}; consider defining ${pe.pretty(this.configuration,"supportedArchitectures",pe.Type.CODE)} to cache packages for multiple systems`);return D()}})();this.mutexes.set(e.locatorHash,xe);try{return await xe}finally{this.mutexes.delete(e.locatorHash)}};for(let de;de=this.mutexes.get(e.locatorHash);)await de;let[R,N,U]=await I();R||this.markedFiles.add(N);let V=()=>this.refCountedZipFsCache.addOrCreate(N,()=>R?A():new _s(N,{baseFs:h,readOnly:!0})),ee,te=new ow(()=>Z5(()=>(ee=V(),ee.value),de=>`Failed to open the cache entry for ${hn(this.configuration,e)}: ${de}`),Y),ie=new Qh(N,{baseFs:te,pathUtils:Y}),ae=()=>{ee?.release()},ge=l.unstablePackages?.has(e.locatorHash)?null:U;return[ie,ae,ge]}},d0t=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\/)?(?<hash>.*)$/});var RO,uCe=tt(()=>{RO=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(RO||{})});var g0t,DC,bV=tt(()=>{Mt();au();_p();Ea();g0t=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,s)=>`${r}#commit=${s}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>OF({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],DC=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let s=Y.join(e.cwd,Or Line truncated
`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(`
`),this.stdout.write(`${or(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command.
`),this.suggestInstall&&this.stdout.write(`${or(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help.
`))}formatNameWithHyperlink(r){return e7(r,{configuration:this.configuration,json:!1})}}});var PC,DV=tt(()=>{Ea();PC=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(QF(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){let a=s.project.storedResolutions.get(e.descriptorHash);if(a){let l=s.project.originalPackages.get(a);if(l)return[l]}let n=s.project.originalPackages.get(QF(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(l=>l.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.originalPackages.get(e.locatorHash);if(!s)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return s}}});function Zp(){}function m0t(t,e,r,s,a){for(var n=0,l=e.length,f=0,h=0;n<l;n++){var A=e[n];if(A.removed){if(A.value=t.join(s.slice(h,h+A.count)),h+=A.count,n&&e[n-1].added){var w=e[n-1];e[n-1]=e[n],e[n]=w}}else{if(!A.added&&a){var m=r.slice(f,f+A.count);m=m.map(function(D,I){var R=s[h+I];return R.length>D.length?R:D}),A.value=t.join(m)}else A.value=t.join(r.slice(f,f+A.count));f+=A.count,A.added||(h+=A.count)}}var v=e[l-1];return l>1&&typeof v.value=="string"&&(v.added||v.removed)&&t.equals("",v.value)&&(e[l-2].value+=v.value,e.pop()),e}function y0t(t){return{newPos:t.newPos,components:t.components.slice(0)}}function E0t(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function pCe(t,e,r){return r=E0t(r,{ignoreWhitespace:!0}),TV.diff(t,e,r)}function I0t(t,e,r){return QV.diff(t,e,r)}function TO(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?TO=function(e){return typeof e}:TO=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},TO(t)}function PV(t){return B0t(t)||v0t(t)||S0t(t)||b0t()}function B0t(t){if(Array.isArray(t))return xV(t)}function v0t(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function S0t(t,e){if(t){if(typeof t=="string")return xV(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return xV(t,e)}}function xV(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,s=new Array(e);r<e;r++)s[r]=t[r];return s}function b0t(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function kV(t,e,r,s,a){e=e||[],r=r||[],s&&(t=s(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var l;if(D0t.call(t)==="[object Array]"){for(e.push(t),l=new Array(t.length),r.push(l),n=0;n<t.length;n+=1)l[n]=kV(t[n],e,r,s,a);return e.pop(),r.pop(),l}if(t&&t.toJSON&&(t=t.toJSON()),TO(t)==="object"&&t!==null){e.push(t),l={},r.push(l);var f=[],h;for(h in t)t.hasOwnProperty(h)&&f.push(h);for(f.sort(),n=0;n<f.length;n+=1)h=f[n],l[h]=kV(t[h],e,r,s,h);e.pop(),r.pop()}else l=t;return l}function dCe(t,e,r,s,a,n,l){l||(l={}),typeof l.context>"u"&&(l.context=4);var f=I0t(r,s,l);if(!f)return;f.push({value:"",lines:[]});function h(U){return U.map(function(V){return" "+V})}for(var A=[],m=0,w=0,v=[],D=1,I=1,R=function(V){var ee=f[V],te=ee.lines||ee.value.replace(/\n$/,"").split(`
`);if(ee.lines=te,ee.added||ee.removed){var ie;if(!m){var ae=f[V-1];m=D,w=I,ae&&(v=l.context>0?h(ae.lines.slice(-l.context)):[],m-=v.length,w-=v.length)}(ie=v).push.apply(ie,PV(te.map(function(Ee){return(ee.added?"+":"-")+Ee}))),ee.added?I+=te.length:D+=te.length}else{if(m)if(te.length<=l.context*2&&V<f.length-2){var ge;(ge=v).push.apply(ge,PV(h(te)))}else{var de,xe=Math.min(te.length,l.context);(de=v).push.apply(de,PV(h(te.slice(0,xe))));var we={oldStart:m,oldLines:D-m+xe,newStart:w,newLines:I-w+xe,lines:v};if(V>=f.length-2&&te.length<=l.context){var d=/\n$/.test(r),be=/\n$/.test(s),Ce=te.length==0&&v.length>we.oldLines;!d&&Ce&&r.length>0&&v.splice(we.oldLines,0,"\\ No newline at end of file"),(!d&&!Ce||!be)&&v.push("\\ No newline at end of file")}A.push(we),m=0,w=0,v=[]}D+=te.length,I+=te.length}},N=0;N<f.length;N++)R(N);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:A}}var $er,hCe,ACe,TV,QV,w0t,C0t,D0t,uD,RV,FV=tt(()=>{Zp.prototype={diff:function(e,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s=="function"&&(a=s,s={}),this.options=s;var n=this;function l(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var f=r.length,h=e.length,A=1,m=f+h;s.maxEditLength&&(m=Math.min(m,s.maxEditLength));var w=[{newPos:-1,components:[]}],v=this.extractCommon(w[0],r,e,0);if(w[0].newPos+1>=f&&v+1>=h)return l([{value:this.join(r),count:r.length}]);function D(){for(var R=-1*A;R<=A;R+=2){var N=void 0,U=w[R-1],V=w[R+1],ee=(V?V.newPos:0)-R;U&&(w[R-1]=void 0);var te=U&&U.newPos+1<f,ie=V&&0<=ee&&ee<h;if(!te&&!ie){w[R]=void 0;continue}if(!te||ie&&U.newPos<V.newPos?(N=y0t(V),n.pushComponent(N.components,void 0,!0)):(N=U,N.newPos++,n.pushComponent(N.components,!0,void 0)),ee=n.extractCommon(N,r,e,R),N.newPos+1>=f&&ee+1>=h)return l(m0t(n,N.components,r,e,n.useLongestToken));w[R]=N}A++}if(a)(function R(){setTimeout(function(){if(A>m)return a();D()||R()},0)})();else for(;A<=m;){var I=D();if(I)return I}},pushComponent:function(e,r,s){var a=e[e.length-1];a&&a.added===r&&a.removed===s?e[e.length-1]={count:a.count+1,added:r,removed:s}:e.push({count:1,added:r,removed:s})},extractCommon:function(e,r,s,a){for(var n=r.length,l=s.length,f=e.newPos,h=f-a,A=0;f+1<n&&h+1<l&&this.equals(r[f+1],s[h+1]);)f++,h++,A++;return A&&e.components.push({count:A}),e.newPos=f,h},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],s=0;s<e.length;s++)e[s]&&r.push(e[s]);return r},castInput:function(e){return e},tokenize:function(e){return e.split("")},join:function(e){return e.join("")}};$er=new Zp;hCe=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,ACe=/\S/,TV=new Zp;TV.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!ACe.test(t)&&!ACe.test(e)};TV.tokenize=function(t){for(var e=t.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),r=0;r<e.length-1;r++)!e[r+1]&&e[r+2]&&hCe.test(e[r])&&hCe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};QV=new Zp;QV.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var s=0;s<r.length;s++){var a=r[s];s%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};w0t=new Zp;w0t.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};C0t=new Zp;C0t.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};D0t=Object.prototype.toString,uD=new Zp;uD.useLongestToken=!0;uD.tokenize=QV.tokenize;uD.castInput=function(t){var e=this.options,r=e.undefinedReplacement,s=e.stringifyReplacer,a=s===void 0?function(n,l){return typeof l>"u"?r:l}:s;return typeof t=="string"?t:JSON.stringify(kV(t,null,null,a),a," ")};uD.equals=function(t,e){return Zp.prototype.equals.call(uD,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};RV=new Zp;RV.tokenize=function(t){return t.slice()};RV.join=RV.removeEmpty=function(t){return t}});var QO,gCe=tt(()=>{mu();QO=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.resolver.bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){throw new Zt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,s,a){throw new Zt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new Zt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfLine truncated
`;await fe.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=e}}});function Q0t({project:t,allDescriptors:e,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:l=new Map,peerWarnings:f=[],peerRequirementNodes:h=new Map,volatileDescriptors:A=new Set}){let m=new Map,w=[],v=new Map,D=new Map,I=new Map,R=new Map,N=new Map,U=new Map(t.workspaces.map(ae=>{let ge=ae.anchoredLocator.locatorHash,de=s.get(ge);if(typeof de>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[ge,ZS(de)]})),V=()=>{let ae=fe.mktempSync(),ge=Y.join(ae,"stacktrace.log"),de=String(w.length+1).length,xe=w.map((we,d)=>`${`${d+1}.`.padStart(de," ")} ${qc(we)}
`).join("");throw fe.writeFileSync(ge,xe),fe.detachTemp(ae),new Zt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${me.fromPortablePath(ge)}`)},ee=ae=>{let ge=r.get(ae.descriptorHash);if(typeof ge>"u")throw new Error("Assertion failed: The resolution should have been registered");let de=s.get(ge);if(!de)throw new Error("Assertion failed: The package could not be found");return de},te=(ae,ge,de,{top:xe,optional:we})=>{w.length>1e3&&V(),w.push(ge);let d=ie(ae,ge,de,{top:xe,optional:we});return w.pop(),d},ie=(ae,ge,de,{top:xe,optional:we})=>{if(we||n.delete(ge.locatorHash),a.has(ge.locatorHash))return;a.add(ge.locatorHash);let d=s.get(ge.locatorHash);if(!d)throw new Error(`Assertion failed: The package (${hn(t.configuration,ge)}) should have been registered`);let be=new Set,Ce=new Map,Ee=[],he=[],$=[],De=[];for(let Te of Array.from(d.dependencies.values())){if(d.peerDependencies.has(Te.identHash)&&d.locatorHash!==xe)continue;if(Np(Te))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");A.delete(Te.descriptorHash);let ot=we;if(!ot){let Qe=d.dependenciesMeta.get(Qn(Te));if(typeof Qe<"u"){let ft=Qe.get(null);typeof ft<"u"&&ft.optional&&(ot=!0)}}let j=r.get(Te.descriptorHash);if(!j)throw new Error(`Assertion failed: The resolution (${xi(t.configuration,Te)}) should have been registered`);let rt=U.get(j)||s.get(j);if(!rt)throw new Error(`Assertion failed: The package (${j}, resolved from ${xi(t.configuration,Te)}) should have been registered`);if(rt.peerDependencies.size===0){te(Te,rt,new Map,{top:xe,optional:ot});continue}let Ne,Fe,Pe=new Set,He=new Map;Ee.push(()=>{Ne=N9(Te,ge.locatorHash),Fe=O9(rt,ge.locatorHash),d.dependencies.set(Te.identHash,Ne),r.set(Ne.descriptorHash,Fe.locatorHash),e.set(Ne.descriptorHash,Ne),s.set(Fe.locatorHash,Fe),Tp(R,Fe.locatorHash).add(Ne.descriptorHash),be.add(Fe.locatorHash)}),he.push(()=>{N.set(Fe.locatorHash,He);for(let Qe of Fe.peerDependencies.values()){let Me=Rl(Ce,Qe.identHash,()=>{let x=de.get(Qe.identHash)??null,C=d.dependencies.get(Qe.identHash);return!C&&$S(ge,Qe)&&(ae.identHash===ge.identHash?C=ae:(C=oi(ge,ae.range),e.set(C.descriptorHash,C),r.set(C.descriptorHash,ge.locatorHash),A.delete(C.descriptorHash),x=null)),C||(C=oi(Qe,"missing:")),{subject:ge,ident:Qe,provided:C,root:!x,requests:new Map,hash:`p${Os(ge.locatorHash,Qe.identHash).slice(0,6)}`}}).provided;if(Me.range==="missing:"&&Fe.dependencies.has(Qe.identHash)){Fe.peerDependencies.delete(Qe.identHash);continue}if(He.set(Qe.identHash,{requester:Fe,descriptor:Qe,meta:Fe.peerDependenciesMeta.get(Qn(Qe)),children:new Map}),Fe.dependencies.set(Qe.identHash,Me),Np(Me)){let x=r.get(Me.descriptorHash);Tp(I,x).add(Fe.locatorHash)}v.set(Me.identHash,Me),Me.range==="missing:"&&Pe.add(Me.identHash)}Fe.dependencies=new Map(go(Fe.dependencies,([Qe,ft])=>Qn(ft)))}),$.push(()=>{if(!s.has(Fe.locatorHash))return;let Qe=m.get(rt.locatorHash);typeof Qe=="number"&&Qe>=2&&V();let ft=m.get(rt.locatorHash),Me=typeof ft<"u"?ft+1:1;m.set(rt.locatorHash,Me),te(Ne,Fe,He,{top:xe,optional:ot}),m.set(rt.locatorHash,Me-1)}),De.push(()=>{let Qe=r.get(Ne.descriptorHash);if(typeof Qe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let ft=N.get(Qe);if(typeof ft>"u")throw new Error("Assertion failed: Expected the peer requests to be registered");for(let Me of Ce.values()){let x=ft.get(Me.ident.identHash);x&&(Me.requests.set(Ne.descriptorHash,x),h.set(Me.hash,Me),Me.root||de.get(Me.ident.identHash)?.children.set(Ne.descriptorHash,x))}if(s.has(Fe.locatorHash))for(let Me of Pe)Fe.dependencies.delete(Me)})}for(let Te of[...Ee,...he])Te();for(let Te of be){be.delete(Te);let ot=s.get(Te),j=Os(Ww(ot).locatorHash,...Array.from(ot.dependencies.values(),Pe=>{let He=Pe.range!=="missing:"?r.get(Pe.descriptorHash):"missing:";if(typeof He>"u")throw new Error(`Assertion failed: Expected the resolution for ${xi(t.configuration,Pe)} to have been registered`);return He===xe?`${He} (top)`:He})),rt=D.get(j);if(typeof rt>"u"){D.set(j,ot);continue}let Ne=Tp(R,rt.locatorHash);for(let Pe of R.get(ot.locatorHash)??[])r.set(Pe,rt.locatorHash),Ne.add(Pe);s.delete(ot.locatorHash),a.delete(ot.locatorHash),be.delete(ot.locatorHash);let Fe=I.get(ot.locatorHash);if(Fe!==void 0){let Pe=Tp(I,rt.locatorHash);for(let He of Fe)Pe.add(He),be.add(He)}}for(let Te of[...$,...De])Te()};for(let ae of t.workspaces){let ge=ae.anchoredLocator;A.delete(ae.anchoredDescriptor.descriptorHash),te(ae.anchoredDescriptor,ge,new Map,{top:ge.locatorHash,optional:!1})}for(let ae of h.values()){if(!ae.root)continue;let ge=s.get(ae.subject.locatorHash);if(typeof ge>"u")continue;for(let xe of ae.requests.values()){let we=`p${Os(ae.subject.locatorHash,Qn(ae.ident),xe.requester.locatorHash).slice(0,6)}`;l.set(we,{subject:ae.subject.locatorHash,requested:ae.ident,rootRequester:xe.requester.locatorHash,allRequesters:Array.from(ib(xe),d=>d.requester.locatorHash)})}let de=[...ib(ae)];if(ae.provided.rang Line truncated
${[w,v,D].join(`
`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=Y.join(this.cwd,Or.lockfile),r=this.configuration.get("defaultLanguageName");if(fe.existsSync(e)){let s=await fe.readFilePromise(e,"utf8");this.lockFileChecksum=ECe(s);let a=Fs(s);if(a.__metadata){let n=a.__metadata.version,l=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<OO;for(let f of Object.keys(a)){if(f==="__metadata")continue;let h=a[f];if(typeof h.resolution>"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let A=Op(h.resolution,!0),m=new nr;m.load(h,{yamlCompatibilityMode:!0});let w=m.version,v=m.languageName||r,D=h.linkType.toUpperCase(),I=h.conditions??null,R=m.dependencies,N=m.peerDependencies,U=m.dependenciesMeta,V=m.peerDependenciesMeta,ee=m.bin;if(h.checksum!=null){let ie=typeof l<"u"&&!h.checksum.includes("/")?`${l}/${h.checksum}`:h.checksum;this.storedChecksums.set(A.locatorHash,ie)}let te={...A,version:w,languageName:v,linkType:D,conditions:I,dependencies:R,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:V,bin:ee};this.originalPackages.set(te.locatorHash,te);for(let ie of f.split(x0t)){let ae=q0(ie);n<=6&&(ae=this.configuration.normalizeDependency(ae),ae=oi(ae,ae.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(ae.descriptorHash,ae),this.storedResolutions.set(ae.descriptorHash,A.locatorHash)}}}else s.includes("yarn lockfile v1")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,NO.default)(4),s=async(a,n)=>{if(e.has(n))return a;e.add(n);let l=new xC(n,{project:this});await r(()=>l.setup());let f=a.then(()=>{this.addWorkspace(l)});return Array.from(l.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${vs(this.configuration,e.anchoredLocator)}: ${me.fromPortablePath(e.cwd)} conflicts with ${me.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){Y.isAbsolute(e)||(e=Y.resolve(this.cwd,e)),e=Y.normalize(e).replace(/\/+$/,"")||Rt.root;let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let s of this.workspaces)Y.relative(s.cwd,e).startsWith("../")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${vs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Gi.protocol)){let s=e.range.slice(Gi.protocol.length);if(s!=="^"&&s!=="~"&&s!=="*"&&!Vc(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(e);return r===null||(Np(e)&&(e=XS(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${xi(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(kf(e)&&(e=Ww(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${hn(this.configuration,e)})`);return r}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 r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<"u"&&!s.has(r)&&this.deleteLocator(r)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[r,s]of this.storedResolutions)s===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(s,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let l of n)this.deleteDescriptor(l)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,s]of e.dependencies)NLine truncated
`;switch(rt.type){case 0:Ne+=`# Script name: ${rt.script}
`;break;case 1:Ne+=`# Script code: ${rt.script}
`;break}let Fe=null;if(!await fe.mktempPromise(async He=>{let Qe=Y.join(He,"build.log"),{stdout:ft,stderr:Me}=this.configuration.getSubprocessStreams(Qe,{header:Ne,prefix:hn(this.configuration,$),report:r}),x;try{switch(rt.type){case 0:x=await GN($,rt.script,[],{cwd:j,project:this,stdin:Fe,stdout:ft,stderr:Me});break;case 1:x=await t7($,rt.script,[],{cwd:j,project:this,stdin:Fe,stdout:ft,stderr:Me});break}}catch(E){Me.write(E.stack),x=1}if(ft.end(),Me.end(),x===0)return!0;fe.detachTemp(He);let C=`${hn(this.configuration,$)} couldn't be built successfully (exit code ${or(this.configuration,x,Ct.NUMBER)}, logs can be found here: ${or(this.configuration,Qe,Ct.PATH)})`,P=this.optionalBuilds.has($.locatorHash);return P?r.reportInfo(9,C):r.reportError(9,C),PIe&&r.reportFold(me.fromPortablePath(Qe),fe.readFileSync(Qe,"utf8")),P}))return!1}return!0});Ee.push(...ot,Promise.allSettled(ot).then(j=>{te.delete(he),j.every(rt=>rt.status==="fulfilled"&&rt.value===!0)&&we.set($.locatorHash,Te)}))}if(await bf(Ee),Ce===te.size){let he=Array.from(te).map($=>{let De=this.storedPackages.get($);if(!De)throw new Error("Assertion failed: The package should have been registered");return hn(this.configuration,De)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${he})`);break}}this.storedBuildState=we,this.skippedBuilds=N}async installWithNewReport(e,r){return(await Wt.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get("nodeLinker");$e.telemetry?.reportInstall(r);let s=!1;if(await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{this.configuration.get("enableOfflineMode")&&e.report.reportWarning(90,"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it"),await this.configuration.triggerHook(m=>m.validateProject,this,{reportWarning:(m,w)=>{e.report.reportWarning(m,w)},reportError:(m,w)=>{e.report.reportError(m,w),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let m of a.values())for(let[,w]of m)for(let v of w)v.status="inactive";let n=Y.join(this.cwd,Or.lockfile),l=null;if(e.immutable)try{l=await fe.readFilePromise(n,"utf8")}catch(m){throw m.code==="ENOENT"?new Zt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):m}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{N0t(this,e.report);for(let[,m]of a)for(let[,w]of m)for(let v of w)if(v.userProvided){let D=or(this.configuration,v,Ct.PACKAGE_EXTENSION);switch(v.status){case"inactive":e.report.reportWarning(68,`${D}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${D}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(l!==null){let m=ty(l,this.generateLockfile());if(m!==l){let w=dCe(n,n,l,m,void 0,void 0,{maxEditLength:100});if(w){e.report.reportSeparator();for(let v of w.hunks){e.report.reportInfo(null,`@@ -${v.oldStart},${v.oldLines} +${v.newStart},${v.newLines} @@`);for(let D of v.lines)D.startsWith("+")?e.report.reportError(28,or(this.configuration,D,Ct.ADDED)):D.startsWith("-")?e.report.reportError(28,or(this.configuration,D,Ct.REMOVED)):e.report.reportInfo(null,or(this.configuration,D,"grey"))}e.report.reportSeparator()}throw new Zt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let m of a.values())for(let[,w]of m)for(let v of w)v.userProvided&&v.status==="active"&&$e.telemetry?.reportPackageExtension(Cy(v,Ct.PACKAGE_EXTENSION));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e)});let f=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],h=await Promise.all(f.map(async m=>TF(m,{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 ${or(this.configuration,"mode=update-lockfile",Ct.CODE)}`);return}await this.linkEverything(e);let m=await Promise.all(f.map(async w=>TF(w,{cwd:this.cwd})));for(let w=0;w<f.length;++w)h[w]!==m[w]&&e.report.reportError(64,`The checksum for ${f[w]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let A=!1;await e.report.startTimerPromise("Post-install validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(m=>m.validateProjectAfterInstall,this,{reportWarning:(m,w)=>{e.report.r Line truncated
`,`# Manual changes might be lost - proceed with caution!
`].join("")}
`+Uc(r)}async persistLockfile(){let e=Y.join(this.cwd,Or.lockfile),r="";try{r=await fe.readFilePromise(e,"utf8")}catch{}let s=this.generateLockfile(),a=ty(r,s);a!==r&&(await fe.writeFilePromise(e,a),this.lockFileChecksum=ECe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let l of Object.values(LV))e.push(...l);let r=Iy(this,e),s=_V.default.serialize(r),a=Os(s);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await fe.mkdirPromise(Y.dirname(n),{recursive:!0}),await fe.writeFilePromise(n,await R0t(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let l=await T0t(await fe.readFilePromise(a));n=_V.default.deserialize(l),this.installStateChecksum=Os(l)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,Iy(n,LV.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,Iy(n,LV.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new rs}),await this.persistInstallStateFile()}async persist(){let e=(0,NO.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get("enableGlobalCache"))return null;let s=new Set([".gitignore"]);if(!X9(e.cwd,this.cwd)||!await fe.existsPromise(e.cwd))return null;let a=[];for(let l of await fe.readdirPromise(e.cwd)){if(s.has(l))continue;let f=Y.resolve(e.cwd,l);e.markedFiles.has(f)||(e.immutable?r.reportError(56,`${or(this.configuration,Y.basename(f),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(fe.lstatPromise(f).then(async h=>(await fe.removePromise(f),h.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((l,f)=>l+f,0)}}}});function O0t(t){let s=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),l=n+a,f=t.state.lastTips??s*864e5,h=f+864e5+8*36e5-t.timeZone,A=l<=t.timeNow,m=h<=t.timeNow,w=null;return(A||m||!t.state.lastUpdate||!t.state.lastTips)&&(w={},w.lastUpdate=A?t.timeNow:n,w.lastTips=f,w.blocks=A?{}:t.state.blocks,w.displayedTips=t.state.displayedTips),{nextState:w,triggerUpdate:A,triggerTips:m,nextTips:m?s*864e5:f}}var kC,CCe=tt(()=>{Mt();Qb();G0();EN();Au();_p();kC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let s=this.getRegistryPath();this.isNew=!fe.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),s=f=>f&&Fn?Wh(Fn,f):!1,a=e.map((f,h)=>h).filter(f=>e[f]&&s(e[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(h=>!r.has(h))}let l=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(l),this.commitTips(),e[l]}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"<none>")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,r){Tp(this.values,e).add(r)}reportEnumerator(e,r){Tp(this.enumerators,e).add(Os(r))}reportHit(e,r="*"){let s=J5(this.hits,e),a=Rl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return Y.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),s;try{s=fe.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:l,nextTips:f}=O0t({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{fe.mkdirSync(Y.dirname(r),{recursive:!0}),fe.writeJsonSync(r,a)}catch{return!1}if(l&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let h=s.blocks??{};if(Object.keys(h).length===0){let A=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,m=w=>yq(A,w,{configuration:this.configuration}).catch(()=>{});for(let[w,v]of Object.entries(s.blocks??{})){if(Object.keys(v).length===0)continue;let D=v;D Line truncated
`),A=l.length;for(A>0&&l.includes("unstyle")&&(l=[...new Set(["unstyle",...l])].reverse());A-- >0;)f=r(t.styles[l[A]],f,h);return f},a=(n,l,f)=>{t.styles[n]=e({name:n,codes:l}),(t.keys[f]||(t.keys[f]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(A){t.alias(n,A)},get(){let A=m=>s(m,A.stack);return Reflect.setPrototypeOf(A,t),A.stack=this.stack?this.stack.concat(n):[n],A}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=H0t,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,l)=>{let f=typeof l=="string"?t[l]:l;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),t.styles[n]=f,f.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=A=>s(A,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(f.stack):f.stack,h}})},t.theme=n=>{if(!U0t(n))throw new TypeError("Expected theme to be an object");for(let l of Object.keys(n))t.alias(l,n[l]);return t},t.alias("unstyle",n=>typeof n=="string"&&n!==""?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,"")):""),t.alias("noop",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=PCe(),t.define=a,t};jV.exports=xCe();jV.exports.create=xCe});var va=H(On=>{"use strict";var j0t=Object.prototype.toString,vu=Mf(),kCe=!1,GV=[],RCe={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};On.longest=(t,e)=>t.reduce((r,s)=>Math.max(r,e?s[e].length:s.length),0);On.hasColor=t=>!!t&&vu.hasColor(t);var MO=On.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);On.nativeType=t=>j0t.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");On.isAsyncFn=t=>On.nativeType(t)==="asyncfunction";On.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";On.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;On.scrollDown=(t=[])=>[...t.slice(1),t[0]];On.scrollUp=(t=[])=>[t.pop(),...t];On.reorder=(t=[])=>{let e=t.slice();return e.sort((r,s)=>r.index>s.index?1:r.index<s.index?-1:0),e};On.swap=(t,e,r)=>{let s=t.length,a=r===s?0:r<0?s-1:r,n=t[e];t[e]=t[a],t[a]=n};On.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};On.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};On.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:s=`
`+r,width:a=80}=e,n=(s+r).match(/[^\S\n]/g)||[];a-=n.length;let l=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=t.trim(),h=new RegExp(l,"g"),A=f.match(h)||[];return A=A.map(m=>m.replace(/\n$/,"")),e.padEnd&&(A=A.map(m=>m.padEnd(a," "))),e.padStart&&(A=A.map(m=>m.padStart(a," "))),r+A.join(s)};On.unmute=t=>{let e=t.stack.find(s=>vu.keys.color.includes(s));return e?vu[e]:t.stack.find(s=>s.slice(2)==="bg")?vu[e.slice(2)]:s=>s};On.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";On.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>vu.keys.color.includes(s));if(e){let s=vu["bg"+On.pascal(e)];return s?s.black:t}let r=t.stack.find(s=>s.slice(0,2)==="bg");return r?vu[r.slice(2).toLowerCase()]||t:vu.none};On.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>vu.keys.color.includes(s)),r=t.stack.find(s=>s.slice(0,2)==="bg");if(e&&!r)return vu[RCe[e]||e];if(r){let s=r.slice(2).toLowerCase(),a=RCe[s];return a&&vu["bg"+On.pascal(a)]||t}return vu.none};On.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),s=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+s};On.set=(t={},e="",r)=>e.split(".").reduce((s,a,n,l)=>{let f=l.length-1>n?s[a]||{}:r;return!On.isObject(f)&&n<l.length-1&&(f={}),s[a]=f},t);On.get=(t={},e="",r)=>{let s=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return s??r};On.mixin=(t,e)=>{if(!MO(t))return e;if(!MO(e))return t;for(let r of Object.keys(e)){let s=Object.getOwnPropertyDescriptor(e,r);if(s.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&MO(s.value)){let a=Object.getOwnPropertyDescriptor(t,r);MO(a.value)?t[r]=On.merge({},t[r],e[r]):Reflect.defineProperty(t,r,s)}else Reflect.defineProperty(t,r,s);else Reflect.defineProperty(t,r,s)}return t};On.merge=(...t)=>{let e={};for(let r of t)On.mixin(e,r);return e};On.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a=="function"?On.define(t,s,a.bind(e)):On.define(t,s,a)}};On.onExit=t=>{let e=(r,s)=>{kCe||(kCe=!0,GV.forEach(a=>a()),r===!0&&process.exit(128+s))};GV.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),GV.push(t)};On.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};On.defineExport=(t,e,r)=>{let s;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var TCe=H(FC=>{"use strict";FC.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"};FC.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};FC.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};FC.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};FC.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 NCe=H((krr,FCe)=>{"use strict";var QCe=Ae("readline"),G0t=TCe(),q0t=/^(?:\x1b)([a-zA-Z0-9])$/,V0t=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,W0t={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 Y0t(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function K0t(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var UO=(t="",e={})=>{let r,s={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=s.sequence||""),s.sequence=s.sequence||t||s.name,t==="\r")s.raw=void 0,s.name="return";else if(t===`
`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(r=q0t.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=V0t.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),l=(r[3]||r[5]||1)-1;s.ctrl=!!(l&4),s.meta=!!(l&10),s.shift=!!(l&1),s.code=n,s.name=W0t[n],s.shift=Y0t(n)||s.shift,s.ctrl=K0t(n)||s.ctrl}return s};UO.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let s=QCe.createInterface({terminal:!0,input:r});QCe.emitKeypressEvents(r,s);let a=(f,h)=>e(f,UO(f,h),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),s.pause(),s.close()}};UO.action=(t,e,r)=>{let s={...G0t,...r};return e.ctrl?(e.action=s.ctrl[e.name],e):e.option&&s.option?(e.action=s.option[e.name],e):e.shift?(e.action=s.shift[e.name],e):(e.action=s.keys[e.name],e)};FCe.exports=UO});var LCe=H((Rrr,OCe)=>{"use strict";OCe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(e)for(let r of Object.keys(e)){let s=e[r];typeof s=="number"&&(s={interval:s}),z0t(t,r,s)}};function z0t(t,e,r={}){let s=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,t.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,"interval",{value:n}),t.once("close",()=>s.stop()),s.stop}});var MCe=H((Trr,_Ce)=>{"use strict";var{define:J0t,width:Z0t}=va(),qV=class{constructor(e){let r=e.options;J0t(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=Z0t(r.stdout||process.stdout),Object.assign(this,r),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 r=this._color||e[this.status];return typeof r=="function"?r: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"}};_Ce.exports=qV});var HCe=H((Qrr,UCe)=>{"use strict";var VV=va(),qo=Mf(),WV={default:qo.noop,noop:qo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||VV.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||VV.complement(this.primary)},primary:qo.cyan,success:qo.green,danger:qo.magenta,strong:qo.bold,warning:qo.yellow,muted:qo.dim,disabled:qo.gray,dark:qo.dim.gray,underline:qo.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};WV.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(qo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(qo.visible=t.styles.visible);let e=VV.merge({},WV,t.styles);delete e.merge;for(let r of Object.keys(qo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>qo[r]});for(let r of Object.keys(qo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>qo[r]});return e};UCe.exports=WV});var GCe=H((Frr,jCe)=>{"use strict";var YV=process.platform==="win32",Xp=Mf(),X0t=va(),KV={...Xp.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301", Line truncated
`),A=h[0],m=h[h.length-1],v=(s+(r?" "+r:"")).length,D=v<A.length?A.slice(v+1):"";return{header:l,prompt:A,after:D,rest:h.slice(1),last:m}}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 r=`
`+this.symbols.pointer+" ";typeof e=="string"?r+=e.trim():r+="Invalid input",this.state.error=`
`+this.styles.danger(r),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(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write($y.cursor.down(e.rest.length)),this.write(`
`.repeat(r))}catch{}this.emit("close")}start(){!this.stop&&this.options.show!==!1&&(this.stop=XV.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:r,result:s}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,s){let{options:a,state:n,symbols:l,timers:f}=this,h=f&&f[e];n.timer=h;let A=a[e]||n[e]||l[e],m=r&&r[e]!=null?r[e]:await A;if(m==="")return m;let w=await this.resolve(m,n,r,s);return!w&&r&&r[e]?this.resolve(A,n,r,s):w}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,Kc.isObject(e)&&(e=e[s.status]||e.pending),Kc.hasColor(e)?e:(this.styles[s.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return Kc.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=e[s.status]||e.pending||s.separator,n=await this.resolve(a,s);return Kc.isObject(n)&&(n=n[s.status]||n.pending),Kc.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let s=await this.element("pointer",e,r);if(typeof s=="string"&&Kc.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,l=n?a.primary:A=>A,f=await this.resolve(s[n?"on":"off"]||s,this.state),h=Kc.hasColor(f)?f:l(f);return n?h:" ".repeat(f.length)}}async indicator(e,r){let s=await this.element("indicator",e,r);if(typeof s=="string"&&Kc.hasColor(s))return s;if(s){let a=this.styles,n=e.enabled===!0,l=n?a.success:a.dark,f=s[n?"on":"off"]||s;return Kc.hasColor(f)?f:l(f)}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 Kc.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,...r){return Kc.resolve(this,e,...r)}get base(){return t.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Kc.height(this.stdout,25)}get width(){return this.options.columns||Kc.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:r}=this.state,s=[r,e].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return e=>new this(e).run()}};function agt(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],s=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n=="function"&&e(a)?s.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function cgt(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?`
`:" ",s=[];for(let a=0;a<4;a++){let n=r(a);e[a]?s.push(n.repeat(e[a])):s.push("")}return s}XCe.exports=$V});var t1e=H((Lrr,e1e)=>{"use strict";var lgt=va(),$Ce={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return $Ce.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};e1e.exports=(t,e={})=>{let r=lgt.merge({},$Ce,e.roles);return r[t]||r.default}});var pD=H((_rr,i1e)=>{"use strict";var ugt=Mf(),fgt=NC(),hgt=t1e(),HO=va(),{reorder:eW,scrollUp:Agt,scrollDown:pgt,isObject:r1e,swap:dgt}=HO,tW=class extends fgt{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:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");r1e(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(l,f)=>{typeof l=="function"&&(l=await l.call(this)),l instanceof Promise&&(l=await l);for(let h=0;h<l.length;h++){let A=l[h]=await this.toChoice(l[h],a++,f);s.push(A),A.choices&&await n(A.choices,A)}return s};return n(e,r).then(l=>(this.state.loadingChoices=!1,l))}async toChoice(e,r,s){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 a=e.value;if(e=hgt(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=r,e.cursor=0,HO.define(e,"parent",s),e.level=s?s.level+1:1,e.indent==null&&(e.indent=s?s.indent+" ":e.indent||""),e.path=s?s.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,ugt.unstyle(e.message).length));let l={...e};return e.reset=(f=l.input,h=l.value)=>{for(let A of Object.keys(l))e[A]=l[A];e.input=f,e.value=h},a==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,s){let a=await this.toChoice(e,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,s){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!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(r=>r.enabled);return this.choices.forEach(r=>r.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(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e. Line truncated
`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].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:r}=this.state,s="",a=await this.header(),n=await this.prefix(),l=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,l,""].join(" "),this.state.prompt=s);let h=await this.format(),A=await this.error()||await this.hint(),m=await this.renderChoices(),w=await this.footer();h&&(s+=h),A&&!s.includes(A)&&(s+=" "+A),e&&!h&&!m.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,m,w].filter(Boolean).join(`
`)),this.write(this.margin[2]),this.restore()}};s1e.exports=nW});var a1e=H((Urr,o1e)=>{"use strict";var mgt=hg(),ygt=(t,e)=>{let r=t.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),l=e(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+l+s.slice(n+r.length):s}},iW=class extends mgt{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:r,input:s}=this.state;return this.input=s.slice(0,r)+e+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.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,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let s=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}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,r=ygt(this.input,e),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};o1e.exports=iW});var oW=H((Hrr,c1e)=>{"use strict";var sW=va();c1e.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:s="",pos:a,showCursor:n=!0,color:l}=e,f=l||t.styles.placeholder,h=sW.inverse(t.styles.primary),A=R=>h(t.styles.black(R)),m=r,w=" ",v=A(w);if(t.blink&&t.blink.off===!0&&(A=R=>R,v=""),n&&a===0&&s===""&&r==="")return A(w);if(n&&a===0&&(r===s||r===""))return A(s[0])+f(s.slice(1));s=sW.isPrimitive(s)?`${s}`:"",r=sW.isPrimitive(r)?`${r}`:"";let D=s&&s.startsWith(r)&&s!==r,I=D?A(s[r.length]):v;if(a!==r.length&&n===!0&&(m=r.slice(0,a)+A(r[a])+r.slice(a+1),I=""),n===!1&&(I=""),D){let R=t.styles.unstyle(m+I);return m+I+f(s.slice(R.length))}return m+I}});var jO=H((jrr,l1e)=>{"use strict";var Egt=Mf(),Igt=hg(),wgt=oW(),aW=class extends Igt{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=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(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+e+a.slice(s),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:s}=e;return e.value=e.input=s.slice(0,r-1)+s.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:s}=e;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return e.value=e.input=a,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,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:s}=e;return r&&r.startsWith(s)&&s!==r?(e.value=e.input=r,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,r){let s=await this.resolve(e.separator,this.state,e,r)||":";return s?" "+this.styles.disabled(s):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:s,styles:a}=this,{cursor:n,initial:l="",name:f,hint:h,input:A=""}=e,{muted:m,submitted:w,primary:v,danger:D}=a,I=h,R=this.index===r,N=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),V=e.message;this.align==="right"&&(V=V.padStart(this.longest+1," ")),this.align==="left"&&(V=V.padEnd(this.longest+1," "));let ee=this.values[f]=A||l,te=A?"success":"dark";await N.call(e,ee,thi Line truncated
`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};d1e.exports=lW});var m1e=H((Wrr,g1e)=>{"use strict";var xgt=GO(),uW=class extends xgt{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};g1e.exports=uW});var E1e=H((Yrr,y1e)=>{"use strict";var kgt=hg(),Rgt=jO(),OC=Rgt.prototype,fW=class extends kgt{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():OC.dispatch.call(this,e,r)}append(e,r){return OC.append.call(this,e,r)}delete(e,r){return OC.delete.call(this,e,r)}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?OC.next.call(this):super.next()}prev(){return this.focused.editable?OC.prev.call(this):super.prev()}async indicator(e,r){let s=e.indicator||"",a=e.editable?s:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?OC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(s=r.enabled===!0),e=await r.validate(s,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 r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};y1e.exports=fW});var eE=H((Krr,I1e)=>{"use strict";var Tgt=NC(),Qgt=oW(),{isPrimitive:Fgt}=va(),hW=class extends Tgt{constructor(e){super(e),this.initial=Fgt(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!s||s.name!=="return")?this.append(`
`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+e+`${s}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.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 r=this.input.slice(0,e),s=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=s,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 r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):Qgt(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(" ");this.state.prompt=n;let l=await this.header(),f=await this.format(),h=await this.error()||await this.hint(),A=await this.footer();h&&!f.includes(h)&&(f+=" "+h),n+=" "+f,this.clear(e),this.write([l,n,A].filter(Boolean).join(`
`)),this.restore()}};I1e.exports=hW});var C1e=H((zrr,w1e)=>{"use strict";var Ngt=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),qO=t=>Ngt(t).filter(Boolean);w1e.exports=(t,e={},r="")=>{let{past:s=[],present:a=""}=e,n,l;switch(t){case"prev":case"undo":return n=s.slice(0,s.length-1),l=s[s.length-1]||"",{past:qO([r,...n]),present:l};case"next":case"redo":return n=s.slice(1),l=s[0]||"",{past:qO([...n,r]),present:l};case"save":return{past:qO([...s,r]),present:""};case"remove":return l=qO(s.filter(f=>f!==r)),a="",l.length&&(a=l.pop()),{past:l,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var pW=H((Jrr,v1e)=>{"use strict";var Ogt=eE(),B1e=C1e(),AW=class extends Ogt{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=B1e(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=B1e("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};v1e.exports=AW});var b1e=H((Zrr,S1e)=>{"use strict";var Lgt=eE(),dW=class extends Lgt{format(){return""}};S1e.exports=dW});var P1e=H((Xrr,D1e)=>{"use strict";var _gt=eE(),gW=class extends _gt{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:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};D1e.exports=gW});var k1e=H(($rr,x1e)=>{"use strict";var Mgt=hg(),mW=class extends Mgt{constructor(e){super({...e,multiple:!0})}};x1e.exports=mW});var EW=H((enr,R1e)=>{"use strict";var Ugt=eE(),yW=class extends Ugt{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 r=e||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(e){let r=e||this.minor,s=this.toNumber(this.input);return s<this.min-r?this.alert():(this.input=`${s-r}`,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(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};R1e.exports=yW});var Q1e=H((tnr,T1e)=>{T1e.exports=EW()});var N1e=H((rnr,F1e)=>{"use strict";var Hgt=eE(),IW=class extends Hgt{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)):""}};F1e.exports=IW});var _1e=H((nnr,L1e)=>{"use strict";var jgt=Mf(),Ggt=pD(),O1e=va(),wW=class extends Ggt{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 r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}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 r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s<this.scale.length;s++)r.scale.push({index:s})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,s){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(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(s=>` ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(`
`)}renderScaleHeading(e){let r=this.scale.map(h=>h.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let s=this.scaleLength-r.join("").length,a=Math.round(s/(r.length-1)),l=r.map(h=>this.styles.strong(h)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+l}scaleIndicator(e,r,s){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,s);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let s=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!O1e.hasColor(n)&&(n=this.styles.muted(n));let l=I=>this.margin[3]+I.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,h=this.indent(e),A=await this.resolve(e.message,this.state,e,r),m=await this.renderScale(e,r),w=this.margin[1]+this.margin[3];this.scaleLength=jgt.unstyle(m).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-w.length);let D=O1e.wordWrap(A,{width:this.widths[0],newline:f}).split(`
`).map(I=>l(I)+this.margin[1]);return s&&(m=this.styles.info(m),D=D.map(I=>this.styles.info(I))),D[0]+=m,this.linebreak&&D.push(""),[h+a,D.join(`
`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(" "))].join(`
`)}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),l="";this.options.promptLine!==!1&&(l=[s,n,a,""].join(" "),this.state.prompt=l);let f=await this.header(),h=await this.format(),A=await this.renderScaleKey(),m=await this.error()||await this.hint(),w=await this.renderChoices(),v=await this.footer(),D=this.emptyError;h&&(l+=h),m&&!l.includes(m)&&(l+=" "+m),e&&!h&&!w.trim()&&this.multiple&&D!=null&&(l+=this.styles.danger(D)),this.clear(r),this.write([f,l,A,w,v].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)}};L1e.exports=wW});var H1e=H((inr,U1e)=>{"use strict";var M1e=Mf(),qgt=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",BW=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=qgt(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},Vgt=async(t={},e={},r=s=>s)=>{let s=new Set,a=t.fields||[],n=t.template,l=[],f=[],h=[],A=1;typeof n=="function"&&(n=await n());let m=-1,w=()=>n[++m],v=()=>n[m+1],D=I=>{I.line=A,l.push(I)};for(D({type:"bos",value:""});m<n.length-1;){let I=w();if(/^[^\S\n ]$/.test(I)){D({type:"text",value:I});continue}if(I===`
`){D({type:"newline",value:I}),A++;continue}if(I==="\\"){I+=w(),D({type:"text",value:I});continue}if((I==="$"||I==="#"||I==="{")&&v()==="{"){let N=w();I+=N;let U={type:"template",open:I,inner:"",close:"",value:I},V;for(;V=w();){if(V==="}"){v()==="}"&&(V+=w()),U.value+=V,U.close=V;break}V===":"?(U.initial="",U.key=U.inner):U.initial!==void 0&&(U.initial+=V),U.value+=V,U.inner+=V}U.template=U.open+(U.initial||U.inner)+U.close,U.key=U.key||U.inner,e.hasOwnProperty(U.key)&&(U.initial=e[U.key]),U=r(U),D(U),h.push(U.key),s.add(U.key);let ee=f.find(te=>te.name===U.key);U.field=a.find(te=>te.name===U.key),ee||(ee=new BW(U),f.push(ee)),ee.lines.push(U.line-1);continue}let R=l[l.length-1];R.type==="text"&&R.line===A?R.value+=I:D({type:"text",value:I})}return D({type:"eos",value:""}),{input:n,tabstops:l,unique:s,keys:h,items:f}};U1e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),s={...e.values,...e.initial},{tabstops:a,items:n,keys:l}=await Vgt(e,s),f=CW("result",t,e),h=CW("format",t,e),A=CW("validate",t,e,!0),m=t.isValue.bind(t);return async(w={},v=!1)=>{let D=0;w.required=r,w.items=n,w.keys=l,w.output="";let I=async(V,ee,te,ie)=>{let ae=await A(V,ee,te,ie);return ae===!1?"Invalid field "+te.name:ae};for(let V of a){let ee=V.value,te=V.key;if(V.type!=="template"){ee&&(w.output+=ee);continue}if(V.type==="template"){let ie=n.find(we=>we.name===te);e.required===!0&&w.required.add(ie.name);let ae=[ie.input,w.values[ie.value],ie.value,ee].find(m),de=(ie.field||{}).message||V.inner;if(v){let we=await I(w.values[te],w,ie,D);if(we&&typeof we=="string"||we===!1){w.invalid.set(te,we);continue}w.invalid.delete(te);let d=await f(w.values[te],w,ie,D);w.output+=M1e.unstyle(d);continue}ie.placeholder=!1;let xe=ee;ee=await h(ee,w,ie,D),ae!==ee?(w.values[te]=ae,ee=t.styles.typing(ae),w.missing.delete(de)):(w.values[te]=void 0,ae=`<${de}>`,ee=t.styles.primary(ae),ie.placeholder=!0,w.required.has(te)&&w.missing.add(de)),w.missing.has(de)&&w.validating&&(ee=t.styles.warning(ae)),w.invalid.has(te)&&w.validating&&(ee=t.styles.danger(ae)),D===w.index&&(xe!==ee?ee=t.styles.underline(ee):ee=t.styles.heading(M1e.unstyle(ee))),D++}ee&&(w.output+=ee)}let R=w.output.split(`
`).map(V=>" "+V),N=n.length,U=0;for(let V of n)w.invalid.has(V.name)&&V.lines.forEach(ee=>{R[ee][0]===" "&&(R[ee]=w.styles.danger(w.symbols.bullet)+R[ee].slice(1))}),t.isValue(w.values[V.name])&&U++;return w.completed=(U/N*100).toFixed(0),w.output=R.join(`
`),w.output}};function CW(t,e,r,s){return(a,n,l,f)=>typeof l.field[t]=="function"?l.field[t].call(e,a,n,l,f):[s,a].find(h=>e.isValue(h))}});var G1e=H((snr,j1e)=>{"use strict";var Wgt=Mf(),Ygt=H1e(),Kgt=NC(),vW=class extends Kgt{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Ygt(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 r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),s=e.input.slice(0,this.cursor-1);this.input=e.input=`${s}${r}`,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 r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,`
`].find(V=>V!=null),l=await this.prefix(),f=await this.separator(),h=await this.message(),A=[l,h,f].filter(Boolean).join(" ");this.state.prompt=A;let m=await this.header(),w=await this.error()||"",v=await this.hint()||"",D=s?"":await this.interpolate(this.state),I=this.state.key=r[e]||"",R=await this.format(I),N=await this.footer();R&&(A+=" "+R),v&&!R&&this.state.completed===0&&(A+=" "+v),this.clear(a);let U=[m,A,D,N,w.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:s,index:a}=this.state,n=r.find(l=>l.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:s,values:a}=this.state;if(e.size){let f="";for(let[h,A]of e)f+=`Invalid ${h}: ${A}
`;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let l=Wgt.unstyle(s).split(`
`).map(f=>f.slice(1)).join(`
`);return this.value={values:a,result:l},super.submit()}};j1e.exports=vW});var V1e=H((onr,q1e)=>{"use strict";var zgt="(Use <shift>+<up/down> to sort)",Jgt=hg(),SW=class extends Jgt{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,zgt].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let s=await super.renderChoice(e,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};q1e.exports=SW});var Y1e=H((anr,W1e)=>{"use strict";var Zgt=pD(),bW=class extends Zgt{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(`
`)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let s of r)s.scale=Xgt(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],s=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!s,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,r){await this.onChoice(e,r);let s=this.index===r,a=this.term==="Hyper",n=a?9:8,l=a?"":" ",f=this.symbols.line.repeat(n),h=" ".repeat(n+(a?0:1)),A=ee=>(ee?this.styles.success("\u25C9"):"\u25EF")+l,m=r+1+".",w=s?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),D=this.indent(e),I=D+e.scale.map((ee,te)=>A(te===e.scaleIdx)).join(f),R=ee=>ee===e.scaleIdx?w(ee):ee,N=D+e.scale.map((ee,te)=>R(te)).join(h),U=()=>[m,v].filter(Boolean).join(" "),V=()=>[U(),I,N," "].filter(Boolean).join(`
`);return s&&(I=this.styles.cyan(I),N=this.styles.cyan(N)),V()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(`
`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),l=[s,n,a].filter(Boolean).join(" ");this.state.prompt=l;let f=await this.header(),h=await this.format(),A=await this.error()||await this.hint(),m=await this.renderChoices(),w=await this.footer();(h||!A)&&(l+=" "+h),A&&!l.includes(A)&&(l+=" "+A),e&&!h&&!m&&this.multiple&&this.type!=="form"&&(l+=this.styles.danger(this.emptyError)),this.clear(r),this.write([l,f,m,w].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 Xgt(t,e={}){if(Array.isArray(e.scale))return e.scale.map(s=>({...s}));let r=[];for(let s=1;s<t+1;s++)r.push({i:s,selected:!1});return r}W1e.exports=bW});var z1e=H((cnr,K1e)=>{K1e.exports=pW()});var Z1e=H((lnr,J1e)=>{"use strict";var $gt=GO(),DW=class extends $gt{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="",r){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=s=>this.styles.primary.underline(s);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,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),l=await this.format(),f=await this.error()||await this.hint(),h=await this.footer(),A=[s,n,a,l].join(" ");this.state.prompt=A,f&&!A.includes(f)&&(A+=" "+f),this.clear(e),this.write([r,A,h].filter(Boolean).join(`
`)),this.write(this.margin[2]),this.restore()}};J1e.exports=DW});var $1e=H((unr,X1e)=>{"use strict";var emt=hg(),PW=class extends emt{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,r){let s=await super.toChoices(e,r);if(s.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>s.length)throw new Error("Please specify the index of the correct answer from the list of choices");return s}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)}}};X1e.exports=PW});var t2e=H(xW=>{"use strict";var e2e=va(),ro=(t,e)=>{e2e.defineExport(xW,t,e),e2e.defineExport(xW,t.toLowerCase(),e)};ro("AutoComplete",()=>a1e());ro("BasicAuth",()=>p1e());ro("Confirm",()=>m1e());ro("Editable",()=>E1e());ro("Form",()=>jO());ro("Input",()=>pW());ro("Invisible",()=>b1e());ro("List",()=>P1e());ro("MultiSelect",()=>k1e());ro("Numeral",()=>Q1e());ro("Password",()=>N1e());ro("Scale",()=>_1e());ro("Select",()=>hg());ro("Snippet",()=>G1e());ro("Sort",()=>V1e());ro("Survey",()=>Y1e());ro("Text",()=>z1e());ro("Toggle",()=>Z1e());ro("Quiz",()=>$1e())});var n2e=H((hnr,r2e)=>{r2e.exports={ArrayPrompt:pD(),AuthPrompt:cW(),BooleanPrompt:GO(),NumberPrompt:EW(),StringPrompt:eE()}});var gD=H((Anr,s2e)=>{"use strict";var i2e=Ae("assert"),RW=Ae("events"),Ag=va(),Hf=class extends RW{constructor(e,r){super(),this.options=Ag.merge({},e),this.answers={...r}}register(e,r){if(Ag.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}i2e.equal(typeof r,"function","expected a function");let s=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(Ag.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=Ag.merge({},this.options,e),{type:s,name:a}=e,{set:n,get:l}=Ag;if(typeof s=="function"&&(s=await s.call(this,e,this.answers)),!s)return this.answers[a];i2e(this.prompts[s],`Prompt "${s}" is not registered`);let f=new this.prompts[s](r),h=l(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",m=>{this.emit("answer",a,m,f),n(this.answers,a,m)});let A=f.emit.bind(f);return f.emit=(...m)=>(this.emit.call(this,...m),A(...m)),this.emit("prompt",f,this),r.autofill&&h!=null?(f.value=f.input=h,r.autofill==="show"&&await f.submit()):h=f.value=await f.run(),h}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||NC()}static get prompts(){return t2e()}static get types(){return n2e()}static get prompt(){let e=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...l)=>(e.emit(...l),n(...l)),a.prompt(r)};return Ag.mixinEmitter(e,new RW),e}};Ag.mixinEmitter(Hf,new RW);var kW=Hf.prompts;for(let t of Object.keys(kW)){let e=t.toLowerCase(),r=s=>new kW[t](s).run();Hf.prompt[e]=r,Hf[e]=r,Hf[t]||Reflect.defineProperty(Hf,t,{get:()=>kW[t]})}var dD=t=>{Ag.defineExport(Hf,t,()=>Hf.types[t])};dD("ArrayPrompt");dD("AuthPrompt");dD("BooleanPrompt");dD("NumberPrompt");dD("StringPrompt");s2e.exports=Hf});var A2e=H((Oir,lmt)=>{lmt.exports={name:"@yarnpkg/cli",version:"4.18.0",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-catalog":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-jsr":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspa Line truncated
${V} at ${ee}`:`
${V}`}).join("");A.push({text:`Conflict detected in constraint targeting ${pe.pretty(t.configuration,D,pe.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=I,N=rc(v,D);if(JSON.stringify(N)===JSON.stringify(R))continue;if(!s){let U=typeof N>"u"?`Missing field ${pe.pretty(t.configuration,D,pe.Type.CODE)}; expected ${pe.pretty(t.configuration,R,pe.Type.INSPECT)}`:typeof R>"u"?`Extraneous field ${pe.pretty(t.configuration,D,pe.Type.CODE)} currently set to ${pe.pretty(t.configuration,N,pe.Type.INSPECT)}`:`Invalid field ${pe.pretty(t.configuration,D,pe.Type.CODE)}; expected ${pe.pretty(t.configuration,R,pe.Type.INSPECT)}, found ${pe.pretty(t.configuration,N,pe.Type.INSPECT)}`;A.push({text:U,fixable:!0});continue}typeof R>"u"?N0(v,D):Ey(v,D,R),m=!0}m&&a.set(w,v)}A.length>0&&n.set(w,A)}return{changedWorkspaces:a,remainingErrors:n}}function $2e(t,{configuration:e}){let r={children:[]};for(let[s,a]of t){let n=[];for(let f of a){let h=f.text.split(/\n/);f.fixable&&(h[0]=`${pe.pretty(e,"\u2699","gray")} ${h[0]}`),n.push({value:pe.tuple(pe.Type.NO_HINT,h[0]),children:h.slice(1).map(A=>({value:pe.tuple(pe.Type.NO_HINT,A)}))})}let l={value:pe.tuple(pe.Type.LOCATOR,s.anchoredLocator),children:Ye.sortMap(n,f=>f.value[1])};r.children.push(l)}return r.children=Ye.sortMap(r.children,s=>s.value[1]),r}var v1,iyt,syt,oyt,DD=tt(()=>{We();xl();v1=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let s=Object.hasOwn(e,r)?e[r]:void 0;if(typeof s>"u")continue;Ye.getArrayWithDefault(this.indexes[r],s).push(e)}return e}find(e){if(typeof e>"u")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let s=[],a;for(let[l,f]of r){let h=l,A=Object.hasOwn(this.indexes,h)?this.indexes[h]:void 0;if(typeof A>"u"){s.push([h,f]);continue}let m=new Set(A.get(f)??[]);if(m.size===0)return[];if(typeof a>"u")a=m;else for(let w of a)m.has(w)||a.delete(w);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(l=>{for(let[f,h]of s)if(!(typeof h<"u"?Object.hasOwn(l,f)&&l[f]===h:Object.hasOwn(l,f)===!1))return!1;return!0})),n}},iyt=/^[0-9]+$/,syt=/^[a-zA-Z0-9_]+$/,oyt=new Set(["scripts",...nr.allDependencies])});var eBe=H((wur,AY)=>{var lyt;(function(t){var e=function(){return{"append/2":[new t.type.Rule(new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("L")]),new t.type.Term("foldl",[new t.type.Term("append",[]),new t.type.Var("X"),new t.type.Term("[]",[]),new t.type.Var("L")]))],"append/3":[new t.type.Rule(new t.type.Term("append",[new t.type.Term("[]",[]),new t.type.Var("X"),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("append",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("append",[new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("S")]))],"member/2":[new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("_")])]),null),new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")])]),new t.type.Term("member",[new t.type.Var("X"),new t.type.Var("Xs")]))],"permutation/2":[new t.type.Rule(new t.type.Term("permutation",[new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("permutation",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("permutation",[new t.type.Var("T"),new t.type.Var("P")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("P")]),new t.type.Term("append",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("Y")]),new t.type.Var("S")])])]))],"maplist/2":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("X")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("Xs")])]))],"maplist/3":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs")])]))],"maplist/4":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Ter Line truncated
`+h:"")),l.error.method="_execFileSync",l.error.program=a,l.error.args=n,l.error.extMessage=h,l.error.exitCode=+f),ki.unlinkSync(A),ki.unlinkSync(m),ki.unlinkSync(w),ki.unlinkSync(v),l}function Ayt(t){var e,r={},s,a={env:process.env,encoding:t.encoding};if(pg||(nE?process.env.PSModulePath?(pg="powershell.exe",ZO=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(pg="cscript.exe",ZO=["//nologo",__dirname+"\\read.cs.js"]):(pg="/bin/sh",ZO=[__dirname+"/read.sh"])),nE&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),gY.execFileSync){e=sBe(t),PD&&PD("execFileSync",e);try{r.input=gY.execFileSync(pg,e,a)}catch(n){s=n.stderr?(n.stderr+"").trim():"",r.error=new Error(nBe+(s?`
`+s:"")),r.error.method="execFileSync",r.error.program=pg,r.error.args=e,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=hyt(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function EY(t){var e="",r=t.display,s=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Ayt(t);if(n.error)throw n.error;return n.input}return yY&&yY(t),function(){var n,l,f;function h(){return n||(n=process.binding("fs"),l=process.binding("constants")),n}if(typeof ed=="string")if(ed=null,nE){if(f=function(A){var m=A.replace(/^\D+/,"").split("."),w=0;return(m[0]=+m[0])&&(w+=m[0]*1e4),(m[1]=+m[1])&&(w+=m[1]*100),(m[2]=+m[2])&&(w+=m[2]),w}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),ed=process.stdin.fd,b1=process.stdin._handle;else try{ed=h().open("CONIN$",l.O_RDWR,parseInt("0666",8)),b1=new tBe(ed,!0)}catch{}if(process.stdout.isTTY)Gf=process.stdout.fd;else{try{Gf=ki.openSync("\\\\.\\CON","w")}catch{}if(typeof Gf!="number")try{Gf=h().open("CONOUT$",l.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{ed=ki.openSync("/dev/tty","r"),b1=process.stdin._handle}catch{}}else try{ed=ki.openSync("/dev/tty","r"),b1=new tBe(ed,!1)}catch{}if(process.stdout.isTTY)Gf=process.stdout.fd;else try{Gf=ki.openSync("/dev/tty","w")}catch{}}}(),function(){var n,l,f=!t.hideEchoBack&&!t.keyIn,h,A,m,w,v;XO="";function D(I){return I===rBe?!0:b1.setRawMode(I)!==0?!1:(rBe=I,!0)}if(iBe||!b1||typeof Gf!="number"&&(t.display||!f)){e=a();return}if(t.display&&(ki.writeSync(Gf,t.display),t.display=""),!t.displayOnly){if(!D(!f)){e=a();return}for(A=t.keyIn?1:t.bufferSize,h=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(A):new Buffer(A),t.keyIn&&t.limit&&(l=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){m=0;try{m=ki.readSync(ed,h,0,A)}catch(I){if(I.code!=="EOF"){D(!1),e+=a();return}}if(m>0?(w=h.toString(t.encoding,0,m),XO+=w):(w=`
`,XO+="\0"),w&&typeof(v=(w.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(w=v,n=!0),w&&(w=w.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),w&&l&&(w=w.replace(l,"")),w&&(f||(t.hideEchoBack?t.mask&&ki.writeSync(Gf,new Array(w.length+1).join(t.mask)):ki.writeSync(Gf,w)),e+=w),!t.keyIn&&n||t.keyIn&&e.length>=A)break}!f&&!s&&ki.writeSync(Gf,`
`),D(!1)}}(),t.print&&!s&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+`
`),t.encoding),t.displayOnly?"":CY=t.keepWhitespace||t.keyIn?e:e.trim()}function pyt(t,e){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!e||e(a))&&r.push(a))}return s(t),r}function BY(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Co(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(mY),t.unshift(mY))),t.reduce(function(s,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var l;if(a.hasOwnProperty(n))switch(l=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":l=l!=null?l+"":"",l&&n!=="limitMessage"&&(l=l.replace(/[\r\n]/g,"")),s[n]=l;break;case"bufferSize":!isNaN(l=parseInt(l,10))&&typeof l=="number"&&(s[n]=l);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":s[n]=!!l;break;case"limit":case"trueValue":case"falseValue":s[n]=pyt(l,function(f){var h=typeof f;return h==="string"||h==="number"||h==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":s[n]=typeof l=="function"?l:void 0;break;case"prompt":case"display":s[n]=l??"";break}})),s},{})}function IY(t,e,r){return e.some(function(s){var a=typeof s;return a==="string"?r?t===s:t.toLowerCase()===s.toLowerCase():a==="number"?parseFloat(t)===s:a==="function"?s(t):s instanceof RegExp?s.test(t):!1})}function vY(t,e){var r=dg.normalize(nE?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=dg.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+BY(r)+"(?=\\/|\\\\|$)",nE?"i":""),"~")}function D1(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",s=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(l,f,h,A,m,w){var v;return f||typeof(v=e(m))!="string"?h:v?(A||"")+v+(w||""):""}return t.replace(s,n).replace(a,n)}function oBe(t,e,r){var s,a=[],n=-1,l=0,f="",h;function A(m,w){return w.length>3?(m.push(w[0]+"..."+w[w.length-1]),h=!0):w.length&&(m=m.concat(w)),m}return s=t.reduce(function(m,w){return m.concat((w+"").split(""))},[]).reduce(function(m,w){var v,D;return e||(w=w.toLowerCase()),v=/^\d$/.test(w)?1:/^[A-Z]$/.test(w)?2:/^[a-z]$/.test(w)?3:0,r&&v===0?f+=w:(D=w.charCodeAt(0),v&&v===n&&D===l+1?a.push(w):(m=A(m,a),a=[w],n=v),l=D),m},[]),s=A(s,a),f&&(s.push(f),h=!0),{values:s,suppressed:h}}function aBe(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function cBe(t,e){var r,s,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!="string")switch(t){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=e.hasOwnProperty(t)?typeof e[t]=="boolean"?e[t]?"on":"off":e[t]+"":"";break;case"limit":case"trueValue":case"falseValue":s=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=oBe(s,e.caseSensitive),s=a.values):s=s.filter(function(l){var f=typeof l;return f==="string"||f==="number"}),r=aBe(s,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=CY;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=dg.basename(r):t==="cwdHome"&&(r=vY(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(l){return l.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=rE[rE.length-n]||"")}return r}function lBe(t){var e=/^(.)-(.)$/.exec(t),r="",s,a,n,l;if(!e)return null;for(s=e[1].charCodeAt(0),a=e[2].charCodeAt(0),l=s<a?1:-1,n=s;n!==a+l;n+=l)r+=String.fromCharCode(n);return r}function wY(t){var e=new RegExp(/(\s*)(?:("|')(.*?)(?:\2|$)|(\S+))/g),r,s="",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||"",r[1]&&(a.push(s),s=""),s+=n;return s&&a.push(s),a}function uBe(t,e){return e.trueValue.length&&IY(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&IY(t,e.falseValue,e.caseSensitive)?!1:t}function fBe(t){var e,r,s,a,n,l,f;function h(m){return cBe(m,t)}function A(m){t.display+=(/[^\r\n]$/.test(t.display)?`
`:"")+m}for(t.limitSrc=t.limit,t.displaySrc=t.display,t.limit="",t.display=D1(t.display+"",h);;){if(e=EY(t),r=!1,s="",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\s*\!(?:\!|-1)(:p)?\s*$/.exec(e))?(n=rE[0]||"",a[1]?r=!0:e=n,A(n+`
`),r||(t.displayOnly=!0,EY(t),t.displayOnly=!1)):e&&e!==rE[rE.length-1]&&(rE=[e])),!r&&t.cd&&e)switch(l=wY(e),l[0].toLowerCase()){case"cd":if(l[1])try{process.chdir(vY(l[1],!0))}catch(m){A(m+"")}r=!0;break;case"pwd":A(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(f=t.preCheck(e,t),e=f.res,f.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||IY(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(s=D1(t.limitMessage,h))}A((s?s+`
`:"")+D1(t.displaySrc+"",h))}return uBe(e,t)}wn._DBG_set_useExt=function(t){iBe=t};wn._DBG_set_checkOptions=function(t){yY=t};wn._DBG_set_checkMethod=function(t){PD=t};wn._DBG_clearHistory=function(){CY="",rE=[]};wn.setDefaultOptions=function(t){return mY=Co(!0,t),Co(!0)};wn.question=function(t,e){return fBe(Co(Co(!0,e),{display:t}))};wn.prompt=function(t){var e=Co(!0,t);return e.display=e.prompt,fBe(e)};wn.keyIn=function(t,e){var r=Co(Co(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(s){var a=typeof s;return a==="string"||a==="number"}).map(function(s){return D1(s+"",lBe)}),r.limit=BY(r.limitSrc.join("")),["trueValue","falseValue"].forEach(function(s){r[s]=r[s].reduce(function(a,n){var l=typeof n;return l==="string"||l==="number"?a=a.concat((n+"").split("")):a.push(n),a},[])}),r.display=D1(r.display+"",function(s){return cBe(s,r)}),uBe(EY(r),r)};wn.questionEMail=function(t,e){return t==null&&(t="Input e-mail address: "),wn.question(t,Co({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:"Input valid e-mail address, please.",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};wn.questionNewPassword=function(t,e){var r,s,a,n=Co({hideEchoBack:!0,mask:"*",limitMessage:`It can include: $<charlist>
And the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(D){return D==="charlist"?r.text:D==="length"?s+"..."+a:null}}),l,f,h,A,m,w,v;for(e=e||{},l=D1(e.charlist?e.charlist+"":"$<!-~>",lBe),(isNaN(s=parseInt(e.min,10))||typeof s!="number")&&(s=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),A=new RegExp("^["+BY(l)+"]{"+s+","+a+"}$"),r=oBe([l],n.caseSensitive,!0),r.text=aBe(r.values,r.suppressed),f=e.confirmMessage!=null?e.confirmMessage:"Reinput a same one to confirm it: ",h=e.unmatchMessage!=null?e.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",t==null&&(t="Input new password: "),m=n.limitMessage;!v;)n.limit=A,n.limitMessage=m,w=wn.question(t,n),n.limit=[w,""],n.limitMessage=h,v=wn.question(f,n);return w};function hBe(t,e,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s=="number"}return wn.question(t,Co({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),s}wn.questionInt=function(t,e){return hBe(t,e,function(r){return parseInt(r,10)})};wn.questionFloat=function(t,e){return hBe(t,e,parseFloat)};wn.questionPath=function(t,e){var r,s="",a=Co({hideEchoBack:!1,limitMessage:`$<error(
)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var l,f,h;n=vY(n,!0),s="";function A(m){m.split(/\/|\\/).reduce(function(w,v){var D=dg.resolve(w+=v+dg.sep);if(!ki.existsSync(D))ki.mkdirSync(D);else if(!ki.statSync(D).isDirectory())throw new Error("Non directory already exists: "+D);return w},"")}try{if(l=ki.existsSync(n),r=l?ki.realpathSync(n):dg.resolve(n),!e.hasOwnProperty("exists")&&!l||typeof e.exists=="boolean"&&e.exists!==l)return s=(l?"Already exists":"No such file or directory")+": "+r,!1;if(!l&&e.create&&(e.isDirectory?A(r):(A(dg.dirname(r)),ki.closeSync(ki.openSync(r,"w"))),r=ki.realpathSync(r)),l&&(e.min||e.max||e.isFile||e.isDirectory)){if(f=ki.statSync(r),e.isFile&&!f.isFile())return s="Not file: "+r,!1;if(e.isDirectory&&!f.isDirectory())return s="Not directory: "+r,!1;if(e.min&&f.size<+e.min||e.max&&f.size>+e.max)return s="Size "+f.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(h=e.validate(r))!==!0)return typeof h=="string"&&(s=h),!1}catch(m){return s=m+"",!1}return!0},phContent:function(n){return n==="error"?s:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),wn.question(t,a),r};function ABe(t,e){var r={},s={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(s[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=wY(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty("_")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=wY(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}wn.promptCL=function(t,e){var r=Co({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=ABe(t,r);return r.limit=s.limit,r.preCheck=s.preCheck,wn.prompt(r),s.args};wn.promptLoop=function(t,e){for(var r=Co({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(wn.prompt(r)););};wn.promptCLLoop=function(t,e){var r=Co({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=ABe(t,r);for(r.limit=s.limit,r.preCheck=s.preCheck;wn.prompt(r),!s.hRes;);};wn.promptSimShell=function(t){return wn.prompt(Co({hideEchoBack:!1,history:!0},t,{prompt:function(){return nE?"$<cwd>>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$<cwdHome>$ "}()}))};function pBe(t,e,r){var s;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),s=wn.keyIn(t,Co(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof s=="boolean"?s:""}wn.keyInYN=function(t,e){return pBe(t,e)};wn.keyInYNStrict=function(t,e){return pBe(t,e,"yn")};wn.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),wn.keyIn(t,Co({limit:null},e,{hideEchoBack:!0,mask:""}))};wn.keyInSelect=function(t,e,r){var s=Co({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(h){return h==="itemsCount"?t.length+"":h==="firstItem"?(t[0]+"").trim():h==="lastItem"?(t[t.length-1]+"").trim():null}}),a="",n={},l=49,f=`
`;if(!Array.isArray(t)||!t.length||t.length>35)throw"`items` must be Array (max length: 35).";return t.forEach(function(h,A){var m=String.fromCharCode(l);a+=m,n[m]=A,f+="["+m+"] "+(h+"").trim()+`
`,l=l===57?97:l+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+`
`),s.limit=a,f+=`
`,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$<limit>]: "),f+=e),n[wn.keyIn(f,s).toLowerCase()]};wn.getRawInput=function(){return XO};function xD(t,e){var r;return e.length&&(r={},r[t]=e[0]),wn.setDefaultOptions(r)[t]}wn.setPrint=function(){return xD("print",arguments)};wn.setPrompt=function(){return xD("prompt",arguments)};wn.setEncoding=function(){return xD("encoding",arguments)};wn.setMask=function(){return xD("mask",arguments)};wn.setBufferSize=function(){return xD("bufferSize",arguments)}});var SY=H((Bur,Nl)=>{(function(){var t={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(C,P,E){var F=tau_file_system.files[C];if(!F){if(E==="read")return null;F={path:C,text:"",type:P,get:function(Z,X){return X===this.text.length||X>this.text.length?"end_of_file":this.text.substring(X,X+Z)},put:function(Z,X){return X==="end_of_file"?(this.text+=Z,!0):X==="past_end_of_file"?null:(this.text=this.text.substring(0,X)+Z+this.text.substring(X+Z.length),!0)},get_byte:function(Z){if(Z==="end_of_stream")return-1;var X=Math.floor(Z/2);if(this.text.length<=X)return-1;var re=n(this.text[Math.floor(Z/2)],0);return Z%2===0?re&255:re/256>>>0},put_byte:function(Z,X){var re=X==="end_of_stream"?this.text.length:Math.floor(X/2);if(this.text.length<re)return null;var ce=this.text.length===re?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(ce=ce/256>>>0,ce=(ce&255)<<8|Z&255):(ce=ce&255,ce=(Z&255)<<8|ce&255),this.text.length===re?this.text+=l(ce):this.text=this.text.substring(0,re)+l(ce)+this.text.substring(re+1),!0},flush:function(){return!0},close:function(){var Z=tau_file_system.files[this.path];return Z?!0:null}},tau_file_system.files[C]=F}return E==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(C,P){for(var E;tau_user_input.buffer.length<C;)E=window.prompt(),E&&(tau_user_input.buffer+=E);return E=tau_user_input.buffer.substr(0,C),tau_user_input.buffer=tau_user_input.buffer.substr(C),E}},tau_user_output={put:function(C,P){return console.log(C),!0},flush:function(){return!0}},nodejs_file_system={open:function(C,P,E){var F=Ae("fs"),Z=F.openSync(C,E[0]);return E==="read"&&!F.existsSync(C)?null:{get:function(X,re){var ce=new Buffer(X);return F.readSync(Z,ce,0,X,re),ce.toString()},put:function(X,re){var ce=Buffer.from(X);if(re==="end_of_file")F.writeSync(Z,ce);else{if(re==="past_end_of_file")return null;F.writeSync(Z,ce,0,ce.length,re)}return!0},get_byte:function(X){return null},put_byte:function(X,re){return null},flush:function(){return!0},close:function(){return F.closeSync(Z),!0}}}},nodejs_user_input={buffer:"",get:function(C,P){for(var E,F=dBe();nodejs_user_input.buffer.length<C;)nodejs_user_input.buffer+=F.question();return E=nodejs_user_input.buffer.substr(0,C),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(C),E}},nodejs_user_output={put:function(C,P){return process.stdout.write(C),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(C,P){return C.indexOf(P)}:e=function(C,P){for(var E=C.length,F=0;F<E;F++)if(P===C[F])return F;return-1};var r=function(C,P){if(C.length!==0){for(var E=C[0],F=C.length,Z=1;Z<F;Z++)E=P(E,C[Z]);return E}},s;Array.prototype.map?s=function(C,P){return C.map(P)}:s=function(C,P){for(var E=[],F=C.length,Z=0;Z<F;Z++)E.push(P(C[Z]));return E};var a;Array.prototype.filter?a=function(C,P){return C.filter(P)}:a=function(C,P){for(var E=[],F=C.length,Z=0;Z<F;Z++)P(C[Z])&&E.push(C[Z]);return E};var n;String.prototype.codePointAt?n=function(C,P){return C.codePointAt(P)}:n=function(C,P){return C.charCodeAt(P)};var l;String.fromCodePoint?l=function(){return String.fromCodePoint.apply(null,arguments)}:l=function(){return String.fromCharCode.apply(null,arguments)};var f=0,h=1,A=/(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)|\\x([0-9a-fA-F]+)\\|\\([0-7]+)\\|(\\\\)|(\\')|('')|(\\")|(\\`)|(\\.)|(.)/g,m={"\\a":7,"\\b":8,"\\f":12,"\\n":10,"\\r":13,"\\t":9,"\\v":11};function w(C){var P=[],E=!1;return C.replace(A,function(F,Z,X,re,ce,ke,Le,pt,St,er,ur,Ht,Cn,Ur,kr,_,Ue){switch(!0){case St!==void 0:return P.push(parseInt(St,16)),"";case er!==void 0:return P.push(parseInt(er,8)),"";case ur!==void 0:case Ht!==void 0:case Cn!==void 0:case Ur!==void 0:case kr!==void 0:return P.push(n(F.substr(1),0)),"";case Ue!==void 0:return P.push(n(Ue,0)),"";case _!==void 0:E=!0;default:return P.push(m[F]),""}}),E?null:P}function v(C,P){var E="";if(C.length<2)return C;try{C=C.replace(/\\([0-7]+)\\/g,function(re,ce){return l(parseInt(ce,8))}),C=C.replace(/\\x([0-9a-fA-F]+)\\/g,function(re,ce){return l(parseInt(ce,16))})}catch{return null}for(var F=0;F<C.length;F++){var Z=C.charAt(F),X=C.charAt(F+1);if(Z===P&&X===P)F++,E+=P;else if(Z==="\\")if(["a","b","f","n","r","t","v","'",'"',"\\","a","\b","\f",`
`,"\r"," ","\v"].indexOf(X)!==-1)switch(F+=1,X){case"a":E+="a";break;case"b":E+="\b";break;case"f":E+="\f";break;case"n":E+=`
`;break;case"r":E+="\r";break;case"t":E+=" ";break;case"v":E+="\v";break;case"'":E+="'";break;case'"':E+='"';break;case"\\":E+="\\";break}else return null;else E+=Z}return E}function D(C){for(var P="",E=0;E<C.length;E++)switch(C.charAt(E)){case"'":P+="\\'";break;case"\\":P+="\\\\";break;case"\b":P+="\\b";break;case"\f":P+="\\f";break;case`
`:P+="\\n";break;case"\r":P+="\\r";break;case" ":P+="\\t";break;case"\v":P+="\\v";break;default:P+=C.charAt(E);break}return P}function I(C){var P=C.substr(2);switch(C.substr(0,2).toLowerCase()){case"0x":return parseInt(P,16);case"0b":return parseInt(P,2);case"0o":return parseInt(P,8);case"0'":return w(P)[0];default:return parseFloat(C)}}var R={whitespace:/^\s*(?:(?:%.*)|(?:\/\*(?:\n|\r|.)*?\*\/)|(?:\s+))\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\!|,|;|[a-z][0-9a-zA-Z_]*|[#\$\&\*\+\-\.\/\:\<\=\>\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function N(C,P){return C.get_flag("char_conversion").id==="on"?P.replace(/./g,function(E){return C.get_char_conversion(E)}):P}function U(C){this.thread=C,this.text="",this.tokens=[]}U.prototype.set_last_tokens=function(C){return this.tokens=C},U.prototype.new_text=function(C){this.text=C,this.tokens=[]},U.prototype.get_tokens=function(C){var P,E=0,F=0,Z=0,X=[],re=!1;if(C){var ce=this.tokens[C-1];E=ce.len,P=N(this.thread,this.text.substr(ce.len)),F=ce.line,Z=ce.start}else P=this.text;if(/^\s*$/.test(P))return null;for(;P!=="";){var ke=[],Le=!1;if(/^\n/.exec(P)!==null){F++,Z=0,E++,P=P.replace(/\n/,""),re=!0;continue}for(var pt in R)if(R.hasOwnProperty(pt)){var St=R[pt].exec(P);St&&ke.push({value:St[0],name:pt,matches:St})}if(!ke.length)return this.set_last_tokens([{value:P,matches:[],name:"lexical",line:F,start:Z}]);var ce=r(ke,function(Ur,kr){return Ur.value.length>=kr.value.length?Ur:kr});switch(ce.start=Z,ce.line=F,P=P.replace(ce.value,""),Z+=ce.value.length,E+=ce.value.length,ce.name){case"atom":ce.raw=ce.value,ce.value.charAt(0)==="'"&&(ce.value=v(ce.value.substr(1,ce.value.length-2),"'"),ce.value===null&&(ce.name="lexical",ce.value="unknown escape sequence"));break;case"number":ce.float=ce.value.substring(0,2)!=="0x"&&ce.value.match(/[.eE]/)!==null&&ce.value!=="0'.",ce.value=I(ce.value),ce.blank=Le;break;case"string":var er=ce.value.charAt(0);ce.value=v(ce.value.substr(1,ce.value.length-2),er),ce.value===null&&(ce.name="lexical",ce.value="unknown escape sequence");break;case"whitespace":var ur=X[X.length-1];ur&&(ur.space=!0),Le=!0;continue;case"r_bracket":X.length>0&&X[X.length-1].name==="l_bracket"&&(ce=X.pop(),ce.name="atom",ce.value="{}",ce.raw="{}",ce.space=!1);break;case"r_brace":X.length>0&&X[X.length-1].name==="l_brace"&&(ce=X.pop(),ce.name="atom",ce.value="[]",ce.raw="[]",ce.space=!1);break}ce.len=E,X.push(ce),Le=!1}var Ht=this.set_last_tokens(X);return Ht.length===0?null:Ht};function V(C,P,E,F,Z){if(!P[E])return{type:f,value:x.error.syntax(P[E-1],"expression expected",!0)};var X;if(F==="0"){var re=P[E];switch(re.name){case"number":return{type:h,len:E+1,value:new x.type.Num(re.value,re.float)};case"variable":return{type:h,len:E+1,value:new x.type.Var(re.value)};case"string":var ce;switch(C.get_flag("double_quotes").id){case"atom":ce=new j(re.value,[]);break;case"codes":ce=new j("[]",[]);for(var ke=re.value.length-1;ke>=0;ke--)ce=new j(".",[new x.type.Num(n(re.value,ke),!1),ce]);break;case"chars":ce=new j("[]",[]);for(var ke=re.value.length-1;ke>=0;ke--)ce=new j(".",[new x.type.Term(re.value.charAt(ke),[]),ce]);break}return{type:h,len:E+1,value:ce};case"l_paren":var Ht=V(C,P,E+1,C.__get_max_priority(),!0);return Ht.type!==h?Ht:P[Ht.len]&&P[Ht.len].name==="r_paren"?(Ht.len++,Ht):{type:f,derived:!0,value:x.error.syntax(P[Ht.len]?P[Ht.len]:P[Ht.len-1],") or operator expected",!P[Ht.len])};case"l_bracket":var Ht=V(C,P,E+1,C.__get_max_priority(),!0);return Ht.type!==h?Ht:P[Ht.len]&&P[Ht.len].name==="r_bracket"?(Ht.len++,Ht.value=new j("{}",[Ht.value]),Ht):{type:f,derived:!0,value:x.error.syntax(P[Ht.len]?P[Ht.len]:P[Ht.len-1],"} or operator expected",!P[Ht.len])}}var Le=ee(C,P,E,Z);return Le.type===h||Le.derived||(Le=te(C,P,E),Le.type===h||Le.derived)?Le:{type:f,derived:!1,value:x.error.syntax(P[E],"unexpected token")}}var pt=C.__get_max_priority(),St=C.__get_next_priority(F),er=E;if(P[E].name==="atom"&&P[E+1]&&(P[E].space||P[E+1].name!=="l_paren")){var re=P[E++],ur=C.__lookup_operator_classes(F,re.value);if(ur&&ur.indexOf("fy")>-1){var Ht=V(C,P,E,F,Z);if(Ht.type!==f)return re.value==="-"&&!re.space&&x.type.is_number(Ht.value)?{value:new x.type.Num(-Ht.value.value,Ht.value.is_float),len:Ht.len,type:h}:{value:new x.type.Term(re.value,[Ht.value]),len:Ht.len,type:h};X=Ht}else if(ur&&ur.indexOf("fx")>-1){var Ht=V(C,P,E,St,Z);if(Ht.type!==f)return{value:new x.type.Term(re.value,[Ht.value]),len:Ht.len,type:h};X=Ht}}E=er;var Ht=V(C,P,E,St,Z);if(Ht.type===h){E=Ht.len;var re=P[E];if(P[E]&&(P[E].name==="atom"&&C.__lookup_operator_classes(F,re.value)||P[E].name==="bar"&&C.__lookup_operator_classes(F,"|"))){var Cn=St,Ur=F,ur=C.__lookup_operator_classes(F,re.value);iLine truncated
`;P+=`
`;for(key in this.rules)for(E=0;E<this.rules[key].length;E++)P+=this.rules[key][E].toString(C),P+=`
`;return P},De.prototype.clone=function(){return new De(this.id)},Te.prototype.clone=function(){return new Te(this.value,this.is_float)},j.prototype.clone=function(){return new j(this.id,s(this.args,function(C){return C.clone()}))},Ne.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},Fe.prototype.clone=function(){var C={};for(var P in this.links)this.links.hasOwnProperty(P)&&(C[P]=this.links[P].clone());return new Fe(C)},Pe.prototype.clone=function(){return new Pe(this.goal.clone(),this.substitution.clone(),this.parent)},He.prototype.clone=function(){return new He(this.head.clone(),this.body!==null?this.body.clone():null)},De.prototype.equals=function(C){return x.type.is_variable(C)&&this.id===C.id},Te.prototype.equals=function(C){return x.type.is_number(C)&&this.value===C.value&&this.is_float===C.is_float},j.prototype.equals=function(C){if(!x.type.is_term(C)||this.indicator!==C.indicator)return!1;for(var P=0;P<this.args.length;P++)if(!this.args[P].equals(C.args[P]))return!1;return!0},Ne.prototype.equals=function(C){return x.type.is_stream(C)&&this.id===C.id},Fe.prototype.equals=function(C){var P;if(!x.type.is_substitution(C))return!1;for(P in this.links)if(this.links.hasOwnProperty(P)&&(!C.links[P]||!this.links[P].equals(C.links[P])))return!1;for(P in C.links)if(C.links.hasOwnProperty(P)&&!this.links[P])return!1;return!0},Pe.prototype.equals=function(C){return x.type.is_state(C)&&this.goal.equals(C.goal)&&this.substitution.equals(C.substitution)&&this.parent===C.parent},He.prototype.equals=function(C){return x.type.is_rule(C)&&this.head.equals(C.head)&&(this.body===null&&C.body===null||this.body!==null&&this.body.equals(C.body))},De.prototype.rename=function(C){return C.get_free_variable(this)},Te.prototype.rename=function(C){return this},j.prototype.rename=function(C){return new j(this.id,s(this.args,function(P){return P.rename(C)}))},Ne.prototype.rename=function(C){return this},He.prototype.rename=function(C){return new He(this.head.rename(C),this.body!==null?this.body.rename(C):null)},De.prototype.variables=function(){return[this.id]},Te.prototype.variables=function(){return[]},j.prototype.variables=function(){return[].concat.apply([],s(this.args,function(C){return C.variables()}))},Ne.prototype.variables=function(){return[]},He.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},De.prototype.apply=function(C){return C.lookup(this.id)?C.lookup(this.id):this},Te.prototype.apply=function(C){return this},j.prototype.apply=function(C){if(this.indicator==="./2"){for(var P=[],E=this;E.indicator==="./2";)P.push(E.args[0].apply(C)),E=E.args[1];for(var F=E.apply(C),Z=P.length-1;Z>=0;Z--)F=new j(".",[P[Z],F]);return F}return new j(this.id,s(this.args,function(X){return X.apply(C)}),this.ref)},Ne.prototype.apply=function(C){return this},He.prototype.apply=function(C){return new He(this.head.apply(C),this.body!==null?this.body.apply(C):null)},Fe.prototype.apply=function(C){var P,E={};for(P in this.links)this.links.hasOwnProperty(P)&&(E[P]=this.links[P].apply(C));return new Fe(E)},j.prototype.select=function(){for(var C=this;C.indicator===",/2";)C=C.args[0];return C},j.prototype.replace=function(C){return this.indicator===",/2"?this.args[0].indicator===",/2"?new j(",",[this.args[0].replace(C),this.args[1]]):C===null?this.args[1]:new j(",",[C,this.args[1]]):C},j.prototype.search=function(C){if(x.type.is_term(C)&&C.ref!==void 0&&this.ref===C.ref)return!0;for(var P=0;P<this.args.length;P++)if(x.type.is_term(this.args[P])&&this.args[P].search(C))return!0;return!1},Qe.prototype.get_current_input=function(){return this.current_input},ft.prototype.get_current_input=function(){return this.session.get_current_input()},Qe.prototype.get_current_output=function(){return this.current_output},ft.prototype.get_current_output=function(){return this.session.get_current_output()},Qe.prototype.set_current_input=function(C){this.current_input=C},ft.prototype.set_current_input=function(C){return this.session.set_current_input(C)},Qe.prototype.set_current_output=function(C){this.current_input=C},ft.prototype.set_current_output=function(C){return this.session.set_current_output(C)},Qe.prototype.get_stream_by_alias=function(C){return this.streams[C]},ft.prototype.get_stream_by_alias=function(C){return this.session.get_stream_by_alias(C)},Qe.prototype.file_system_open=function(C,P,E){return this.file_system.open(C,P,E)},ft.prototype.file_system_open=function(C,P,E){return this.session.file_system_open(C,P,E)},Qe.prototype.get_char_conversion=function(C){return this.__char_conversion[C]||C},ft.prototype.get_char_conversion=function(C){return this.session.get_char_conversion(C)},Qe.prototype.parse=function(C){return this.thread.parse(C)},ft.prototype.parse=function(C){var P=new U(this);P.new_text(C);var E=P.get_tokens();if(E===null)return!1;var F=V(this,E,0,this.__get_max_priority(),!1);return F Line truncated
`,[])])])),P.substitution,P)])},"nl/1":function(C,P,E){var F=E.args[0];C.prepend([new Pe(P.goal.replace(new j("put_char",[F,new j(`
`,[])])),P.substitution,P)])},"get_byte/1":function(C,P,E){var F=E.args[0];C.prepend([new Pe(P.goal.replace(new j(",",[new j("current_input",[new De("S")]),new j("get_byte",[new De("S"),F])])),P.substitution,P)])},"get_byte/2":function(C,P,E){var F=E.args[0],Z=E.args[1],X=x.type.is_stream(F)?F:C.get_stream_by_alias(F.id);if(x.type.is_variable(F))C.throw_error(x.error.instantiation(E.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_byte(Z))C.throw_error(x.error.type("in_byte",char,E.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))C.throw_error(x.error.domain("stream_or_alias",F,E.indicator));else if(!x.type.is_stream(X)||X.stream===null)C.throw_error(x.error.existence("stream",F,E.indicator));else if(X.output)C.throw_error(x.error.permission("input","stream",F,E.indicator));else if(X.type==="text")C.throw_error(x.error.permission("input","text_stream",F,E.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")C.throw_error(x.error.permission("input","past_end_of_stream",F,E.indicator));else{var re;if(X.position==="end_of_stream")re="end_of_file",X.position="past_end_of_stream";else{if(re=X.stream.get_byte(X.position),re===null){C.throw_error(x.error.representation("byte",E.indicator));return}X.position++}C.prepend([new Pe(P.goal.replace(new j("=",[new Te(re,!1),Z])),P.substitution,P)])}},"peek_byte/1":function(C,P,E){var F=E.args[0];C.prepend([new Pe(P.goal.replace(new j(",",[new j("current_input",[new De("S")]),new j("peek_byte",[new De("S"),F])])),P.substitution,P)])},"peek_byte/2":function(C,P,E){var F=E.args[0],Z=E.args[1],X=x.type.is_stream(F)?F:C.get_stream_by_alias(F.id);if(x.type.is_variable(F))C.throw_error(x.error.instantiation(E.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_byte(Z))C.throw_error(x.error.type("in_byte",char,E.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))C.throw_error(x.error.domain("stream_or_alias",F,E.indicator));else if(!x.type.is_stream(X)||X.stream===null)C.throw_error(x.error.existence("stream",F,E.indicator));else if(X.output)C.throw_error(x.error.permission("input","stream",F,E.indicator));else if(X.type==="text")C.throw_error(x.error.permission("input","text_stream",F,E.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")C.throw_error(x.error.permission("input","past_end_of_stream",F,E.indicator));else{var re;if(X.position==="end_of_stream")re="end_of_file",X.position="past_end_of_stream";else if(re=X.stream.get_byte(X.position),re===null){C.throw_error(x.error.representation("byte",E.indicator));return}C.prepend([new Pe(P.goal.replace(new j("=",[new Te(re,!1),Z])),P.substitution,P)])}},"put_byte/1":function(C,P,E){var F=E.args[0];C.prepend([new Pe(P.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("put_byte",[new De("S"),F])])),P.substitution,P)])},"put_byte/2":function(C,P,E){var F=E.args[0],Z=E.args[1],X=x.type.is_stream(F)?F:C.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(Z)?C.throw_error(x.error.instantiation(E.indicator)):x.type.is_byte(Z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?C.throw_error(x.error.domain("stream_or_alias",F,E.indicator)):!x.type.is_stream(X)||X.stream===null?C.throw_error(x.error.existence("stream",F,E.indicator)):X.input?C.throw_error(x.error.permission("output","stream",F,E.indicator)):X.type==="text"?C.throw_error(x.error.permission("output","text_stream",F,E.indicator)):X.stream.put_byte(Z.value,X.position)&&(typeof X.position=="number"&&X.position++,C.success(P)):C.throw_error(x.error.type("byte",Z,E.indicator))},"read/1":function(C,P,E){var F=E.args[0];C.prepend([new Pe(P.goal.replace(new j(",",[new j("current_input",[new De("S")]),new j("read_term",[new De("S"),F,new j("[]",[])])])),P.substitution,P)])},"read/2":function(C,P,E){var F=E.args[0],Z=E.args[1];C.prepend([new Pe(P.goal.replace(new j("read_term",[F,Z,new j("[]",[])])),P.substitution,P)])},"read_term/2":function(C,P,E){var F=E.args[0],Z=E.args[1];C.prepend([new Pe(P.goal.replace(new j(",",[new j("current_input",[new De("S")]),new j("read_term",[new De("S"),F,Z])])),P.substitution,P)])},"read_term/3":function(C,P,E){var F=E.args[0],Z=E.args[1],X=E.args[2],re=x.type.is_stream(F)?F:C.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))C.throw_error(x.error.instantiation(E.indicator));else if(!x.type.is_list(X))C.throw_error(x.error.type("list",X,E.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))C.throw_error(x.error.domain("stream_or_alias",F,E.indicator));else if(!x.type.is_stream(re)||re.stream===null)C.throw_error(x.error.existence("stream",F,E.indicator));else if(re.output)C.throw_error(x.error.permission("input","stream",F,E.indicator));else if(re.type==="binary")C.throw_error(x.error.permission("input","binary_stream",F,E.indicator));else if(re.position==="past_end_of_stream"&&re.eof_action==="error")C.throw_error(x.error.permission("input","past_end_of_stream",F,E.indicator));else{for(v Line truncated
`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;e+=`workspace(${mg(s)}).
`,e+=`workspace_ident(${mg(s)}, ${mg(G.stringifyIdent(r.anchoredLocator))}).
`,e+=`workspace_version(${mg(s)}, ${mg(r.manifest.version)}).
`;for(let a of wBe)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${mg(s)}, ${mg(G.stringifyIdent(n))}, ${mg(n.range)}, ${a}).
`}return e+=`workspace(_) :- false.
`,e+=`workspace_ident(_, _) :- false.
`,e+=`workspace_version(_, _) :- false.
`,e+=`workspace_has_dependency(_, _, _, _) :- false.
`,e}getDeclarations(){let e="";return e+=`gen_enforced_dependency(_, _, _, _) :- false.
`,e+=`gen_enforced_field(_, _, _) :- false.
`,e}get fullSource(){return`${this.getProjectDatabase()}
${this.source}
${this.getDeclarations()}`}createSession(){return new DY(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:l,dependencyType:f}of e){let h=bD([f,G.stringifyIdent(n)]),A=Ye.getMapWithDefault(s,a.cwd);Ye.getMapWithDefault(A,h).set(l??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:l}of r){let f=bD(n),h=Ye.getMapWithDefault(s,a.cwd);Ye.getMapWithDefault(h,f).set(JSON.parse(l)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=Y.resolve(this.project.cwd,iE(s.links.WorkspaceCwd)),n=iE(s.links.DependencyIdent),l=iE(s.links.DependencyRange),f=iE(s.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let h=this.project.getWorkspaceByCwd(a),A=G.parseIdent(n);r.push({workspace:h,dependencyIdent:A,dependencyRange:l,dependencyType:f})}return Ye.sortMap(r,[({dependencyRange:s})=>s!==null?"0":"1",({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>G.stringifyIdent(s)])}async genEnforcedFields(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=Y.resolve(this.project.cwd,iE(s.links.WorkspaceCwd)),n=iE(s.links.FieldPath),l=yyt(s.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:l})}return Ye.sortMap(r,[({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(e){let r=this.createSession();for await(let s of r.makeQuery(e)){let a={};for(let[n,l]of Object.entries(s.links))n!=="_"&&(a[n]=iE(l));yield a}}}});var QBe=H(rL=>{"use strict";Object.defineProperty(rL,"__esModule",{value:!0});function WD(t){let e=[...t.caches],r=e.shift();return r===void 0?TBe():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>WD({caches:e}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>WD({caches:e}).set(s,a))},delete(s){return r.delete(s).catch(()=>WD({caches:e}).delete(s))},clear(){return r.clear().catch(()=>WD({caches:e}).clear())}}}function TBe(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}rL.createFallbackableCache=WD;rL.createNullCache=TBe});var NBe=H((oAr,FBe)=>{FBe.exports=QBe()});var OBe=H(jY=>{"use strict";Object.defineProperty(jY,"__esModule",{value:!0});function Lyt(t={serializable:!0}){let e={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let l=s(),f=a&&a.miss||(()=>Promise.resolve());return l.then(h=>f(h)).then(()=>l)},set(r,s){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}jY.createInMemoryCache=Lyt});var _Be=H((cAr,LBe)=>{LBe.exports=OBe()});var UBe=H(qf=>{"use strict";Object.defineProperty(qf,"__esModule",{value:!0});function _yt(t,e,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===GY.WithinHeaders?s:{}},queryParameters(){return t===GY.WithinQueryParameters?s:{}}}}function Myt(t){let e=0,r=()=>(e++,new Promise(s=>{setTimeout(()=>{s(t(r))},Math.min(100*e,1e3))}));return t(r)}function MBe(t,e=(r,s)=>Promise.resolve()){return Object.assign(t,{wait(r){return MBe(t.then(s=>Promise.all([e(s,r),s])).then(s=>s[1]))}})}function Uyt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),s=t[e];t[e]=t[r],t[r]=s}return t}function Hyt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function jyt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Gyt="4.22.1",qyt=t=>()=>t.transporter.requester.destroy(),GY={WithinQueryParameters:0,WithinHeaders:1};qf.AuthMode=GY;qf.addMethods=Hyt;qf.createAuth=_yt;qf.createRetryablePromise=Myt;qf.createWaitablePromise=MBe;qf.destroy=qyt;qf.encode=jyt;qf.shuffle=Uyt;qf.version=Gyt});var YD=H((uAr,HBe)=>{HBe.exports=UBe()});var jBe=H(qY=>{"use strict";Object.defineProperty(qY,"__esModule",{value:!0});var Vyt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};qY.MethodEnum=Vyt});var KD=H((hAr,GBe)=>{GBe.exports=jBe()});var ive=H(ds=>{"use strict";Object.defineProperty(ds,"__esModule",{value:!0});var VBe=KD();function VY(t,e){let r=t||{},s=r.data||{};return Object.keys(r).forEach(a=>{["timeout","head Line truncated
`;f!==s&&(s=f,t.write(tbe.default.eraseLines(r)+f),r=f.split(`
`).length)};return n.clear=()=>{t.write(tbe.default.eraseLines(r)),s="",r=0},n.done=()=>{s="",r=0,e||(rbe.default.show(),a=!1)},n};sP.default={create:Mwt}});var sbe=H((epr,Uwt)=>{Uwt.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 cbe=H(Ol=>{"use strict";var abe=sbe(),nA=process.env;Object.defineProperty(Ol,"_vendors",{value:abe.map(function(t){return t.constant})});Ol.name=null;Ol.isPR=null;abe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(s){return obe(s)});if(Ol[t.constant]=r,r)switch(Ol.name=t.name,typeof t.pr){case"string":Ol.isPR=!!nA[t.pr];break;case"object":"env"in t.pr?Ol.isPR=t.pr.env in nA&&nA[t.pr.env]!==t.pr.ne:"any"in t.pr?Ol.isPR=t.pr.any.some(function(s){return!!nA[s]}):Ol.isPR=obe(t.pr);break;default:Ol.isPR=null}});Ol.isCI=!!(nA.CI||nA.CONTINUOUS_INTEGRATION||nA.BUILD_NUMBER||nA.RUN_ID||Ol.name);function obe(t){return typeof t=="string"?!!nA[t]:Object.keys(t).every(function(e){return nA[e]===t[e]})}});var ube=H((rpr,lbe)=>{"use strict";lbe.exports=cbe().isCI});var hbe=H((npr,fbe)=>{"use strict";var Hwt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};fbe.exports=(t,{include:e,exclude:r}={})=>{let s=a=>{let n=l=>typeof l=="string"?a===l:l.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of Hwt(t.constructor.prototype)){if(n==="constructor"||!s(n))continue;let l=Reflect.getOwnPropertyDescriptor(a,n);l&&typeof l.value=="function"&&(t[n]=t[n].bind(t))}return t}});var ybe=H(gi=>{"use strict";var J1,cP,CL,kK;typeof performance=="object"&&typeof performance.now=="function"?(Abe=performance,gi.unstable_now=function(){return Abe.now()}):(vK=Date,pbe=vK.now(),gi.unstable_now=function(){return vK.now()-pbe});var Abe,vK,pbe;typeof window>"u"||typeof MessageChannel!="function"?(z1=null,SK=null,bK=function(){if(z1!==null)try{var t=gi.unstable_now();z1(!0,t),z1=null}catch(e){throw setTimeout(bK,0),e}},J1=function(t){z1!==null?setTimeout(J1,0,t):(z1=t,setTimeout(bK,0))},cP=function(t,e){SK=setTimeout(t,e)},CL=function(){clearTimeout(SK)},gi.unstable_shouldYield=function(){return!1},kK=gi.unstable_forceFrameRate=function(){}):(dbe=window.setTimeout,gbe=window.clearTimeout,typeof console<"u"&&(mbe=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://reactjs.org/link/react-polyfills"),typeof mbe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),oP=!1,aP=null,EL=-1,DK=5,PK=0,gi.unstable_shouldYield=function(){return gi.unstable_now()>=PK},kK=function(){},gi.unstable_forceFrameRate=function(t){0>t||125<t?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):DK=0<t?Math Line truncated
`+Xu+S}var ve=!1;function Jt(S,b){if(!S||ve)return"";ve=!0;var T=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error()},Object.defineProperty(b.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(b,[])}catch(wt){var q=wt}Reflect.construct(S,[],b)}else{try{b.call()}catch(wt){q=wt}S.call(b.prototype)}else{try{throw Error()}catch(wt){q=wt}S()}}catch(wt){if(wt&&q&&typeof wt.stack=="string"){for(var z=wt.stack.split(`
`),oe=q.stack.split(`
`),Se=z.length-1,qe=oe.length-1;1<=Se&&0<=qe&&z[Se]!==oe[qe];)qe--;for(;1<=Se&&0<=qe;Se--,qe--)if(z[Se]!==oe[qe]){if(Se!==1||qe!==1)do if(Se--,qe--,0>qe||z[Se]!==oe[qe])return`
`+z[Se].replace(" at new "," at ");while(1<=Se&&0<=qe);break}}}finally{ve=!1,Error.prepareStackTrace=T}return(S=S?S.displayName||S.name:"")?Vl(S):""}var Wl=[],as=-1;function To(S){return{current:S}}function Vt(S){0>as||(S.current=Wl[as],Wl[as]=null,as--)}function ei(S,b){as++,Wl[as]=S.current,S.current=b}var Ha={},As=To(Ha),cs=To(!1),Ic=Ha;function Un(S,b){var T=S.type.contextTypes;if(!T)return Ha;var q=S.stateNode;if(q&&q.__reactInternalMemoizedUnmaskedChildContext===b)return q.__reactInternalMemoizedMaskedChildContext;var z={},oe;for(oe in T)z[oe]=b[oe];return q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=b,S.__reactInternalMemoizedMaskedChildContext=z),z}function Ei(S){return S=S.childContextTypes,S!=null}function $u(){Vt(cs),Vt(As)}function Ud(S,b,T){if(As.current!==Ha)throw Error(l(168));ei(As,b),ei(cs,T)}function wc(S,b,T){var q=S.stateNode;if(S=b.childContextTypes,typeof q.getChildContext!="function")return T;q=q.getChildContext();for(var z in q)if(!(z in S))throw Error(l(108,d(b)||"Unknown",z));return s({},T,q)}function Cc(S){return S=(S=S.stateNode)&&S.__reactInternalMemoizedMergedChildContext||Ha,Ic=As.current,ei(As,S),ei(cs,cs.current),!0}function Bc(S,b,T){var q=S.stateNode;if(!q)throw Error(l(169));T?(S=wc(S,b,Ic),q.__reactInternalMemoizedMergedChildContext=S,Vt(cs),Vt(As),ei(As,S)):Vt(cs),ei(cs,T)}var it=null,vc=null,ah=n.unstable_now;ah();var Yl=0,Yn=8;function ja(S){if(1&S)return Yn=15,1;if(2&S)return Yn=14,2;if(4&S)return Yn=13,4;var b=24&S;return b!==0?(Yn=12,b):S&32?(Yn=11,32):(b=192&S,b!==0?(Yn=10,b):S&256?(Yn=9,256):(b=3584&S,b!==0?(Yn=8,b):S&4096?(Yn=7,4096):(b=4186112&S,b!==0?(Yn=6,b):(b=62914560&S,b!==0?(Yn=5,b):S&67108864?(Yn=4,67108864):S&134217728?(Yn=3,134217728):(b=805306368&S,b!==0?(Yn=2,b):1073741824&S?(Yn=1,1073741824):(Yn=8,S))))))}function VA(S){switch(S){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function WA(S){switch(S){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(l(358,S))}}function Ga(S,b){var T=S.pendingLanes;if(T===0)return Yn=0;var q=0,z=0,oe=S.expiredLanes,Se=S.suspendedLanes,qe=S.pingedLanes;if(oe!==0)q=oe,z=Yn=15;else if(oe=T&134217727,oe!==0){var wt=oe&~Se;wt!==0?(q=ja(wt),z=Yn):(qe&=oe,qe!==0&&(q=ja(qe),z=Yn))}else oe=T&~Se,oe!==0?(q=ja(oe),z=Yn):qe!==0&&(q=ja(qe),z=Yn);if(q===0)return 0;if(q=31-ks(q),q=T&((0>q?0:1<<q)<<1)-1,b!==0&&b!==q&&!(b&Se)){if(ja(b),z<=Yn)return b;Yn=z}if(b=S.entangledLanes,b!==0)for(S=S.entanglements,b&=q;0<b;)T=31-ks(b),z=1<<T,q|=S[T],b&=~z;return q}function ll(S){return S=S.pendingLanes&-1073741825,S!==0?S:S&1073741824?1073741824:0}function rr(S,b){switch(S){case 15:return 1;case 14:return 2;case 12:return S=ti(24&~b),S===0?rr(10,b):S;case 10:return S=ti(192&~b),S===0?rr(8,b):S;case 8:return S=ti(3584&~b),S===0&&(S=ti(4186112&~b),S===0&&(S=512)),S;case 2:return b=ti(805306368&~b),b===0&&(b=268435456),b}throw Error(l(358,S))}function ti(S){return S&-S}function qa(S){for(var b=[],T=0;31>T;T++)b.push(S);return b}function Sc(S,b,T){S.pendingLanes|=b;var q=b-1;S.suspendedLanes&=q,S.pingedLanes&=q,S=S.eventTimes,b=31-ks(b),S[b]=T}var ks=Math.clz32?Math.clz32:zl,Kl=Math.log,ef=Math.LN2;function zl(S){return S===0?32:31-(Kl(S)/ef|0)|0}var bc=n.unstable_runWithPriority,ls=n.unstable_scheduleCallback,Ys=n.unstable_cancelCallback,ul=n.unstable_shouldYield,ch=n.unstable_requestPaint,Jl=n.unstable_now,zi=n.unstable_getCurrentPriorityLevel,ri=n.unstable_ImmediatePriority,Zl=n.unstable_UserBlockingPriority,et=n.unstable_NormalPriority,dt=n.unstable_LowPriority,_t=n.unstable_IdlePriority,Sr={},ne=ch!==void 0?ch:function(){},Be=null,_e=null,bt=!1,xt=Jl(),jt=1e4>xt?Jl:function(){return Jl()-xt};function Ir(){switch(zi()){case ri:return 99;case Zl:return 98;case et:return 97;case dt:return 96;case _t:return 95;default:throw Error(l(332))}}function Nn(S){switch(S){case 99:return ri;case 98:return Zl;case 97:return et;case 96:return dt;case 95:return _t;default:throw Error(l(332))}}function Qi(S,b){return S=Nn(S),bc(S,b)}function ps(S,b,T){return S=Nn(S),ls(S,b,T)}function ni(){if(_e!==null){var S=_e;_e=null,Ys(S)}Dc()}function Dc(){if(!bt&&Be!==null){bt=!0;var S=0;try{var b=Be;Qi(99,function(){for(;S<b.length;S++){var T=b[S];do T=T(!0);while(T!==null)}}),Be=null}catch(T){throw Be!==null&&(Be=Be.slice(S+1)),ls(ri,ni),T}finally{bt=!1}}}var mI=f.ReactCurrentBatchConfig;function Iv(S,b){return S===b&&(S!==0||1/S===1/b)||S!==S&&b!==b}var Xo=typeof Object.is=="function"?Object.is:Iv,yI=Object.prototype.hasOwnProperty;function Hd(S,b){if(Xo(S,b))return!0;if(typeof S!="object"||S===null||typeof b!="object"||b===null)return!1;var T=Object.keys(S),q=Object.keys(b);if(T.length!==q.length)return!1;for(q=0;q<T.length;q++)if(!yI.call(b,T[q])||!Xo(S[T[q]],b[T[q]]))return!1;return!0}function wv(S){switch(S.tag){case 5:return Vl(S.type);case 16:return Vl("Lazy" Line truncated
Error generating stack: `+oe.message+`
`+oe.stack}return{value:S,source:b,stack:z}}function xm(S,b){try{console.error(b.value)}catch(T){setTimeout(function(){throw T})}}var H8=typeof WeakMap=="function"?WeakMap:Map;function bv(S,b,T){T=hl(-1,T),T.tag=3,T.payload={element:null};var q=b.value;return T.callback=function(){UI||(UI=!0,Uv=q),xm(S,b)},T}function km(S,b,T){T=hl(-1,T),T.tag=3;var q=S.type.getDerivedStateFromError;if(typeof q=="function"){var z=b.value;T.payload=function(){return xm(S,b),q(z)}}var oe=S.stateNode;return oe!==null&&typeof oe.componentDidCatch=="function"&&(T.callback=function(){typeof q!="function"&&($l===null?$l=new Set([this]):$l.add(this),xm(S,b));var Se=b.stack;this.componentDidCatch(b.value,{componentStack:Se!==null?Se:""})}),T}var j8=typeof WeakSet=="function"?WeakSet:Set;function Dv(S){var b=S.ref;if(b!==null)if(typeof b=="function")try{b(null)}catch(T){Ch(S,T)}else b.current=null}function xI(S,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&S!==null){var T=S.memoizedProps,q=S.memoizedState;S=b.stateNode,b=S.getSnapshotBeforeUpdate(b.elementType===b.type?T:$o(b.type,T),q),S.__reactInternalSnapshotBeforeUpdate=b}return;case 3:F&&b.flags&256&&Er(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(l(163))}function e0(S,b){if(b=b.updateQueue,b=b!==null?b.lastEffect:null,b!==null){var T=b=b.next;do{if((T.tag&S)===S){var q=T.destroy;T.destroy=void 0,q!==void 0&&q()}T=T.next}while(T!==b)}}function DR(S,b,T){switch(T.tag){case 0:case 11:case 15:case 22:if(b=T.updateQueue,b=b!==null?b.lastEffect:null,b!==null){S=b=b.next;do{if((S.tag&3)===3){var q=S.create;S.destroy=q()}S=S.next}while(S!==b)}if(b=T.updateQueue,b=b!==null?b.lastEffect:null,b!==null){S=b=b.next;do{var z=S;q=z.next,z=z.tag,z&4&&z&1&&(HR(T,S),Z8(T,S)),S=q}while(S!==b)}return;case 1:S=T.stateNode,T.flags&4&&(b===null?S.componentDidMount():(q=T.elementType===T.type?b.memoizedProps:$o(T.type,b.memoizedProps),S.componentDidUpdate(q,b.memoizedState,S.__reactInternalSnapshotBeforeUpdate))),b=T.updateQueue,b!==null&&wI(T,b,S);return;case 3:if(b=T.updateQueue,b!==null){if(S=null,T.child!==null)switch(T.child.tag){case 5:S=Te(T.child.stateNode);break;case 1:S=T.child.stateNode}wI(T,b,S)}return;case 5:S=T.stateNode,b===null&&T.flags&4&&Ft(S,T.type,T.memoizedProps,T);return;case 6:return;case 4:return;case 12:return;case 13:X&&T.memoizedState===null&&(T=T.alternate,T!==null&&(T=T.memoizedState,T!==null&&(T=T.dehydrated,T!==null&&Zu(T))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(l(163))}function PR(S,b){if(F)for(var T=S;;){if(T.tag===5){var q=T.stateNode;b?Nt(q):Xt(T.stateNode,T.memoizedProps)}else if(T.tag===6)q=T.stateNode,b?hr(q):$t(q,T.memoizedProps);else if((T.tag!==23&&T.tag!==24||T.memoizedState===null||T===S)&&T.child!==null){T.child.return=T,T=T.child;continue}if(T===S)break;for(;T.sibling===null;){if(T.return===null||T.return===S)return;T=T.return}T.sibling.return=T.return,T=T.sibling}}function kI(S,b){if(vc&&typeof vc.onCommitFiberUnmount=="function")try{vc.onCommitFiberUnmount(it,b)}catch{}switch(b.tag){case 0:case 11:case 14:case 15:case 22:if(S=b.updateQueue,S!==null&&(S=S.lastEffect,S!==null)){var T=S=S.next;do{var q=T,z=q.destroy;if(q=q.tag,z!==void 0)if(q&4)HR(b,T);else{q=b;try{z()}catch(oe){Ch(q,oe)}}T=T.next}while(T!==S)}break;case 1:if(Dv(b),S=b.stateNode,typeof S.componentWillUnmount=="function")try{S.props=b.memoizedProps,S.state=b.memoizedState,S.componentWillUnmount()}catch(oe){Ch(b,oe)}break;case 5:Dv(b);break;case 4:F?TR(S,b):Z&&Z&&(b=b.stateNode.containerInfo,S=Tn(b),La(b,S))}}function xR(S,b){for(var T=b;;)if(kI(S,T),T.child===null||F&&T.tag===4){if(T===b)break;for(;T.sibling===null;){if(T.return===null||T.return===b)return;T=T.return}T.sibling.return=T.return,T=T.sibling}else T.child.return=T,T=T.child}function RI(S){S.alternate=null,S.child=null,S.dependencies=null,S.firstEffect=null,S.lastEffect=null,S.memoizedProps=null,S.memoizedState=null,S.pendingProps=null,S.return=null,S.updateQueue=null}function kR(S){return S.tag===5||S.tag===3||S.tag===4}function RR(S){if(F){e:{for(var b=S.return;b!==null;){if(kR(b))break e;b=b.return}throw Error(l(160))}var T=b;switch(b=T.stateNode,T.tag){case 5:var q=!1;break;case 3:b=b.containerInfo,q=!0;break;case 4:b=b.containerInfo,q=!0;break;default:throw Error(l(161))}T.flags&16&&(Lt(b),T.flags&=-17);e:t:for(T=S;;){for(;T.sibling===null;){if(T.return===null||kR(T.return)){T=null;break e}T=T.return}for(T.sibling.return=T.return,T=T.sibling;T.tag!==5&&T.tag!==6&&T.tag!==18;){if(T.flags&2||T.child===null||T.tag===4)continue t;T.child.return=T,T=T.child}if(!(T.flags&2)){T=T.stateNode;break e}}q?Pv(S,T,b):xv(S,T,b)}}function Pv(S,b,T){var q=S.tag,z=q===5||q===6;if(z)S=z?S.stateNode:S.stateNode.instance,b?Tt(T,S,b):Bt(T,S);else if(q!==4&&(S=S.child,S!==null))for(Pv(S,b,T),S=S.sibling;S!==null;)Pv(S,b,T),S=S.sibling}function xv(S,b,T){var q=S.tag,z=q===5||q===6;if(z)S=z?S.stateNode:S.stateNode.instance,b?Ze(T,S,b):lt(T,S);els Line truncated
Add a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`)}zs!==5&&(zs=2),wt=Pm(wt,qe),gr=Se;do{switch(gr.tag){case 3:oe=wt,gr.flags|=4096,b&=-b,gr.lanes|=b;var Bi=bv(gr,oe,b);II(gr,Bi);break e;case 1:oe=wt;var Zr=gr.type,ii=gr.stateNode;if(!(gr.flags&64)&&(typeof Zr.getDerivedStateFromError=="function"||ii!==null&&typeof ii.componentDidCatch=="function"&&($l===null||!$l.has(ii)))){gr.flags|=4096,b&=-b,gr.lanes|=b;var li=km(gr,oe,b);II(gr,li);break e}}gr=gr.return}while(gr!==null)}UR(T)}catch(yn){b=yn,Cs===T&&T!==null&&(Cs=T=T.return);continue}break}while(!0)}function _R(){var S=_I.current;return _I.current=qt,S===null?qt:S}function Um(S,b){var T=Kr;Kr|=16;var q=_R();Fo===S&&oo===b||i0(S,b);do try{Y8();break}catch(z){LR(S,z)}while(!0);if(gm(),Kr=T,_I.current=q,Cs!==null)throw Error(l(261));return Fo=null,oo=0,zs}function Y8(){for(;Cs!==null;)MR(Cs)}function K8(){for(;Cs!==null&&!ul();)MR(Cs)}function MR(S){var b=qR(S.alternate,S,op);S.memoizedProps=S.pendingProps,b===null?UR(S):Cs=b,Qv.current=null}function UR(S){var b=S;do{var T=b.alternate;if(S=b.return,b.flags&2048){if(T=U8(b),T!==null){T.flags&=2047,Cs=T;return}S!==null&&(S.firstEffect=S.lastEffect=null,S.flags|=2048)}else{if(T=M8(T,b,op),T!==null){Cs=T;return}if(T=b,T.tag!==24&&T.tag!==23||T.memoizedState===null||op&1073741824||!(T.mode&4)){for(var q=0,z=T.child;z!==null;)q|=z.lanes|z.childLanes,z=z.sibling;T.childLanes=q}S!==null&&!(S.flags&2048)&&(S.firstEffect===null&&(S.firstEffect=b.firstEffect),b.lastEffect!==null&&(S.lastEffect!==null&&(S.lastEffect.nextEffect=b.firstEffect),S.lastEffect=b.lastEffect),1<b.flags&&(S.lastEffect!==null?S.lastEffect.nextEffect=b:S.firstEffect=b,S.lastEffect=b))}if(b=b.sibling,b!==null){Cs=b;return}Cs=b=S}while(b!==null);zs===0&&(zs=5)}function ap(S){var b=Ir();return Qi(99,z8.bind(null,S,b)),null}function z8(S,b){do hf();while(Nm!==null);if(Kr&48)throw Error(l(327));var T=S.finishedWork;if(T===null)return null;if(S.finishedWork=null,S.finishedLanes=0,T===S.current)throw Error(l(177));S.callbackNode=null;var q=T.lanes|T.childLanes,z=q,oe=S.pendingLanes&~z;S.pendingLanes=z,S.suspendedLanes=0,S.pingedLanes=0,S.expiredLanes&=z,S.mutableReadLanes&=z,S.entangledLanes&=z,z=S.entanglements;for(var Se=S.eventTimes,qe=S.expirationTimes;0<oe;){var wt=31-ks(oe),cr=1<<wt;z[wt]=0,Se[wt]=-1,qe[wt]=-1,oe&=~cr}if(uf!==null&&!(q&24)&&uf.has(S)&&uf.delete(S),S===Fo&&(Cs=Fo=null,oo=0),1<T.flags?T.lastEffect!==null?(T.lastEffect.nextEffect=T,q=T.firstEffect):q=T:q=T.firstEffect,q!==null){z=Kr,Kr|=32,Qv.current=null,_m=rt(S.containerInfo),Mm=!1,Br=q;do try{J8()}catch(Ke){if(Br===null)throw Error(l(330));Ch(Br,Ke),Br=Br.nextEffect}while(Br!==null);_m=null,Br=q;do try{for(Se=S;Br!==null;){var qr=Br.flags;if(qr&16&&F&&Lt(Br.stateNode),qr&128){var rn=Br.alternate;if(rn!==null){var gr=rn.ref;gr!==null&&(typeof gr=="function"?gr(null):gr.current=null)}}switch(qr&1038){case 2:RR(Br),Br.flags&=-3;break;case 6:RR(Br),Br.flags&=-3,kv(Br.alternate,Br);break;case 1024:Br.flags&=-1025;break;case 1028:Br.flags&=-1025,kv(Br.alternate,Br);break;case 4:kv(Br.alternate,Br);break;case 8:qe=Se,oe=Br,F?TR(qe,oe):xR(qe,oe);var Ii=oe.alternate;RI(oe),Ii!==null&&RI(Ii)}Br=Br.nextEffect}}catch(Ke){if(Br===null)throw Error(l(330));Ch(Br,Ke),Br=Br.nextEffect}while(Br!==null);Mm&&pt(),Ne(S.containerInfo),S.current=T,Br=q;do try{for(qr=S;Br!==null;){var ji=Br.flags;if(ji&36&&DR(qr,Br.alternate,Br),ji&128){rn=void 0;var Fc=Br.ref;if(Fc!==null){var at=Br.stateNode;switch(Br.tag){case 5:rn=Te(at);break;default:rn=at}typeof Fc=="function"?Fc(rn):Fc.current=rn}}Br=Br.nextEffect}}catch(Ke){if(Br===null)throw Error(l(330));Ch(Br,Ke),Br=Br.nextEffect}while(Br!==null);Br=null,ne(),Kr=z}else S.current=T;if(wh)wh=!1,Nm=S,Om=b;else for(Br=q;Br!==null;)b=Br.nextEffect,Br.nextEffect=null,Br.flags&8&&(ji=Br,ji.sibling=null,ji.stateNode=null),Br=b;if(q=S.pendingLanes,q===0&&($l=null),q===1?S===Gv?Lm++:(Lm=0,Gv=S):Lm=0,T=T.stateNode,vc&&typeof vc.onCommitFiberRoot=="function")try{vc.onCommitFiberRoot(it,T,void 0,(T.current.flags&64)===64)}catch{}if(Ka(S,jt()),UI)throw UI=!1,S=Uv,Uv=null,S;return Kr&8||ni(),null}function J8(){for(;Br!==null;){var S=Br.alternate;Mm||_m===null||(Br.flags&8?De(Br,_m)&&(Mm=!0,Le()):Br.tag===13&&G8(S,Br)&&De(Br,_m)&&(Mm=!0,Le()));var b=Br.flags;b&256&&xI(S,Br),!(b&512)||wh||(wh=!0,ps(97,function(){return hf(),null})),Br=Br.nextEffect}}function hf(){if(Om!==90){var S=97<Om?97:Om;return Om=90,Qi(S,X8)}return!1}function Z8(S,b){Hv.push(b,S),wh||(wh=!0,ps(97,function(){return hf(),null}))}function HR(S,b){jv.push(b,S),wh||(wh=!0,ps(97,function(){return hf(),null}))}function X8(){if(Nm===null)return!1;var S=Nm;if(Nm=null,Kr&48)throw Error(l(331));var b=Kr;Kr|=32;var T=jv;jv=[];for(var q=0;q<T.length;q+=2){var z=T[q],oe=T[q+1],Se=z.destroy;if(z.destroy=void 0,typeof Se=="function")try{Se()}catch(wt){if(oe===null)throw Error(l(330));Ch(oe,wt)}}for(T=Hv,Hv=[],q=0;q<T.length;q+=2){z=T[q],oe=T[q+1];try{va Line truncated
`+(q.join(" > ")+`
No matching component was found for:
`)+S.join(" > ")}return null},r.getPublicRootInstance=function(S){if(S=S.current,!S.child)return null;switch(S.child.tag){case 5:return Te(S.child.stateNode);default:return S.child.stateNode}},r.injectIntoDevTools=function(S){if(S={bundleType:S.bundleType,version:S.version,rendererPackageName:S.rendererPackageName,rendererConfig:S.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:n3,findFiberByHostInstance:S.findFiberByHostInstance||i3,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")S=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!b.isDisabled&&b.supportsFiber)try{it=b.inject(S),vc=b}catch{}S=!0}return S},r.observeVisibleRects=function(S,b,T,q){if(!er)throw Error(l(363));S=Tv(S,b);var z=Ue(S,T,q).disconnect;return{disconnect:function(){z()}}},r.registerMutableSourceForHydration=function(S,b){var T=b._getVersion;T=T(b._source),S.mutableSourceEagerHydrationData==null?S.mutableSourceEagerHydrationData=[b,T]:S.mutableSourceEagerHydrationData.push(b,T)},r.runWithPriority=function(S,b){var T=Yl;try{return Yl=S,b()}finally{Yl=T}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(S,b){var T=Kr;Kr&=-2,Kr|=8;try{return S(b)}finally{Kr=T,Kr===0&&(Ih(),ni())}},r.updateContainer=function(S,b,T,q){var z=b.current,oe=ia(),Se=Js(z);e:if(T){T=T._reactInternals;t:{if(be(T)!==T||T.tag!==1)throw Error(l(170));var qe=T;do{switch(qe.tag){case 3:qe=qe.stateNode.context;break t;case 1:if(Ei(qe.type)){qe=qe.stateNode.__reactInternalMemoizedMergedChildContext;break t}}qe=qe.return}while(qe!==null);throw Error(l(171))}if(T.tag===1){var wt=T.type;if(Ei(wt)){T=wc(T,wt,qe);break e}}T=qe}else T=Ha;return b.context===null?b.context=T:b.pendingContext=T,b=hl(oe,Se),b.payload={element:S},q=q===void 0?null:q,q!==null&&(b.callback=q),Al(z,b),yl(z,Se,oe),Se},r}});var Cbe=H((apr,wbe)=>{"use strict";wbe.exports=Ibe()});var vbe=H((cpr,Bbe)=>{"use strict";var qwt={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};Bbe.exports=qwt});var Pbe=H((lpr,Dbe)=>{"use strict";var Vwt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},SL=function(){function t(e,r){for(var s=0;s<r.length;s++){var a=r[s];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,s){return r&&t(e.prototype,r),s&&t(e,s),e}}();function OK(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function LK(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var Wf=vbe(),Wwt=function(){function t(e,r,s,a,n,l){LK(this,t),this.left=e,this.right=r,this.top=s,this.bottom=a,this.width=n,this.height=l}return SL(t,[{key:"fromJS",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:"toString",value:function(){return"<Layout#"+this.left+":"+this.right+";"+this.top+":"+this.bottom+";"+this.width+":"+this.height+">"}}]),t}(),Sbe=function(){SL(t,null,[{key:"fromJS",value:function(r){var s=r.width,a=r.height;return new t(s,a)}}]);function t(e,r){LK(this,t),this.width=e,this.height=r}return SL(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toStri Line truncated
`+Module.extraStackTrace()),demangleAll(t)}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(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e();continue}var r=e.func;typeof r=="number"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.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(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var s=r>0?r:lengthBytesUTF8(t)+1,a=new Array(s),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var s=t[r];s>255&&(s&=255),e.push(String.fromCharCode(s))}return e.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var s,a;r&&(a=e+lengthBytesUTF8(t),s=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var s=0;s<t.length;++s)HEAP8[e++>>0]=t.charCodeAt(s);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var s=e>>>16,a=e&65535,n=r>>>16,l=r&65535;return a*l+(s*l+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),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.cei Line truncated
If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+t+") at "+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,t)}),r}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 uE=H((fpr,kbe)=>{"use strict";var Ywt=Pbe(),Kwt=xbe(),_K=!1,MK=null;Kwt({},function(t,e){if(!_K){if(_K=!0,t)throw t;MK=e}});if(!_K)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");kbe.exports=Ywt(MK.bind,MK.lib)});var HK=H((hpr,UK)=>{"use strict";var Rbe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);UK.exports=Rbe;UK.exports.default=Rbe});var Qbe=H((Apr,Tbe)=>{"use strict";Tbe.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[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E Line truncated
`))e=Math.max(e,Xwt(r));return e};GK.exports=Nbe;GK.exports.default=Nbe});var Obe=H(hP=>{"use strict";var $wt=hP&&hP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hP,"__esModule",{value:!0});var eCt=$wt(qK()),VK={};hP.default=t=>{if(t.length===0)return{width:0,height:0};if(VK[t])return VK[t];let e=eCt.default(t),r=t.split(`
`).length;return VK[t]={width:e,height:r},{width:e,height:r}}});var Lbe=H(AP=>{"use strict";var tCt=AP&&AP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(AP,"__esModule",{value:!0});var Xn=tCt(uE()),rCt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?Xn.default.POSITION_TYPE_ABSOLUTE:Xn.default.POSITION_TYPE_RELATIVE)},nCt=(t,e)=>{"marginLeft"in e&&t.setMargin(Xn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(Xn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(Xn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(Xn.default.EDGE_BOTTOM,e.marginBottom||0)},iCt=(t,e)=>{"paddingLeft"in e&&t.setPadding(Xn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(Xn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(Xn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(Xn.default.EDGE_BOTTOM,e.paddingBottom||0)},sCt=(t,e)=>{var r;"flexGrow"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in e&&t.setFlexShrink(typeof e.flexShrink=="number"?e.flexShrink:1),"flexDirection"in e&&(e.flexDirection==="row"&&t.setFlexDirection(Xn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(Xn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(Xn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(Xn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in e&&(typeof e.flexBasis=="number"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),"alignItems"in e&&((e.alignItems==="stretch"||!e.alignItems)&&t.setAlignItems(Xn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(Xn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(Xn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(Xn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(Xn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(Xn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(Xn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(Xn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(Xn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(Xn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(Xn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(Xn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(Xn.default.JUSTIFY_SPACE_AROUND))},oCt=(t,e)=>{var r,s;"width"in e&&(typeof e.width=="number"?t.setWidth(e.width):typeof e.width=="string"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),"height"in e&&(typeof e.height=="number"?t.setHeight(e.height):typeof e.height=="string"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),"minWidth"in e&&(typeof e.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in e&&(typeof e.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((s=e.minHeight)!==null&&s!==void 0?s:0))},aCt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?Xn.default.DISPLAY_FLEX:Xn.default.DISPLAY_NONE)},cCt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(Xn.default.EDGE_TOP,r),t.setBorder(Xn.default.EDGE_BOTTOM,r),t.setBorder(Xn.default.EDGE_LEFT,r),t.setBorder(Xn.default.EDGE_RIGHT,r)}};AP.default=(t,e={})=>{rCt(t,e),nCt(t,e),iCt(t,e),sCt(t,e),oCt(t,e),aCt(t,e),cCt(t,e)}});var Ube=H((ypr,Mbe)=>{"use strict";var pP=fP(),lCt=CQ(),uCt=fQ(),YK=new Set(["\x1B","\x9B"]),fCt=39,_be=t=>`${YK.values().next().value}[${t}m`,hCt=t=>t.split(" ").map(e=>pP(e)),WK=(t,e,r)=>{let s=[...e],a=!1,n=pP(lCt(t[t.length-1]));for(let[l,f]of s.entries()){let h=pP(f);if(n+h<=r?t[t.length-1]+=f:(t.push(f),n=0),YK.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=h,n===r&&l<s.length-1&&(t.push(""),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},ACt=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(pP(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},pCt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let s="",a="",n,l=hCt(t),f=[""];for(let[h,A]of t.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let m=pP(f[f.length-1]);if(h!==0&&(m>=e&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),m=0),(m>0||r.trim===!1)&&(f[f.length-1]+=" ",m++)),r.hard&&l[h]>e){let w=e-m,v=1+Math.floor((l[h]-w-1)/e);Math.floor((l[h]-1)/e)<v&&f.push(""),WK(f,A,e);continue}if(m+l[h]>e&&m>0&&l[h]>0){if(r.wordWrap===!1&&m<e){WK(f,A,e);continue}f.push("")}if(m+l[h]>e&&r.wordWrap===!1){WK(f,A,e);continue}f[f. Line truncated
`);for(let[h,A]of[...s].entries()){if(a+=A,YK.has(A)){let w=parseFloat(/\d[^m]*/.exec(s.slice(h,h+4)));n=w===fCt?null:w}let m=uCt.codes.get(Number(n));n&&m&&(s[h+1]===`
`?a+=_be(m):A===`
`&&(a+=_be(n)))}return a};Mbe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,`
`).split(`
`).map(s=>pCt(s,e,r)).join(`
`)});var Gbe=H((Epr,jbe)=>{"use strict";var Hbe="[\uD800-\uDBFF][\uDC00-\uDFFF]",dCt=t=>t&&t.exact?new RegExp(`^${Hbe}$`):new RegExp(Hbe,"g");jbe.exports=dCt});var KK=H((Ipr,Ybe)=>{"use strict";var gCt=HK(),mCt=Gbe(),qbe=fQ(),Wbe=["\x1B","\x9B"],bL=t=>`${Wbe[0]}[${t}m`,Vbe=(t,e,r)=>{let s=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let l=qbe.codes.get(parseInt(a,10));if(l){let f=t.indexOf(l.toString());f>=0?t.splice(f,1):s.push(bL(e?l:n))}else if(e){s.push(bL(0));break}else s.push(bL(n))}if(e&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=bL(qbe.codes.get(parseInt(r,10)));s=s.reduce((n,l)=>l===a?[l,...n]:[...n,l],[])}return s.join("")};Ybe.exports=(t,e,r)=>{let s=[...t.normalize()],a=[];r=typeof r=="number"?r:s.length;let n=!1,l,f=0,h="";for(let[A,m]of s.entries()){let w=!1;if(Wbe.includes(m)){let v=/\d[^m]*/.exec(t.slice(A,A+18));l=v&&v.length>0?v[0]:void 0,f<r&&(n=!0,l!==void 0&&a.push(l))}else n&&m==="m"&&(n=!1,w=!0);if(!n&&!w&&++f,!mCt({exact:!0}).test(m)&&gCt(m.codePointAt())&&++f,f>e&&f<=r)h+=m;else if(f===e&&!n&&l!==void 0)h=Vbe(a);else if(f>=r){h+=Vbe(a,!0,l);break}}return h}});var zbe=H((wpr,Kbe)=>{"use strict";var wg=KK(),yCt=fP();function DL(t,e,r){if(t.charAt(e)===" ")return e;for(let s=1;s<=3;s++)if(r){if(t.charAt(e+s)===" ")return e+s}else if(t.charAt(e-s)===" ")return e-s;return e}Kbe.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,l="\u2026",f=1;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof t}`);if(typeof e!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof e}`);if(e<1)return"";if(e===1)return l;let h=yCt(t);if(h<=e)return t;if(s==="start"){if(n){let A=DL(t,h-e+1,!0);return l+wg(t,A,h).trim()}return a===!0&&(l+=" ",f=2),l+wg(t,h-e+f,h)}if(s==="middle"){a===!0&&(l=" "+l+" ",f=3);let A=Math.floor(e/2);if(n){let m=DL(t,A),w=DL(t,h-(e-A)+1,!0);return wg(t,0,m)+l+wg(t,w,h).trim()}return wg(t,0,A)+l+wg(t,h-(e-A)+f,h)}if(s==="end"){if(n){let A=DL(t,e-1);return wg(t,0,A)+l}return a===!0&&(l=" "+l,f=2),wg(t,0,e-f)+l}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${s}`)}});var JK=H(dP=>{"use strict";var Jbe=dP&&dP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dP,"__esModule",{value:!0});var ECt=Jbe(Ube()),ICt=Jbe(zbe()),zK={};dP.default=(t,e,r)=>{let s=t+String(e)+String(r);if(zK[s])return zK[s];let a=t;if(r==="wrap"&&(a=ECt.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=ICt.default(t,e,{position:n})}return zK[s]=a,a}});var XK=H(ZK=>{"use strict";Object.defineProperty(ZK,"__esModule",{value:!0});var Zbe=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let s="";r.nodeName==="#text"?s=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(s=Zbe(r)),s.length>0&&typeof r.internal_transform=="function"&&(s=r.internal_transform(s))),e+=s}return e};ZK.default=Zbe});var $K=H($i=>{"use strict";var gP=$i&&$i.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty($i,"__esModule",{value:!0});$i.setTextNodeValue=$i.createTextNode=$i.setStyle=$i.setAttribute=$i.removeChildNode=$i.insertBeforeNode=$i.appendChildNode=$i.createNode=$i.TEXT_NAME=void 0;var wCt=gP(uE()),Xbe=gP(Obe()),CCt=gP(Lbe()),BCt=gP(JK()),vCt=gP(XK());$i.TEXT_NAME="#text";$i.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t==="ink-virtual-text"?void 0:wCt.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(SCt.bind(null,r))),r};$i.appendChildNode=(t,e)=>{var r;e.parentNode&&$i.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&PL(t)};$i.insertBeforeNode=(t,e,r)=>{var s,a;e.parentNode&&$i.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((s=t.yogaNode)===null||s===void 0||s.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&PL(t)};$i.removeChildNode=(t,e)=>{var r,s;e.yogaNode&&((s=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&PL(t)};$i.setAttribute=(t,e,r)=>{t.attributes[e]=r};$i.setStyle=(t,e)=>{t.style=e,t.yogaNode&&CCt.default(t.yogaNode,e)};$i.createTextNode=t=>{let e={nodeName:"#text",nodeValue:t,yogaLine truncated
`).repeat(n-2),m=rz.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,l,"foreground");s.write(t,e,h,{transformers:[]}),s.write(t,e+1,A,{transformers:[]}),s.write(t+a-1,e+1,A,{transformers:[]}),s.write(t,e+n-1,m,{transformers:[]})}}});var pDe=H(CP=>{"use strict";var fE=CP&&CP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CP,"__esModule",{value:!0});var QCt=fE(uE()),FCt=fE(qK()),NCt=fE(oDe()),OCt=fE(JK()),LCt=fE(aDe()),_Ct=fE(XK()),MCt=fE(hDe()),UCt=(t,e)=>{var r;let s=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();e=`
`.repeat(n)+NCt.default(e,a)}return e},ADe=(t,e,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:l=[],skipStaticElements:f}=r;if(f&&t.internal_static)return;let{yogaNode:h}=t;if(h){if(h.getDisplay()===QCt.default.DISPLAY_NONE)return;let A=a+h.getComputedLeft(),m=n+h.getComputedTop(),w=l;if(typeof t.internal_transform=="function"&&(w=[t.internal_transform,...l]),t.nodeName==="ink-text"){let v=_Ct.default(t);if(v.length>0){let D=FCt.default(v),I=LCt.default(h);if(D>I){let R=(s=t.style.textWrap)!==null&&s!==void 0?s:"wrap";v=OCt.default(v,I,R)}v=UCt(t,v),e.write(A,m,v,{transformers:w})}return}if(t.nodeName==="ink-box"&&MCt.default(A,m,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let v of t.childNodes)ADe(v,e,{offsetX:A,offsetY:m,transformers:w,skipStaticElements:f})}};CP.default=ADe});var mDe=H(BP=>{"use strict";var gDe=BP&&BP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(BP,"__esModule",{value:!0});var dDe=gDe(KK()),HCt=gDe(fP()),nz=class{constructor(e){this.writes=[];let{width:r,height:s}=e;this.width=r,this.height=s}write(e,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:e,y:r,text:s,transformers:n})}get(){let e=[];for(let s=0;s<this.height;s++)e.push(" ".repeat(this.width));for(let s of this.writes){let{x:a,y:n,text:l,transformers:f}=s,h=l.split(`
`),A=0;for(let m of h){let w=e[n+A];if(!w)continue;let v=HCt.default(m);for(let D of f)m=D(m);e[n+A]=dDe.default(w,0,a)+m+dDe.default(w,a+v),A++}}return{output:e.map(s=>s.trimRight()).join(`
`),height:e.length}}};BP.default=nz});var IDe=H(vP=>{"use strict";var iz=vP&&vP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vP,"__esModule",{value:!0});var jCt=iz(uE()),yDe=iz(pDe()),EDe=iz(mDe());vP.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,jCt.default.DIRECTION_LTR);let s=new EDe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});yDe.default(t,s,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new EDe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),yDe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:l}=s.get();return{output:n,outputHeight:l,staticOutput:a?`${a.get().output}
`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var vDe=H((Npr,BDe)=>{"use strict";var wDe=Ae("stream"),CDe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],sz={},GCt=t=>{let e=new wDe.PassThrough,r=new wDe.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let s=new console.Console(e,r);for(let a of CDe)sz[a]=console[a],console[a]=s[a];return()=>{for(let a of CDe)console[a]=sz[a];sz={}}};BDe.exports=GCt});var az=H(oz=>{"use strict";Object.defineProperty(oz,"__esModule",{value:!0});oz.default=new WeakMap});var lz=H(cz=>{"use strict";Object.defineProperty(cz,"__esModule",{value:!0});var qCt=Ln(),SDe=qCt.createContext({exit:()=>{}});SDe.displayName="InternalAppContext";cz.default=SDe});var fz=H(uz=>{"use strict";Object.defineProperty(uz,"__esModule",{value:!0});var VCt=Ln(),bDe=VCt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});bDe.displayName="InternalStdinContext";uz.default=bDe});var Az=H(hz=>{"use strict";Object.defineProperty(hz,"__esModule",{value:!0});var WCt=Ln(),DDe=WCt.createContext({stdout:void 0,write:()=>{}});DDe.displayName="InternalStdoutContext";hz.default=DDe});var dz=H(pz=>{"use strict";Object.defineProperty(pz,"__esModule",{value:!0});var YCt=Ln(),PDe=YCt.createContext({stderr:void 0,write:()=>{}});PDe.displayName="InternalStderrContext";pz.default=PDe});var RL=H(gz=>{"use strict";Object.defineProperty(gz,"__esModule",{value:!0});var KCt=Ln(),xDe=KCt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});xDe.displayName="InternalFocusContext";gz.default=xDe});var RDe=H((jpr,kDe)=>{"use strict";var zCt=/[|\\{}()[\]^$+*?.-]/g;kDe.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(zCt,"\\$&")}});var NDe=H((Gpr,FDe)=>{"use strict";var JCt=RDe(),ZCt=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",QDe=[].concat(Ae("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));QDe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var mz=class t{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=t.nodeInternals()),"cwd"in e||(e.cwd=ZCt),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,XCt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...QDe]}clean(e,r=0){r=" ".repeat(r),Array.isArray(e)||(e=e.split(`
`)),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let s=!1,a=null,n=[];return e.forEach(l=>{if(l=l.replace(/\\/g,"/"),this._internals.some(h=>h.test(l)))return;let f=/^\s*at /.test(l);s?l=l.trimEnd().replace(/^(\s+)at /,"$1"):(l=l.trim(),f&&(l=l.slice(3))),l=l.replace(`${this._cwd}/`,""),l&&(f?(a&&(n.push(a),a=null),n.push(l)):(s=!0,a=l))}),n.map(l=>`${r}${l}
`).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:s}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,h)=>this._wrapCallSite?h.map(this._wrapCallSite):h,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:l}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),l}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};TDe(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let l=r.getMethodName();return l&&n!==l&&(s.method=l),s}parseLine(e){let r=e&&e.match($Ct);if(!r)return null;let s=r[1]==="new",a=r[2],n=r[3],l=r[4],f=Number(r[5]),h=Number(r[6]),A=r[7],m=r[8],w=r[9],v=r[10]==="native",D=r[11]===")",I,R={};if(m&&(R.line=Number(m)),w&&(R.column=Number(w)),D&&A){let N=0;for(let U=A.length-1;U>0;U--)if(A.charAt(U)===")")N++;else if(A.charAt(U)==="("&&A.charAt(U-1)===" "&&(N--,N===-1&&A.charAt(U-1)===" ")){let V=A.slice(0,U-1);A=A.slice(U+1),a+=` (${V}`;break}}if(a){let N=a.match(e1t);N&&(a=N[1],I=N[2])}return TDe(R,A,this._cwd),s&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=f,R.evalColumn=h,R.evalFile=l&&l.replace(/\\/g,"/")),v&&(R.native=!0),a&&(R.function=a),I&&a!==I&&(R.method=I),R}};function TDe(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function XCt(t){if(t.length===0)return[];let e=t.map(r=>JCt(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var $Ct=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),e1t=/^(.*?) \[as (.*?)\]$/;FDe.exports=mz});var LDe=H((qpr,ODe)=>{"use strict";ODe.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var MDe=H((Vpr,_De)=>{"use strict";var t1t=LDe(),r1t=(t,e)=>{let r=[],s=t-e,a=t+e;for(let n=s;n<=a;n++)r.push(n);return r};_De.exports=(t,e,r)=>{if(typeof t!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");if(t=t1t(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},r1t(e,r.around).filter(s=>t[s-1]!==void 0).map(s=>({line:s,value:t[s-1]}))}});var TL=H(Yf=>{"use strict";var n1t=Yf&&Yf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),i1t=Yf&&Yf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s1t=Yf&&Yf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&n1t(e,t,r);return i1t(e,t),e},o1t=Yf&&Yf.__rest||function(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(t);a<s.length;a++)e.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(t,s[a])&&(r[s[a]]=t[s[a]]);return r};Object.defineProperty(Yf,"__esModule",{value:!0});var UDe=s1t(Ln()),yz=UDe.forwardRef((t,e)=>{var{children:r}=t,s=o1t(t,["children"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return UDe.default.createElement("ink-box",{ref:e,style:a},r)});yz.displayName="Box";yz.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};Yf.default=yz});var wz=H(SP=>{"use strict";var Ez=SP&&SP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SP,"__esModule",{value:!0});var a1t=Ez(Ln()),Z1=Ez(Cw()),HDe=Ez(tz()),Iz=({color:t,backgroundColor:e,dimColor:r,bold:s,italic:a,underline:n,strikethrough:l,inverse:f,wrap:h,children:A})=>{if(A==null)return null;let m=w=>(r&&(w=Z1.default.dim(w)),t&&(w=HDe.default(w,t,"foreground")),e&&(w=HDe.default(w,e,"background")),s&&(w=Z1.default.bold(w)),a&&(w=Z1.default.italic(w)),n&&(w=Z1.default.underline(w)),l&&(w=Z1.default.strikethrough(w)),f&&(w=Z1.default.inverse(w)),w);return a1t.default.createElement("ink-text",{style:{flexGrow:0,flexSLine truncated
`).slice(1):void 0,r=e?qDe.parseLine(e[0]):void 0,s,a=0;if(r?.file&&r?.line&&jDe.existsSync(r.file)){let n=jDe.readFileSync(r.file,"utf8");if(s=f1t.default(n,r.line),s)for(let{line:l}of s)a=Math.max(a,String(l).length)}return no.default.createElement(rd.default,{flexDirection:"column",padding:1},no.default.createElement(rd.default,null,no.default.createElement(sA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),no.default.createElement(sA.default,null," ",t.message)),r&&no.default.createElement(rd.default,{marginTop:1},no.default.createElement(sA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&s&&no.default.createElement(rd.default,{marginTop:1,flexDirection:"column"},s.map(({line:n,value:l})=>no.default.createElement(rd.default,{key:n},no.default.createElement(rd.default,{width:a+1},no.default.createElement(sA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),no.default.createElement(sA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+l)))),t.stack&&no.default.createElement(rd.default,{marginTop:1,flexDirection:"column"},t.stack.split(`
`).slice(1).map(n=>{let l=qDe.parseLine(n);return l?no.default.createElement(rd.default,{key:n},no.default.createElement(sA.default,{dimColor:!0},"- "),no.default.createElement(sA.default,{dimColor:!0,bold:!0},l.function),no.default.createElement(sA.default,{dimColor:!0,color:"gray"}," ","(",l.file,":",l.line,":",l.column,")")):no.default.createElement(rd.default,{key:n},no.default.createElement(sA.default,{dimColor:!0},"- "),no.default.createElement(sA.default,{dimColor:!0,bold:!0},n))})))};Kf.default=h1t});var YDe=H(zf=>{"use strict";var A1t=zf&&zf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),p1t=zf&&zf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),d1t=zf&&zf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&A1t(e,t,r);return p1t(e,t),e},AE=zf&&zf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(zf,"__esModule",{value:!0});var hE=d1t(Ln()),WDe=AE(BK()),g1t=AE(lz()),m1t=AE(fz()),y1t=AE(Az()),E1t=AE(dz()),I1t=AE(RL()),w1t=AE(VDe()),C1t=" ",B1t="\x1B[Z",v1t="\x1B",QL=class extends hE.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===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(r.setEncoding("utf8"),e){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===v1t&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===C1t&&this.focusNext(),e===B1t&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=e=>{this.setState(r=>r.focusables.some(a=>a?.id===e)?{activeFocusId:e}:r)},this.focusNext=()=>{this.setState(e=>{var r;let s=(r=e.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(e)||s}})},this.focusPrevious=()=>{this.setState(e=>{var r;let s=(r=e.focusables[e.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(e)||s}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...s.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s+1;a<e.focusables.length;a++)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id},this.findPreviousFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return hE.default.createElement(g1t.default.Provider,{value:{exit:this.handleExit}},hE.default.createElement(m1t.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},hE.default.createElement(y1t.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},hE.default.createElement(E1t.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},hE.default.createElement(I1t.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,focus:this.focus}},this.state.error?hE.default.createElement(w1t.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){WDe.default.hide(this.props.stdout)}componentWillUnmount(){WDe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};zf.default=QL;QL.displayName="InternalApp"});var JDe=H(Jf=>{"use strict";var S1t=Jf&&Jf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),b1t=Jf&&Jf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),D1t=Jf&&Jf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&S1t(e,t,r);return b1t(e,t),e},Zf=Jf&&Jf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Jf,"__esModule",{value:!0});var P1t=Zf(Ln()),KDe=jSe(),x1t=Zf(ibe()),k1t=Zf(yK()),R1t=Zf(ube()),T1t=Zf(hbe()),Cz=Zf(iDe()),Q1t=Zf(IDe()),F1t=Zf(CK()),N1t=Zf(vDe()),O1t=D1t($K()),L1t=Zf(az()),_1t=Zf(YDe()),X1=process.env.CI==="false"?!1:R1t.default,zDe=()=>{},Bz=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=Q1t.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==`
`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(X1){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(k1t.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},T1t.default(this),this.options=e,this.rootNode=O1t.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:KDe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=x1t.default.create(e.stdout),this.throttledLog=e.debug?this.log:KDe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=Cz.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=F1t.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),X1||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=P1t.default.createElement(_1t.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},e);Cz.default.updateContainer(r,this.container,null,zDe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(X1){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(X1){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),X1?this.options.stdout.write(this.lastOutput+`
`):this.options.debug||this.log.done(),this.isUnmounted=!0,Cz.default.updateContainer(null,this.container,null,zDe),L1t.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!X1&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=N1t.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};Jf.default=Bz});var XDe=H(DP=>{"use strict";var ZDe=DP&&DP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(DP,"__esModule",{value:!0});var M1t=ZDe(JDe()),FL=ZDe(az()),U1t=Ae("stream"),H1t=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},j1t(e)),s=G1t(r.stdout,()=>new M1t.default(r));return s.render(t),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>FL.default.delete(r.stdout),clear:s.clear}};DP.default=H1t;var j1t=(t={})=>t instanceof U1t.Stream?{stdout:t,stdin:process.stdin}:t,G1t=(t,e)=>{let r;return FL.default.has(t)?r=FL.default.get(t):(r=e(),FL.default.set(t,r)),r}});var ePe=H(nd=>{"use strict";var q1t=nd&&nd.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),V1t=nd&&nd.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),W1t=nd&&nd.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&q1t(e,t,r);return V1t(e,t),e};Object.defineProperty(nd,"__esModule",{value:!0});var PP=W1t(Ln()),$De=t=>{let{items:e,children:r,style:s}=t,[a,n]=PP.useState(0),l=PP.useMemo(()=>e.slice(a),[e,a]);PP.useLayoutEffect(()=>{n(e.length)},[e.length]);let f=l.map((A,m)=>r(A,a+m)),h=PP.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},s),[s]);return PP.default.createElement("ink-box",{internal_static:!0,style:h},f)};$De.displayName="Static";nd.default=$De});var rPe=H(xP=>{"use strict";var Y1t=xP&&xP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xP,"__esModule",{value:!0});var K1t=Y1t(Ln()),tPe=({children:t,transform:e})=>t==null?null:K1t.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);tPe.displayName="Transform";xP.default=tPe});var iPe=H(kP=>{"use strict";var z1t=kP&&kP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kP,"__esModule",{value:!0});var J1t=z1t(Ln()),nPe=({count:t=1})=>J1t.default.createElement("ink-text",null,`
`.repeat(t));nPe.displayName="Newline";kP.default=nPe});var aPe=H(RP=>{"use strict";var sPe=RP&&RP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RP,"__esModule",{value:!0});var Z1t=sPe(Ln()),X1t=sPe(TL()),oPe=()=>Z1t.default.createElement(X1t.default,{flexGrow:1});oPe.displayName="Spacer";RP.default=oPe});var NL=H(TP=>{"use strict";var $1t=TP&&TP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TP,"__esModule",{value:!0});var e2t=Ln(),t2t=$1t(fz()),r2t=()=>e2t.useContext(t2t.default);TP.default=r2t});var lPe=H(QP=>{"use strict";var n2t=QP&&QP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QP,"__esModule",{value:!0});var cPe=Ln(),i2t=n2t(NL()),s2t=(t,e={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=i2t.default();cPe.useEffect(()=>{if(e.isActive!==!1)return s(!0),()=>{s(!1)}},[e.isActive,s]),cPe.useEffect(()=>{if(e.isActive===!1)return;let n=l=>{let f=String(l),h={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!h.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),h.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),h.meta=!0);let A=f>="A"&&f<="Z",m=f>="\u0410"&&f<="\u042F";f.length===1&&(A||m)&&(h.shift=!0),h.tab&&f==="[Z"&&(h.shift=!0),(h.tab||h.backspace||h.delete)&&(f=""),(!(f==="c"&&h.ctrl)||!a)&&t(f,h)};return r?.on("data",n),()=>{r?.off("data",n)}},[e.isActive,r,a,t])};QP.default=s2t});var uPe=H(FP=>{"use strict";var o2t=FP&&FP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(FP,"__esModule",{value:!0});var a2t=Ln(),c2t=o2t(lz()),l2t=()=>a2t.useContext(c2t.default);FP.default=l2t});var fPe=H(NP=>{"use strict";var u2t=NP&&NP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(NP,"__esModule",{value:!0});var f2t=Ln(),h2t=u2t(Az()),A2t=()=>f2t.useContext(h2t.default);NP.default=A2t});var hPe=H(OP=>{"use strict";var p2t=OP&&OP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(OP,"__esModule",{value:!0});var d2t=Ln(),g2t=p2t(dz()),m2t=()=>d2t.useContext(g2t.default);OP.default=m2t});var pPe=H(_P=>{"use strict";var APe=_P&&_P.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(_P,"__esModule",{value:!0});var LP=Ln(),y2t=APe(RL()),E2t=APe(NL()),I2t=({isActive:t=!0,autoFocus:e=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=E2t.default(),{activeId:n,add:l,remove:f,activate:h,deactivate:A,focus:m}=LP.useContext(y2t.default),w=LP.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return LP.useEffect(()=>(l(w,{autoFocus:e}),()=>{f(w)}),[w,e]),LP.useEffect(()=>{t?h(w):A(w)},[t,w]),LP.useEffect(()=>{if(!(!s||!t))return a(!0),()=>{a(!1)}},[t]),{isFocused:!!w&&n===w,focus:m}};_P.default=I2t});var dPe=H(MP=>{"use strict";var w2t=MP&&MP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(MP,"__esModule",{value:!0});var C2t=Ln(),B2t=w2t(RL()),v2t=()=>{let t=C2t.useContext(B2t.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious,focus:t.focus}};MP.default=v2t});var gPe=H(vz=>{"use strict";Object.defineProperty(vz,"__esModule",{value:!0});vz.default=t=>{var e,r,s,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=t.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Du=H(Wo=>{"use strict";Object.defineProperty(Wo,"__esModule",{value:!0});var S2t=XDe();Object.defineProperty(Wo,"render",{enumerable:!0,get:function(){return S2t.default}});var b2t=TL();Object.defineProperty(Wo,"Box",{enumerable:!0,get:function(){return b2t.default}});var D2t=wz();Object.defineProperty(Wo,"Text",{enumerable:!0,get:function(){return D2t.default}});var P2t=ePe();Object.defineProperty(Wo,"Static",{enumerable:!0,get:function(){return P2t.default}});var x2t=rPe();Object.defineProperty(Wo,"Transform",{enumerable:!0,get:function(){return x2t.default}});var k2t=iPe();Object.defineProperty(Wo,"Newline",{enumerable:!0,get:function(){return k2t.default}});var R2t=aPe();Object.defineProperty(Wo,"Spacer",{enumerable:!0,get:function(){return R2t.default}});var T2t=lPe();Object.defineProperty(Wo,"useInput",{enumerable:!0,get:function(){return T2t.default}});var Q2t=uPe();Object.defineProperty(Wo,"useApp",{enumerable:!0,get:function(){return Q2t.default}});var F2t=NL();Object.defineProperty(Wo,"useStdin",{enumerable:!0,get:function(){return F2t.default}});var N2t=fPe();Object.defineProperty(Wo,"useStdout",{enumerable:!0,get:function(){return N2t.default}});var O2t=hPe();Object.defineProperty(Wo,"useStderr",{enumerable:!0,get:function(){ Line truncated
`:"";return l?w+=`@IF EXIST ${l} (\r
${l} ${h} ${a} ${m}%*\r
) ELSE (\r
@SETLOCAL\r
@SET PATHEXT=%PATHEXT:;.JS;=;%\r
${f} ${h} ${a} ${m}%*\r
)\r
`:w+=`@${f} ${h} ${a} ${m}%*\r
`,w}function uvt(t,e,r){let s=xu.relative(xu.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;s=s.split("\\").join("/");let l=xu.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,f=r.args||"",h=EJ(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,s=l):(a=l,f="",s="");let A=r.progArgs?`${r.progArgs.join(" ")} `:"",m=`#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
case \`uname\` in
*CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
esac
`,w=r.nodePath?`export NODE_PATH="${h}"
`:"";return n?m+=`${w}if [ -x ${n} ]; then
exec ${n} ${f} ${s} ${A}"$@"
else
exec ${a} ${f} ${s} ${A}"$@"
fi
`:m+=`${w}${a} ${f} ${s} ${A}"$@"
exit $?
`,m}function fvt(t,e,r){let s=xu.relative(xu.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,l;s=s.split("\\").join("/");let f=xu.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,h=r.args||"",A=EJ(r.nodePath),m=A.win32,w=A.posix;n?(l=`"$basedir/${r.prog}$exe"`,s=f):(n=f,h="",s="");let v=r.progArgs?`${r.progArgs.join(" ")} `:"",D=`#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
${r.nodePath?`$env_node_path=$env:NODE_PATH
$env:NODE_PATH="${m}"
`:""}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 r.nodePath&&(D+=` else {
$env:NODE_PATH="${w}"
}`),l?D+=`
$ret=0
if (Test-Path ${l}) {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & ${l} ${h} ${s} ${v}$args
} else {
& ${l} ${h} ${s} ${v}$args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & ${n} ${h} ${s} ${v}$args
} else {
& ${n} ${h} ${s} ${v}$args
}
$ret=$LASTEXITCODE
}
${r.nodePath?`$env:NODE_PATH=$env_node_path
`:""}exit $ret
`:D+=`
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & ${n} ${h} ${s} ${v}$args
} else {
& ${n} ${h} ${s} ${v}$args
}
${r.nodePath?`$env:NODE_PATH=$env_node_path
`:""}exit $LASTEXITCODE
`,D}function hvt(t,e){return e.fs_.chmod(t,493)}function EJ(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(xu.delimiter):Array.from(t),r={};for(let s=0;s<e.length;s++){let a=e[s].split("/").join("\\"),n=kxe()?e[s].split("\\").join("/").replace(/^([^:\\/]*):/,(l,f)=>`/mnt/${f.toLowerCase()}`):e[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}Txe.exports=yJ});var TJ=H((DEr,eke)=>{eke.exports=Ae("stream")});var ike=H((PEr,nke)=>{"use strict";function tke(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function zvt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?tke(Object(r),!0).forEach(function(s){Jvt(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):tke(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}function Jvt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Zvt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function rke(t,e){for(var r=0;r<e.length;r++){var s=e[r];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function Xvt(t,e,r){return e&&rke(t.prototype,e),r&&rke(t,r),t}var $vt=Ae("buffer"),l_=$vt.Buffer,eSt=Ae("util"),QJ=eSt.inspect,tSt=QJ&&QJ.custom||"inspect";function rSt(t,e,r){l_.prototype.copy.call(t,e,r)}nke.exports=function(){function t(){Zvt(this,t),this.head=null,this.tail=null,this.length=0}return Xvt(t,[{key:"push",value:function(r){var s={data:r,next:null};this.length>0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var s=this.head,a=""+s.data;s=s.next;)a+=r+s.data;return a}},{key:"concat",value:function(r){if(this.length===0)return l_.alloc(0);for(var s=l_.allocUnsafe(r>>>0),a=this.head,n=0;a;)rSt(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:"consume",value:function(r,s){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=s?this._getString(r):this._getBuffer(r),a}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(r){var s=this.head,a=1,n=s.data;for(r-=n.length;s=s.next;){var l=s.data,f=r>l.length?l.length:r;if(f===l.length?n+=l:n+=l.slice(0,r),r-=f,r===0){f===l.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=l.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var s=l_.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var l=a.data,f=r>l.length?l.length:r;if(l.copy(s,s.length-r,0,f),r-=f,r===0){f===l.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=l.slice(f));break}++n}return this.length-=n,s}},{key:tSt,value:function(r,s){return QJ(this,zvt({},s,{depth:0,customInspect:!1}))}}]),t}()});var NJ=H((xEr,oke)=>{"use strict";function nSt(t,e){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(FJ,this,t)):process.nextTick(FJ,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(u_,r):(r._writableState.errorEmitted=!0,process.nextTick(ske,r,n)):process.nextTick(ske,r,n):e?(process.nextTick(u_,r),e(n)):process.nextTick(u_,r)}),this)}function ske(t,e){FJ(t,e),u_(t)}function u_(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function iSt(){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 FJ(t,e){t.emit("error",e)}function sSt(t,e){var r=t._readableState,s=t._writableState;r&& Line truncated
`)),t.linkname&&(e+=lZ(" linkpath="+t.linkname+`
`));var r=t.pax;if(r)for(var s in r)e+=lZ(" "+s+"="+r[s]+`
`);return Buffer.from(e)};E2.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var s=parseInt(t.slice(0,r).toString(),10);if(!s)return e;var a=t.slice(r+1,s-1).toString(),n=a.indexOf("=");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(s)}return e};E2.encode=function(t){var e=Zbt(512),r=t.name,s="";if(t.typeflag===5&&r[r.length-1]!=="/"&&(r+="/"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf("/");if(a===-1)return null;s+=s?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(Og(t.mode&nDt,6),100),e.write(Og(t.uid,6),108),e.write(Og(t.gid,6),116),e.write(Og(t.size,11),124),e.write(Og(t.mtime.getTime()/1e3|0,11),136),e[156]=oRe+oDt(t.type),t.linkname&&e.write(t.linkname,157),aRe.copy(e,xx),eDt.copy(e,uZ),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(Og(t.devmajor||0,6),329),e.write(Og(t.devminor||0,6),337),s&&e.write(s,345),e.write(Og(lRe(e),6),148),e)};E2.decode=function(t,e,r){var s=t[156]===0?0:t[156]-oRe,a=y2(t,0,100,e),n=Lg(t,100,8),l=Lg(t,108,8),f=Lg(t,116,8),h=Lg(t,124,12),A=Lg(t,136,12),m=sDt(s),w=t[157]===0?null:y2(t,157,100,e),v=y2(t,265,32),D=y2(t,297,32),I=Lg(t,329,8),R=Lg(t,337,8),N=lRe(t);if(N===8*32)return null;if(N!==Lg(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(aRe.compare(t,xx,xx+6)===0)t[345]&&(a=y2(t,345,155,e)+"/"+a);else if(!(tDt.compare(t,xx,xx+6)===0&&rDt.compare(t,uZ,uZ+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return s===0&&a&&a[a.length-1]==="/"&&(s=5),{name:a,mode:n,uid:l,gid:f,size:h,mtime:new Date(1e3*A),type:m,linkname:w,uname:v,gname:D,devmajor:I,devminor:R}}});var gRe=H((zEr,dRe)=>{var fRe=Ae("util"),cDt=sRe(),kx=fZ(),hRe=m2().Writable,ARe=m2().PassThrough,pRe=function(){},uRe=function(t){return t&=511,t&&512-t},lDt=function(t,e){var r=new S_(t,e);return r.end(),r},uDt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},S_=function(t,e){this._parent=t,this.offset=e,ARe.call(this,{autoDestroy:!1})};fRe.inherits(S_,ARe);S_.prototype.destroy=function(t){this._parent.destroy(t)};var fd=function(t){if(!(this instanceof fd))return new fd(t);hRe.call(this,t),t=t||{},this._offset=0,this._buffer=cDt(),this._missing=0,this._partial=!1,this._onparse=pRe,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,r=e._buffer,s=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||s()},n=function(){e._stream=null;var v=uRe(e._header.size);v?e._parse(v,l):e._parse(512,w),e._locked||s()},l=function(){e._buffer.consume(uRe(e._header.size)),e._parse(512,w),s()},f=function(){var v=e._header.size;e._paxGlobal=kx.decodePax(r.slice(0,v)),r.consume(v),n()},h=function(){var v=e._header.size;e._pax=kx.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},A=function(){var v=e._header.size;this._gnuLongPath=kx.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},m=function(){var v=e._header.size;this._gnuLongLinkPath=kx.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},w=function(){var v=e._offset,D;try{D=e._header=kx.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(I){e.emit("error",I)}if(r.consume(512),!D){e._parse(512,w),s();return}if(D.type==="gnu-long-path"){e._parse(D.size,A),s();return}if(D.type==="gnu-long-link-path"){e._parse(D.size,m),s();return}if(D.type==="pax-global-header"){e._parse(D.size,f),s();return}if(D.type==="pax-header"){e._parse(D.size,h),s();return}if(e._gnuLongPath&&(D.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(D.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=D=uDt(D,e._pax),e._pax=null),e._locked=!0,!D.size||D.type==="directory"){e._parse(512,w),e.emit("entry",D,lDt(e,v),a);return}e._stream=new S_(e,v),e.emit("entry",D,e._stream,a),e._parse(D.size,n),s()};this._onheader=w,this._parse(512,w)};fRe.inherits(fd,hRe);fd.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};fd.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};fd.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=pRe,this._overflow?this._write(this._overflow,void 0,t):t()}};fd.prototype._write=function(t,e,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,s?s.write(t,r):(a.append(t), Line truncated
Wanted: ${this.expectedSize}
Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${e}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=e,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#t=this.size,this.emit("size",this.size),this.#e=e,this.emit("integrity",e),r&&(this.#r=r,this.emit("verified",r))}},pd=class{get isHash(){return!0}constructor(e,r){let s=r?.strict;this.source=e.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?jDt:HDt);if(!a||s&&!PZ.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(e,r){let s=_l(e,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(l=>l.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(e){return e?.strict&&!(PZ.includes(this.algorithm)&&this.digest.match(UDt)&&this.options.every(r=>r.match(GDt)))?"":`${this.algorithm}-${this.digest}${_x(this.options)}`}};function LRe(t,e,r,s){let a=t!=="",n=!1,l="",f=s.length-1;for(let A=0;A<f;A++){let m=pd.prototype.toString.call(s[A],r);m&&(n=!0,l+=m,l+=e)}let h=pd.prototype.toString.call(s[f],r);return h&&(n=!0,l+=h),a&&n?t+e+l:t+l}var DE=class{get isIntegrity(){return!0}toJSON(){return this.toString()}isEmpty(){return Object.keys(this).length===0}toString(e){let r=e?.sep||" ",s="";if(e?.strict){r=r.replace(/\S+/g," ");for(let a of PZ)this[a]&&(s=LRe(s,r,e,this[a]))}else for(let a of Object.keys(this))s=LRe(s,r,e,this[a]);return s}concat(e,r){let s=typeof e=="string"?e:Ox(e,r);return _l(`${this.toString(r)} ${s}`,r)}hexDigest(){return _l(this,{single:!0}).hexDigest()}merge(e,r){let s=_l(e,r);for(let a in s)if(this[a]){if(!this[a].find(n=>s[a].find(l=>n.digest===l.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(e,r){let s=_l(e,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(l=>n.digest===l.digest))||!1}pickAlgorithm(e,r){let s=e?.pickAlgorithm||ZDt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,l)=>s(n,l)||n):null}};AA.exports.parse=_l;function _l(t,e){if(!t)return null;if(typeof t=="string")return DZ(t,e);if(t.algorithm&&t.digest){let r=new DE;return r[t.algorithm]=[t],DZ(Ox(r,e),e)}else return DZ(Ox(t,e),e)}function DZ(t,e){if(e?.single)return new pd(t,e);let r=t.trim().split(/\s+/).reduce((s,a)=>{let n=new pd(a,e);if(n.algorithm&&n.digest){let l=n.algorithm;s[l]||(s[l]=[]),s[l].push(n)}return s},new DE);return r.isEmpty()?null:r}AA.exports.stringify=Ox;function Ox(t,e){return t.algorithm&&t.digest?pd.prototype.toString.call(t,e):typeof t=="string"?Ox(_l(t,e),e):DE.prototype.toString.call(t,e)}AA.exports.fromHex=qDt;function qDt(t,e,r){let s=_x(r?.options);return _l(`${e}-${Buffer.from(t,"hex").toString("base64")}${s}`,r)}AA.exports.fromData=VDt;function VDt(t,e){let r=e?.algorithms||[...kZ],s=_x(e?.options);return r.reduce((a,n)=>{let l=Lx.createHash(n).update(t).digest("base64"),f=new pd(`${n}-${l}${s}`,e);if(f.algorithm&&f.digest){let h=f.algorithm;a[h]||(a[h]=[]),a[h].push(f)}return a},new DE)}AA.exports.fromStream=WDt;function WDt(t,e){let r=RZ(e);return new Promise((s,a)=>{t.pipe(r),t.on("error",a),r.on("error",a);let n;r.on("integrity",l=>{n=l}),r.on("end",()=>s(n)),r.resume()})}AA.exports.checkData=YDt;function YDt(t,e,r){if(e=_l(e,r),!e||!Object.keys(e).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=e.pickAlgorithm(r),a=Lx.createHash(s).update(t).digest("base64"),n=_l({algorithm:s,digest:a}),l=n.match(e,r);if(r=r||{},l||!r.error)return l;if(typeof r.size=="number"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}.
Wanted: ${r.size}
Found: ${t.length}`);throw f.code="EBADSIZE",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=e,f.algorithm=s,f.sri=e,f}}AA.exports.checkStream=KDt;function KDt(t,e,r){if(r=r||Object.create(null),r.integrity=e,e=_l(e,r),!e||!Object.keys(e).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=RZ(r);return new Promise((a,n)=>{t.pipe(s),t.on("error",n),s.on("error",n);let l;s.on("verified",f=>{l=f}),s.on("end",()=>a(l)),s.resume()})}AA.exports.integrityStream=RZ;function RZ(t=Object.create(null)){return new xZ(t)}AA.exports.create=zDt;function zDt(t){let e=t?.algorithms||[...kZ],r=_x(t?.options),s=e.map(Lx.createHash);return{update:function(a,n){return s.forEach(l=>l.update(a,n)),this},digest:function(){return e.reduce((n,l)=>{let f=s.shift().digest("base64"),h=new pd(`${l}-${f}${r}`,t);if(h.algorithm&&h.digest){let A=h.algorithm;n[A]||(n[A]=[]),n[A].push(h)}return n},new DE)}}}var JDt=Lx.getHashes(),_Re=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>JDt.includes(t));function ZDt(t,e){return _Re.indexOf(t.toLowerCase())>=_Re.indexOf(e.toLowerCase())?t:e}});var U_=H(Mg=>{"use strict";Object.defineProperty(Mg,"__esModule",{value:!0});Mg.Signature=Mg.Envelope=void 0;Mg.Envelope={fromJSON(t){return{payload:M_(t.payload)?Buffer.from(URe(t.payload)):Buffer.alloc(0),payloadType:M_(t.payloadType)?globalThis.String(t.payloadType):"",signatures:globalThis.Array.isArray(t?.signatures)?t.signatures.map(e=>Mg.Signature.fromJSON(e)):[]}},toJSON(t){let e={};return t.payload.length!==0&&(e.payload=HRe(t.payload)),t.payloadType!==""&&(e.payloadType=t.payloadType),t.signatures?.length&&(e.signatures=t.signatures.map(r=>Mg.Signature.toJSON(r))),e}};Mg.Signature={fromJSON(t){return{sig:M_(t.sig)?Buffer.from(URe(t.sig)):Buffer.alloc(0),keyid:M_(t.keyid)?globalThis.String(t.keyid):""}},toJSON(t){let e={};return t.sig.length!==0&&(e.sig=HRe(t.sig)),t.keyid!==""&&(e.keyid=t.keyid),e}};function URe(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function HRe(t){return globalThis.Buffer.from(t).toString("base64")}function M_(t){return t!=null}});var GRe=H(H_=>{"use strict";Object.defineProperty(H_,"__esModule",{value:!0});H_.Timestamp=void 0;H_.Timestamp={fromJSON(t){return{seconds:jRe(t.seconds)?globalThis.String(t.seconds):"0",nanos:jRe(t.nanos)?globalThis.Number(t.nanos):0}},toJSON(t){let e={};return t.seconds!=="0"&&(e.seconds=t.seconds),t.nanos!==0&&(e.nanos=Math.round(t.nanos)),e}};function jRe(t){return t!=null}});var dd=H(sn=>{"use strict";Object.defineProperty(sn,"__esModule",{value:!0});sn.TimeRange=sn.X509CertificateChain=sn.SubjectAlternativeName=sn.X509Certificate=sn.DistinguishedName=sn.ObjectIdentifierValuePair=sn.ObjectIdentifier=sn.PublicKeyIdentifier=sn.PublicKey=sn.RFC3161SignedTimestamp=sn.LogId=sn.MessageSignature=sn.HashOutput=sn.SubjectAlternativeNameType=sn.PublicKeyDetails=sn.HashAlgorithm=void 0;sn.hashAlgorithmFromJSON=VRe;sn.hashAlgorithmToJSON=WRe;sn.publicKeyDetailsFromJSON=YRe;sn.publicKeyDetailsToJSON=KRe;sn.subjectAlternativeNameTypeFromJSON=zRe;sn.subjectAlternativeNameTypeToJSON=JRe;var XDt=GRe(),$c;(function(t){t[t.HASH_ALGORITHM_UNSPECIFIED=0]="HASH_ALGORITHM_UNSPECIFIED",t[t.SHA2_256=1]="SHA2_256",t[t.SHA2_384=2]="SHA2_384",t[t.SHA2_512=3]="SHA2_512",t[t.SHA3_256=4]="SHA3_256",t[t.SHA3_384=5]="SHA3_384"})($c||(sn.HashAlgorithm=$c={}));function VRe(t){switch(t){case 0:case"HASH_ALGORITHM_UNSPECIFIED":return $c.HASH_ALGORITHM_UNSPECIFIED;case 1:case"SHA2_256":return $c.SHA2_256;case 2:case"SHA2_384":return $c.SHA2_384;case 3:case"SHA2_512":return $c.SHA2_512;case 4:case"SHA3_256":return $c.SHA3_256;case 5:case"SHA3_384":return $c.SHA3_384;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}function WRe(t){switch(t){case $c.HASH_ALGORITHM_UNSPECIFIED:return"HASH_ALGORITHM_UNSPECIFIED";case $c.SHA2_256:return"SHA2_256";case $c.SHA2_384:return"SHA2_384";case $c.SHA2_512:return"SHA2_512";case $c.SHA3_256:return"SHA3_256";case $c.SHA3_384:return"SHA3_384";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}var tn;(function(t){t[t.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]="PUBLIC_KEY_DETAILS_UNSPECIFIED",t[t.PKCS1_RSA_PKCS1V5=1]="PKCS1_RSA_PKCS1V5",t[t.PKCS1_RSA_PSS=2]="PKCS1_RSA_PSS",t[t.PKIX_RSA_PKCS1V5=3]="PKIX_RSA_PKCS1V5",t[t.PKIX_RSA_PSS=4]="PKIX_RSA_PSS",t[t.PKIX_RSA_PKCS1V15_2048_SHA256=9]="PKIX_RSA_PKCS1V15_2048_SHA256",t[t.PKIX_RSA_PKCS1V15_3072_SHA256=10]="PKIX_RSA_PKCS1V15_3072_SHA256",t[t.PKIX_RSA_PKCS1V15_4096_SHA256=11]="PKIX_RSA_PKCS1V15_4096_SHA256",t[t.PKIX_RSA_PSS_2048_SHA256=16]="PKIX_RSA_PSS_2048_SHA256",t[t.PKIX_RSA_PSS_3072_SHA256=17]="PKIX_RSA_PSS_3072_SHA256",t[t.PKIX_RS Line truncated
`).forEach(r=>{r.match(qPt)||r.match(VPt)||(e+=r)}),Buffer.from(e,"base64")}function YPt(t,e="CERTIFICATE"){let s=t.toString("base64").match(/.{1,64}/g)||"";return[`-----BEGIN ${e}-----`,...s,`-----END ${e}-----`].join(`
`).concat(`
`)}});var cM=H(Vg=>{"use strict";Object.defineProperty(Vg,"__esModule",{value:!0});Vg.SHA2_HASH_ALGOS=Vg.RSA_SIGNATURE_ALGOS=Vg.ECDSA_SIGNATURE_ALGOS=void 0;Vg.ECDSA_SIGNATURE_ALGOS={"1.2.840.10045.4.3.1":"sha224","1.2.840.10045.4.3.2":"sha256","1.2.840.10045.4.3.3":"sha384","1.2.840.10045.4.3.4":"sha512"};Vg.RSA_SIGNATURE_ALGOS={"1.2.840.113549.1.1.14":"sha224","1.2.840.113549.1.1.11":"sha256","1.2.840.113549.1.1.12":"sha384","1.2.840.113549.1.1.13":"sha512"};Vg.SHA2_HASH_ALGOS={"2.16.840.1.101.3.4.2.1":"sha256","2.16.840.1.101.3.4.2.2":"sha384","2.16.840.1.101.3.4.2.3":"sha512"}});var ZZ=H(lM=>{"use strict";Object.defineProperty(lM,"__esModule",{value:!0});lM.RFC3161TimestampVerificationError=void 0;var JZ=class extends Error{};lM.RFC3161TimestampVerificationError=JZ});var PTe=H(yA=>{"use strict";var KPt=yA&&yA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),zPt=yA&&yA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),JPt=yA&&yA.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!=="default"&&KPt(r,e,s[a]);return zPt(r,e),r}}();Object.defineProperty(yA,"__esModule",{value:!0});yA.TSTInfo=void 0;var DTe=JPt(x2()),ZPt=cM(),XPt=ZZ(),XZ=class{root;constructor(e){this.root=e}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let e=this.messageImprintObj.subs[0].subs[0].toOID();return ZPt.SHA2_HASH_ALGOS[e]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(e){let r=DTe.digest(this.messageImprintHashAlgorithm,e);if(!DTe.bufferEqual(r,this.messageImprintHashedMessage))throw new XPt.RFC3161TimestampVerificationError("message imprint does not match artifact")}get messageImprintObj(){return this.root.subs[2]}};yA.TSTInfo=XZ});var kTe=H(EA=>{"use strict";var $Pt=EA&&EA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),ext=EA&&EA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),txt=EA&&EA.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!=="default"&&$Pt(r,e,s[a]);return ext(r,e),r}}();Object.defineProperty(EA,"__esModule",{value:!0});EA.RFC3161Timestamp=void 0;var rxt=sM(),$Z=txt(x2()),xTe=cM(),jx=ZZ(),nxt=PTe(),ixt="1.2.840.113549.1.7.2",sxt="1.2.840.113549.1.9.16.1.4",oxt="1.2.840.113549.1.9.4",eX=class t{root;constructor(e){this.root=e}static parse(e){let r=rxt.ASN1Obj.parseBuffer(e);return new t(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let e=this.signerDigestAlgorithmObj.subs[0].toOID();return xTe.SHA2_HASH_ALGOS[e]}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return xTe.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new nxt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(e,r){if(!this.timeStampTokenObj)throw new jx.RFC3161TimestampVerificationError("timeStampToken is missing");if(this.contentType!==ixt)throw new jx.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==sxt)throw new jx.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(e),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let e=$Z.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!$Z.bufferEqual(e,r))throw new jx.RFC3161TimestampVerificationError("signed data does not match tstInfo")}verifySignature(e){let r=this.signedAttrsObj.toDER();if(r[0]=49,!$Z.verify( Line truncated
\v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041FLine truncated
\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b
\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE`},iso646cn:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},iso646jp:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var NQe=H(FQe=>{"use strict";var v$=Bd().Buffer;FQe._dbcs=vd;var zo=-1,QQe=-2,Lu=-10,dc=-1e3,L2=new Array(256),Xx=-1;for(FM=0;FM<256;FM++)L2[FM]=zo;var FM;function vd(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=t.table();this.decodeTables=[],this.decodeTables[0]=L2.slice(0),this.decodeTableSeq=[];for(var s=0;s<r.length;s++)this._addDecodeChunk(r[s]);if(typeof t.gb18030=="function"){this.gb18030=t.gb18030();var a=this.decodeTables.length;this.decodeTables.push(L2.slice(0));var n=this.decodeTables.length;this.decodeTables.push(L2.slice(0));for(var l=this.decodeTables[0],s=129;s<=254;s++)for(var f=this.decodeTables[dc-l[s]],h=48;h<=57;h++){if(f[h]===zo)f[h]=dc-a;else if(f[h]>dc)throw new Error("gb18030 decode tables conflict at byte 2");for(var A=this.decodeTables[dc-f[h]],m=129;m<=254;m++){if(A[m]===zo)A[m]=dc-n;else{if(A[m]===dc-n)continue;if(A[m]>dc)throw new Error("gb18030 decode tables conflict at byte 3")}for(var w=this.decodeTables[dc-A[m]],v=48;v<=57;v++)w[v]===zo&&(w[v]=QQe)}}}this.defaultCharUnicode=e.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var D={};if(t.encodeSkipVals)for(var s=0;s<t.encodeSkipValsLine truncated
Wanted: ${this.expectedSize}
Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${e}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=e,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#t=this.size,this.emit("size",this.size),this.#e=e,this.emit("integrity",e),r&&(this.#r=r,this.emit("verified",r))}},Pd=class{get isHash(){return!0}constructor(e,r){let s=r?.strict;this.source=e.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?FRt:QRt);if(!a||s&&!V$.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(e,r){let s=Ul(e,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(l=>l.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(e){return e?.strict&&!(V$.includes(this.algorithm)&&this.digest.match(TRt)&&this.options.every(r=>r.match(NRt)))?"":`${this.algorithm}-${this.digest}${ak(this.options)}`}};function GFe(t,e,r,s){let a=t!=="",n=!1,l="",f=s.length-1;for(let A=0;A<f;A++){let m=Pd.prototype.toString.call(s[A],r);m&&(n=!0,l+=m,l+=e)}let h=Pd.prototype.toString.call(s[f],r);return h&&(n=!0,l+=h),a&&n?t+e+l:t+l}var jE=class{get isIntegrity(){return!0}toJSON(){return this.toString()}isEmpty(){return Object.keys(this).length===0}toString(e){let r=e?.sep||" ",s="";if(e?.strict){r=r.replace(/\S+/g," ");for(let a of V$)this[a]&&(s=GFe(s,r,e,this[a]))}else for(let a of Object.keys(this))s=GFe(s,r,e,this[a]);return s}concat(e,r){let s=typeof e=="string"?e:sk(e,r);return Ul(`${this.toString(r)} ${s}`,r)}hexDigest(){return Ul(this,{single:!0}).hexDigest()}merge(e,r){let s=Ul(e,r);for(let a in s)if(this[a]){if(!this[a].find(n=>s[a].find(l=>n.digest===l.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(e,r){let s=Ul(e,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(l=>n.digest===l.digest))||!1}pickAlgorithm(e,r){let s=e?.pickAlgorithm||GRt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,l)=>s(n,l)||n):null}};bA.exports.parse=Ul;function Ul(t,e){if(!t)return null;if(typeof t=="string")return q$(t,e);if(t.algorithm&&t.digest){let r=new jE;return r[t.algorithm]=[t],q$(sk(r,e),e)}else return q$(sk(t,e),e)}function q$(t,e){if(e?.single)return new Pd(t,e);let r=t.trim().split(/\s+/).reduce((s,a)=>{let n=new Pd(a,e);if(n.algorithm&&n.digest){let l=n.algorithm;s[l]||(s[l]=[]),s[l].push(n)}return s},new jE);return r.isEmpty()?null:r}bA.exports.stringify=sk;function sk(t,e){return t.algorithm&&t.digest?Pd.prototype.toString.call(t,e):typeof t=="string"?sk(Ul(t,e),e):jE.prototype.toString.call(t,e)}bA.exports.fromHex=ORt;function ORt(t,e,r){let s=ak(r?.options);return Ul(`${e}-${Buffer.from(t,"hex").toString("base64")}${s}`,r)}bA.exports.fromData=LRt;function LRt(t,e){let r=e?.algorithms||[...Y$],s=ak(e?.options);return r.reduce((a,n)=>{let l=ok.createHash(n).update(t).digest("base64"),f=new Pd(`${n}-${l}${s}`,e);if(f.algorithm&&f.digest){let h=f.algorithm;a[h]||(a[h]=[]),a[h].push(f)}return a},new jE)}bA.exports.fromStream=_Rt;function _Rt(t,e){let r=K$(e);return new Promise((s,a)=>{t.pipe(r),t.on("error",a),r.on("error",a);let n;r.on("integrity",l=>{n=l}),r.on("end",()=>s(n)),r.resume()})}bA.exports.checkData=MRt;function MRt(t,e,r){if(e=Ul(e,r),!e||!Object.keys(e).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=e.pickAlgorithm(r),a=ok.createHash(s).update(t).digest("base64"),n=Ul({algorithm:s,digest:a}),l=n.match(e,r);if(r=r||{},l||!r.error)return l;if(typeof r.size=="number"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}.
Wanted: ${r.size}
Found: ${t.length}`);throw f.code="EBADSIZE",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=e,f.algorithm=s,f.sri=e,f}}bA.exports.checkStream=URt;function URt(t,e,r){if(r=r||Object.create(null),r.integrity=e,e=Ul(e,r),!e||!Object.keys(e).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=K$(r);return new Promise((a,n)=>{t.pipe(s),t.on("error",n),s.on("error",n);let l;s.on("verified",f=>{l=f}),s.on("end",()=>a(l)),s.resume()})}bA.exports.integrityStream=K$;function K$(t=Object.create(null)){return new W$(t)}bA.exports.create=HRt;function HRt(t){let e=t?.algorithms||[...Y$],r=ak(t?.options),s=e.map(ok.createHash);return{update:function(a,n){return s.forEach(l=>l.update(a,n)),this},digest:function(){return e.reduce((n,l)=>{let f=s.shift().digest("base64"),h=new Pd(`${l}-${f}${r}`,t);if(h.algorithm&&h.digest){let A=h.algorithm;n[A]||(n[A]=[]),n[A].push(h)}return n},new jE)}}}var jRt=ok.getHashes(),qFe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>jRt.includes(t));function GRt(t,e){return qFe.indexOf(t.toLowerCase())>=qFe.indexOf(e.toLowerCase())?t:e}});var J$=H((rCr,zFe)=>{var VFe=IG(),WFe=jFe(),qRt=Zg(),YFe={shared:!1,ignoreCargoCult:!0},VRt={status:200,headers:{}},H2=t=>{let e={method:t.method,url:t.url,headers:{},compress:t.compress};return t.headers.forEach((r,s)=>{e.headers[s]=r}),e},KFe=t=>{let e={status:t.status,headers:{}};return t.headers.forEach((r,s)=>{e.headers[s]=r}),e},z$=class{constructor({entry:e,request:r,response:s,options:a}){this.entry=e,this.request=H2(r),this.response=KFe(s),this.options=a,this.policy=new VFe(this.request,this.response,YFe),this.entry&&(this.policy._responseTime=this.entry.metadata.time)}static storable(e,r){return!r.cachePath||r.cache==="no-store"||!["GET","HEAD"].includes(e.method)?!1:new VFe(H2(e),VRt,YFe).storable()}satisfies(e){let r=H2(e);if(this.request.headers.host!==r.headers.host||this.request.compress!==r.compress)return!1;let s=new WFe(this.request),a=new WFe(r);return JSON.stringify(s.mediaTypes())!==JSON.stringify(a.mediaTypes())||JSON.stringify(s.languages())!==JSON.stringify(a.languages())||JSON.stringify(s.encodings())!==JSON.stringify(a.encodings())?!1:this.options.integrity?qRt.parse(this.options.integrity).match(this.entry.integrity):!0}storable(){return this.policy.storable()}get mustRevalidate(){return!!this.policy._rescc["must-revalidate"]}needsRevalidation(e){let r=H2(e);return r.method="GET",!this.policy.satisfiesWithoutRevalidation(r)}responseHeaders(){return this.policy.responseHeaders()}revalidationHeaders(e){let r=H2(e);return this.policy.revalidationHeaders(r)}revalidated(e,r){let s=H2(e),a=KFe(r);return!this.policy.revalidatedPolicy(s,a).modified}};zFe.exports=z$});var ZFe=H((nCr,JFe)=>{var Z$=class extends Error{constructor(e){super(`request to ${e} failed: cache mode is 'only-if-cached' but no cached response is available.`),this.code="ENOTCACHED"}};JFe.exports={NotCachedError:Z$}});var KM=H((iCr,tNe)=>{var WRt=vM(),XFe=Symbol("_flush"),$Fe=Symbol("_flushed"),eNe=Symbol("_flushing"),X$=class extends WRt{constructor(e={}){if(typeof e=="function"&&(e={flush:e}),super(e),typeof e.flush!="function"&&typeof this.flush!="function")throw new TypeError("must provide flush function in options");this[XFe]=e.flush||this.flush}emit(e,...r){if(e!=="end"&&e!=="finish"||this[$Fe])return super.emit(e,...r);if(this[eNe])return;this[eNe]=!0;let s=n=>{this[$Fe]=!0,n?super.emit("error",n):super.emit("end")},a=this[XFe](s);a&&a.then&&a.then(()=>s(),n=>s(n))}};tNe.exports=X$});var ree=H((sCr,tee)=>{var{Minipass:rNe}=Ko(),j2=Symbol("_data"),G2=Symbol("_length"),$$=class extends rNe{constructor(e){super(e),this[j2]=[],this[G2]=0}write(e,r,s){typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=Buffer.isBuffer(e)?e:Buffer.from(e,r);return this[j2].push(a),this[G2]+=a.length,s&&s(),!0}end(e,r,s){typeof e=="function"&&(s=e,e=null),typeof r=="function"&&(s=r,r="utf8"),e&&this.write(e,r);let a=Buffer.concat(this[j2],this[G2]);return super.write(a),super.end(s)}};tee.exports=$$;var eee=class extends rNe{constructor(e){super(e),this[j2]=[],this[G2]=0}write(e,r,s){typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=Buffer.isBuffer(e)?e:Buffer.from(e,r);return this[j2].push(a),this[G2]+=a.length,super.write(e,r,s)}end(e,r,s){typeof e=="function"&&(s=e,e=null),typeof r=="function"&&(s=r,r="utf8"),e&&this.write(e,r);let a=Buffer.concat(this[j2],this[G2]);return this.emit("collect",a),super.end(s)}};tee.exports.PassThrough=eee});var q2=H((oCr,oNe)=>{var YRt=vM(),KRt=Ae("events"),zRt=t=>t&&t instanceof KRt&&(typeof t.pipe=="function"||typeof t.write=="function"&&typeof t.end=="function"),GE=Symbol("_head"),Hl=Symbol("_tail"),nee=Symbol( Line truncated
`+l.map(v=>{let D=JSON.stringify(v);return`${n4(D)} ${D}`}).join(`
`),h=async()=>{let v=EQt(PA.join(t,"tmp"),s.tmpPrefix);return await Iee(PA.dirname(v),{recursive:!0}),{target:v,moved:!1}},A=async v=>{if(!v.moved)return $Ne(v.target,{recursive:!0,force:!0})},m=async v=>{await gQt(v.target,f,{flag:"wx"}),await Iee(PA.dirname(a),{recursive:!0}),await BQt(v.target,a),v.moved=!0},w=await h();try{await m(w)}finally{await A(w)}return l.reverse().map(v=>i4(t,v,!0))}jl.exports.insert=eOe;async function eOe(t,e,r,s={}){let{metadata:a,size:n,time:l}=s,f=fk(t,e),h={key:e,integrity:r&&yQt.stringify(r),time:l||Date.now(),size:n,metadata:a};try{await Iee(PA.dirname(f),{recursive:!0});let A=JSON.stringify(h);await AQt(f,`
${n4(A)} ${A}`)}catch(A){if(A.code==="ENOENT")return;throw A}return i4(t,h)}jl.exports.find=SQt;async function SQt(t,e){let r=fk(t,e);try{return(await r4(r)).reduce((a,n)=>n&&n.key===e?i4(t,n):a,null)}catch(s){if(s.code==="ENOENT")return null;throw s}}jl.exports.delete=bQt;function bQt(t,e,r={}){if(!r.removeFully)return eOe(t,e,null,r);let s=fk(t,e);return $Ne(s,{recursive:!0,force:!0})}jl.exports.lsStream=tOe;function tOe(t){let e=wee(t),r=new mQt({objectMode:!0});return Promise.resolve().then(async()=>{let{default:s}=await Promise.resolve().then(()=>(t4(),e4)),a=await Eee(e);return await s(a,async n=>{let l=PA.join(e,n),f=await Eee(l);await s(f,async h=>{let A=PA.join(l,h),m=await Eee(A);await s(m,async w=>{let v=PA.join(A,w);try{let I=(await r4(v)).reduce((R,N)=>(R.set(N.key,N),R),new Map);for(let R of I.values()){let N=i4(t,R);N&&r.write(N)}}catch(D){if(D.code==="ENOENT")return;throw D}},{concurrency:yee})},{concurrency:yee})},{concurrency:yee}),r.end(),r}).catch(s=>r.emit("error",s)),r}jl.exports.ls=DQt;async function DQt(t){return(await tOe(t).collect()).reduce((r,s)=>(r[s.key]=s,r),{})}jl.exports.bucketEntries=r4;async function r4(t,e){let r=await pQt(t,"utf8");return PQt(r,e)}function PQt(t){let e=[];return t.split(`
`).forEach(r=>{if(!r)return;let s=r.split(" ");if(!s[1]||n4(s[1])!==s[0])return;let a;try{a=JSON.parse(s[1])}catch{}a&&e.push(a)}),e}jl.exports.bucketDir=wee;function wee(t){return PA.join(t,`index-v${CQt}`)}jl.exports.bucketPath=fk;function fk(t,e){let r=rOe(e);return PA.join.apply(PA,[wee(t)].concat(wQt(r)))}jl.exports.hashKey=rOe;function rOe(t){return nOe(t,"sha256")}jl.exports.hashEntry=n4;function n4(t){return nOe(t,"sha1")}function nOe(t,e){return hQt.createHash(e).update(t).digest("hex")}function i4(t,e,r){return!e.integrity&&!r?null:{key:e.key,integrity:e.integrity,path:e.integrity?IQt(t,e.integrity):void 0,size:e.size,time:e.time,metadata:e.metadata}}function Eee(t){return dQt(t).catch(e=>{if(e.code==="ENOENT"||e.code==="ENOTDIR")return[];throw e})}});var z2=H(o4=>{"use strict";Object.defineProperty(o4,"__esModule",{value:!0});o4.LRUCache=void 0;var xQt=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,sOe=new Set,Cee=typeof process=="object"&&process?process:{},oOe=(t,e,r,s)=>{typeof Cee.emitWarning=="function"?Cee.emitWarning(t,e,r,s):console.error(`[${r}] ${e}: ${t}`)},s4=globalThis.AbortController,iOe=globalThis.AbortSignal;if(typeof s4>"u"){iOe=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(s,a){this._onabort.push(a)}},s4=class{constructor(){e()}signal=new iOe;abort(s){if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(let a of this.signal._onabort)a(s);this.signal.onabort?.(s)}}};let t=Cee.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{t&&(t=!1,oOe("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}var kQt=t=>!sOe.has(t),PCr=Symbol("type"),Xg=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),aOe=t=>Xg(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?K2:null:null,K2=class extends Array{constructor(e){super(e),this.fill(0)}},Bee=class t{heap;length;static#e=!1;static create(e){let r=aOe(e);if(!r)return[];t.#e=!0;let s=new t(e,r);return t.#e=!1,s}constructor(e,r){if(!t.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new r(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},vee=class t{#e;#t;#r;#n;#s;#i;#l;#u;get perf(){return this.#u}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#c;#A;#p;#f;#a;#d;#w;#I;#g;#P;#m;#v;#S;#y;#E;#C;#b;#o;#F;static unsafeExposeInternals(e){return{starts:e.#S,ttls:e.#y,autopurgeTimers:e.#E,sizes:e.#v,keyMap:e.#p,keyList:e.#f,valList:e.#a,next:e.#d,prev:e.#w,get head(){return e.#I},get tail(){return e.#g},free:e.#P,isBackgroundFetch:r=>e.#h(r),backgroundFetch:(r,s,a,n)=>e.#j(r,s,a,n),moveToTail:r=>e.#O(r),indexes:r=>e.#k(r),rindexes:r=>e.#R(r),isStale:r=>e.#B(r)}}get max(){return this.#e}get maxSize(){return this.#t}get calculatedSize(){return this.#A}get size(){return this.#c}get fetchMethod(){return this.#i}get memoMethod(){return this.#l}get dispose(){return this.#r}get onInsert(){return this.#n}get disposeAfter(){return this.#s}constructor(e){let{max:r=0,ttl:s,ttlResolution:a=1,ttlAutopurge:n,updateAgeOnGet:l,updateAgeOnHas:f,allowStale:h,dispose:A,onInsert:m,disposeAfter:w,noDisposeOnSet:v,noUpdateTTL:D,maxSize:I=0,maxEntrySize:R=0,sizeCalculation:N,fetchMethod:U,memoMethod:V,noDeleteOnFetchRejection:ee,noDeleteOnStaleGet:te,allowStaleOnFetchRejection:ie,allowStaleOnFetchAbort:ae,ignoreFetchAbort:ge,perf:de}=e;if(de!==void 0&&typeof de?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#u=de??xQt,r!==0&&!Xg(r))throw new TypeError("max option must be a nonnegative integer");let xe=r?aOe(r):Array;if(!xe)throw new Error("invalid max value: "+r);if(this.#e=r,this.#t=I,this.maxEntrySize=R||this.#t,this.sizeCalculation=N,this.sizeCalculation){if(!this.#t&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(V!==void 0&&typeof V!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#l=V,U!==void 0&&typeof U!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#i=U,this.#b=!!U,this.#p=new Map,this.#f=new Array(r).fill(void 0),this.#a=new Array(r).fill(void 0),this.#d=new xe(r),this.#w=new xe(r),this.#I=0,this.#g=0 Line truncated
Wanted: ${t}
Found: ${e}`);return r.code="EINTEGRITY",r.expected=t,r.found=e,r}});var xOe=H((NCr,_ee)=>{"use strict";var SOe=Y2(),bOe=hk(),DOe=vOe(),hFt=KM(),{PassThrough:AFt}=ree(),pFt=q2(),POe=t=>({algorithms:["sha512"],...t});_ee.exports=dFt;async function dFt(t,e,r,s={}){let{memoize:a}=s;s=POe(s);let n=await DOe(t,r,s),l=await SOe.insert(t,e,n.integrity,{...s,size:n.size});return a&&bOe.put(t,l,r,s),n.integrity}_ee.exports.stream=gFt;function gFt(t,e,r={}){let{memoize:s}=r;r=POe(r);let a,n,l,f,h=new pFt;if(s){let m=new AFt().on("collect",w=>{f=w});h.push(m)}let A=DOe.stream(t,r).on("integrity",m=>{a=m}).on("size",m=>{n=m}).on("error",m=>{l=m});return h.push(A),h.push(new hFt({async flush(){if(!l){let m=await SOe.insert(t,e,a,{...r,size:n});s&&f&&bOe.put(t,m,f,r),h.emit("integrity",a),h.emit("size",n)}}})),h}});var ROe=H(KE=>{"use strict";Object.defineProperty(KE,"__esModule",{value:!0});KE.range=KE.balanced=void 0;var mFt=(t,e,r)=>{let s=t instanceof RegExp?kOe(t,r):t,a=e instanceof RegExp?kOe(e,r):e,n=s!==null&&a!=null&&(0,KE.range)(s,a,r);return n&&{start:n[0],end:n[1],pre:r.slice(0,n[0]),body:r.slice(n[0]+s.length,n[1]),post:r.slice(n[1]+a.length)}};KE.balanced=mFt;var kOe=(t,e)=>{let r=e.match(t);return r?r[0]:null},yFt=(t,e,r)=>{let s,a,n,l,f,h=r.indexOf(t),A=r.indexOf(e,h+1),m=h;if(h>=0&&A>0){if(t===e)return[h,A];for(s=[],n=r.length;m>=0&&!f;){if(m===h)s.push(m),h=r.indexOf(t,m+1);else if(s.length===1){let w=s.pop();w!==void 0&&(f=[w,A])}else a=s.pop(),a!==void 0&&a<n&&(n=a,l=A),A=r.indexOf(e,m+1);m=h<A&&h>=0?h:A}s.length&&l!==void 0&&(f=[n,l])}return f};KE.range=yFt});var _Oe=H(Hee=>{"use strict";Object.defineProperty(Hee,"__esModule",{value:!0});Hee.expand=RFt;var TOe=ROe(),QOe="\0SLASH"+Math.random()+"\0",FOe="\0OPEN"+Math.random()+"\0",Uee="\0CLOSE"+Math.random()+"\0",NOe="\0COMMA"+Math.random()+"\0",OOe="\0PERIOD"+Math.random()+"\0",EFt=new RegExp(QOe,"g"),IFt=new RegExp(FOe,"g"),wFt=new RegExp(Uee,"g"),CFt=new RegExp(NOe,"g"),BFt=new RegExp(OOe,"g"),vFt=/\\\\/g,SFt=/\\{/g,bFt=/\\}/g,DFt=/\\,/g,PFt=/\\./g;function Mee(t){return isNaN(t)?t.charCodeAt(0):parseInt(t,10)}function xFt(t){return t.replace(vFt,QOe).replace(SFt,FOe).replace(bFt,Uee).replace(DFt,NOe).replace(PFt,OOe)}function kFt(t){return t.replace(EFt,"\\").replace(IFt,"{").replace(wFt,"}").replace(CFt,",").replace(BFt,".")}function LOe(t){if(!t)return[""];let e=[],r=(0,TOe.balanced)("{","}",t);if(!r)return t.split(",");let{pre:s,body:a,post:n}=r,l=s.split(",");l[l.length-1]+="{"+a+"}";let f=LOe(n);return n.length&&(l[l.length-1]+=f.shift(),l.push.apply(l,f)),e.push.apply(e,l),e}function RFt(t){return t?(t.slice(0,2)==="{}"&&(t="\\{\\}"+t.slice(2)),Ek(xFt(t),!0).map(kFt)):[]}function TFt(t){return"{"+t+"}"}function QFt(t){return/^-?0\d/.test(t)}function FFt(t,e){return t<=e}function NFt(t,e){return t>=e}function Ek(t,e){let r=[],s=(0,TOe.balanced)("{","}",t);if(!s)return[t];let a=s.pre,n=s.post.length?Ek(s.post,!1):[""];if(/\$$/.test(s.pre))for(let l=0;l<n.length;l++){let f=a+"{"+s.body+"}"+n[l];r.push(f)}else{let l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(s.body),f=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(s.body),h=l||f,A=s.body.indexOf(",")>=0;if(!h&&!A)return s.post.match(/,(?!,).*\}/)?(t=s.pre+"{"+s.body+Uee+s.post,Ek(t)):[t];let m;if(h)m=s.body.split(/\.\./);else if(m=LOe(s.body),m.length===1&&m[0]!==void 0&&(m=Ek(m[0],!1).map(TFt),m.length===1))return n.map(v=>s.pre+m[0]+v);let w;if(h&&m[0]!==void 0&&m[1]!==void 0){let v=Mee(m[0]),D=Mee(m[1]),I=Math.max(m[0].length,m[1].length),R=m.length===3&&m[2]!==void 0?Math.abs(Mee(m[2])):1,N=FFt;D<v&&(R*=-1,N=NFt);let V=m.some(QFt);w=[];for(let ee=v;N(ee,D);ee+=R){let te;if(f)te=String.fromCharCode(ee),te==="\\"&&(te="");else if(te=String(ee),V){let ie=I-te.length;if(ie>0){let ae=new Array(ie+1).join("0");ee<0?te="-"+ae+te.slice(1):te=ae+te}}w.push(te)}}else{w=[];for(let v=0;v<m.length;v++)w.push.apply(w,Ek(m[v],!1))}for(let v=0;v<w.length;v++)for(let D=0;D<n.length;D++){let I=a+w[v]+n[D];(!e||h||I)&&r.push(I)}}return r}});var MOe=H(m4=>{"use strict";Object.defineProperty(m4,"__esModule",{value:!0});m4.assertValidPattern=void 0;var OFt=1024*64,LFt=t=>{if(typeof t!="string")throw new TypeError("invalid pattern");if(t.length>OFt)throw new TypeError("pattern is too long")};m4.assertValidPattern=LFt});var HOe=H(y4=>{"use strict";Object.defineProperty(y4,"__esModule",{value:!0});y4.parseClass=void 0;var _Ft={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Ik=t=>t.replace(/[[\]\\-]/g,"\\$&"),MFt=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),UOe=t=>t.join(""),UFt=(t,e)=>{let r=e;if(t.charAt(r)!=="[")throw new Line truncated
globstar while`,e,v,r,D,I),this.matchOne(e.slice(v),r.slice(D),s))return this.debug("globstar found match!",v,h,I),!0;if(I==="."||I===".."||!a.dot&&I.charAt(0)==="."){this.debug("dot detected!",e,v,r,D);break}this.debug("globstar swallow a segment, and continue"),v++}return!!(s&&(this.debug(`
>>> no match, partial?`,e,v,r,D),v===h))}let R;if(typeof m=="string"?(R=w===m,this.debug("string match",m,w,R)):(R=m.test(w),this.debug("pattern match",m,w,R)),!R)return!1}if(l===h&&f===A)return!0;if(l===h)return s;if(f===A)return l===h-1&&e[l]==="";throw new Error("wtf?")}braceExpand(){return(0,_r.braceExpand)(this.pattern,this.options)}parse(e){(0,S4.assertValidPattern)(e);let r=this.options;if(e==="**")return _r.GLOBSTAR;if(e==="")return"";let s,a=null;(s=e.match(uNt))?a=r.dot?hNt:fNt:(s=e.match(eNt))?a=(r.nocase?r.dot?iNt:nNt:r.dot?rNt:tNt)(s[1]):(s=e.match(ANt))?a=(r.nocase?r.dot?dNt:pNt:r.dot?gNt:mNt)(s):(s=e.match(sNt))?a=r.dot?aNt:oNt:(s=e.match(cNt))&&(a=lNt);let n=YOe.AST.fromGlob(e,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?ENt:r.dot?INt:wNt,a=new Set(r.nocase?["i"]:[]),n=e.map(h=>{let A=h.map(w=>{if(w instanceof RegExp)for(let v of w.flags.split(""))a.add(v);return typeof w=="string"?DNt(w):w===_r.GLOBSTAR?_r.GLOBSTAR:w._src});A.forEach((w,v)=>{let D=A[v+1],I=A[v-1];w!==_r.GLOBSTAR||I===_r.GLOBSTAR||(I===void 0?D!==void 0&&D!==_r.GLOBSTAR?A[v+1]="(?:\\/|"+s+"\\/)?"+D:A[v]=s:D===void 0?A[v-1]=I+"(?:\\/|\\/"+s+")?":D!==_r.GLOBSTAR&&(A[v-1]=I+"(?:\\/|\\/"+s+"\\/)"+D,A[v+1]=_r.GLOBSTAR))});let m=A.filter(w=>w!==_r.GLOBSTAR);if(this.partial&&m.length>=1){let w=[];for(let v=1;v<=m.length;v++)w.push(m.slice(0,v).join("/"));return"(?:"+w.join("|")+")"}return m.join("/")}).join("|"),[l,f]=e.length>1?["(?:",")"]:["",""];n="^"+l+n+f+"$",this.partial&&(n="^(?:\\/|"+l+n.slice(1,-1)+f+")$"),this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,r=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&r)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let a=this.slashSplit(e);this.debug(this.pattern,"split",a);let n=this.set;this.debug(this.pattern,"set",n);let l=a[a.length-1];if(!l)for(let f=a.length-2;!l&&f>=0;f--)l=a[f];for(let f=0;f<n.length;f++){let h=n[f],A=a;if(s.matchBase&&h.length===1&&(A=[l]),this.matchOne(A,h,r))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(e){return _r.minimatch.defaults(e).Minimatch}};_r.Minimatch=zE;var PNt=qee();Object.defineProperty(_r,"AST",{enumerable:!0,get:function(){return PNt.AST}});var xNt=Vee();Object.defineProperty(_r,"escape",{enumerable:!0,get:function(){return xNt.escape}});var kNt=I4();Object.defineProperty(_r,"unescape",{enumerable:!0,get:function(){return kNt.unescape}});_r.minimatch.AST=YOe.AST;_r.minimatch.Minimatch=zE;_r.minimatch.escape=ZFt.escape;_r.minimatch.unescape=XFt.unescape});var uLe=H(yi=>{"use strict";var RNt=yi&&yi.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),TNt=yi&&yi.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),QNt=yi&&yi.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&RNt(e,t,r);return TNt(e,t),e};Object.defineProperty(yi,"__esModule",{value:!0});yi.PathScurry=yi.Path=yi.PathScurryDarwin=yi.PathScurryPosix=yi.PathScurryWin32=yi.PathScurryBase=yi.PathPosix=yi.PathWin32=yi.PathBase=yi.ChildrenCache=yi.ResolveCache=void 0;var Q4=z2(),k4=Ae("node:path"),FNt=Ae("node:url"),Ck=Ae("fs"),NNt=QNt(Ae("node:fs")),ONt=Ck.realpathSync.native,b4=Ae("node:fs/promises"),ZOe=Ko(),Bk={lstatSync:Ck.lstatSync,readdir:Ck.readdir,readdirSync:Ck.readdirSync,readlinkSync:Ck.readlinkSync,realpathSync:ONt,promises:{lstat:b4.lstat,readdir:b4.readdir,readlink:b4.readlink,realpath:b4.realpath}},rLe=t=>!t||t===Bk||t===NNt?Bk:{...Bk,...t,promises:{...Bk.promises,...t.promises||{}}},nLe=/^\\\\\?\\([a-z]:)\\?$/i,LNt=t=>t.replace(/\//g,"\\").replace(nLe,"$1\\"),_Nt=/[\\\/]/,Uu=0,iLe=1,sLe=2,kA=4,oLe=6,aLe=8,JE=10,cLe=12,Mu=15,wk=~Mu,Wee=16,XOe=32,vk=64,nh=128,D4=256,x4=512,$Oe=vk|nh|x4,MNt=1023,Yee=t=>t.isFile()?aLe:t.isDirectory()?kA:t.isSymbolicLink()?JE:t.isCharacterDevice()?sLe:t.isBlockDevice()?oLe:t.isSocket()?cLe:t.isFIFO()?iLe:Uu,eLe=new Q4.LRUCache({max:2**12}),Sk=t=>{let e=eLe.get(t);if(e)return e;let r=t.normalize("NFKD");return eLe.set(t,r),r},tLe=new Q4.LRUCache({max:2**12}),P4=t=>{let e=tLe.get(t);if(e)return e;let r=Sk(t.toLowerCase());return tLe.set(t,r),r},bk=class extends Q4.LRUCache{ Line truncated
`).join(`
`+n),t.push(a+"m+"+Z4.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=NLt()+e+" "+t[0]}function NLt(){return xo.inspectOpts.hideDate?"":new Date().toISOString()+" "}function OLt(...t){return process.stderr.write(J4.formatWithOptions(xo.inspectOpts,...t)+`
`)}function LLt(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function _Lt(){return process.env.DEBUG}function MLt(t){t.inspectOpts={};let e=Object.keys(xo.inspectOpts);for(let r=0;r<e.length;r++)t.inspectOpts[e[r]]=xo.inspectOpts[e[r]]}Z4.exports=Ste()(xo);var{formatters:i_e}=Z4.exports;i_e.o=function(t){return this.inspectOpts.colors=this.useColors,J4.inspect(t,this.inspectOpts).split(`
`).map(e=>e.trim()).join(" ")};i_e.O=function(t){return this.inspectOpts.colors=this.useColors,J4.inspect(t,this.inspectOpts)}});var $E=H((g1r,bte)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?bte.exports=n_e():bte.exports=s_e()});var c_e=H(sl=>{"use strict";var ULt=sl&&sl.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),HLt=sl&&sl.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),o_e=sl&&sl.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&ULt(e,t,r);return HLt(e,t),e};Object.defineProperty(sl,"__esModule",{value:!0});sl.req=sl.json=sl.toBuffer=void 0;var jLt=o_e(Ae("http")),GLt=o_e(Ae("https"));async function a_e(t){let e=0,r=[];for await(let s of t)e+=s.length,r.push(s);return Buffer.concat(r,e)}sl.toBuffer=a_e;async function qLt(t){let r=(await a_e(t)).toString("utf8");try{return JSON.parse(r)}catch(s){let a=s;throw a.message+=` (input: ${r})`,a}}sl.json=qLt;function VLt(t,e={}){let s=((typeof t=="string"?t:t.href).startsWith("https:")?GLt:jLt).request(t,e),a=new Promise((n,l)=>{s.once("response",n).once("error",l).end()});return s.then=a.then.bind(a),s}sl.req=VLt});var Ok=H(Gl=>{"use strict";var u_e=Gl&&Gl.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),WLt=Gl&&Gl.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),f_e=Gl&&Gl.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&u_e(e,t,r);return WLt(e,t),e},YLt=Gl&&Gl.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&u_e(e,t,r)};Object.defineProperty(Gl,"__esModule",{value:!0});Gl.Agent=void 0;var KLt=f_e(Ae("net")),l_e=f_e(Ae("http")),zLt=Ae("https");YLt(c_e(),Gl);var TA=Symbol("AgentBaseInternalState"),Dte=class extends l_e.Agent{constructor(e){super(e),this[TA]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:r}=new Error;return typeof r!="string"?!1:r.split(`
`).some(s=>s.indexOf("(https.js:")!==-1||s.indexOf("node:https:")!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let r=new KLt.Socket({writable:!1});return this.sockets[e].push(r),this.totalSocketCount++,r}decrementSockets(e,r){if(!this.sockets[e]||r===null)return;let s=this.sockets[e],a=s.indexOf(r);a!==-1&&(s.splice(a,1),this.totalSocketCount--,s.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?zLt.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,r,s){let a={...r,secureEndpoint:this.isSecureEndpoint(r)},n=this.getName(a),l=this.incrementSockets(n);Promise.resolve().then(()=>this.connect(e,a)).then(f=>{if(this.decrementSockets(n,l),f instanceof l_e.Agent)try{return f.addRequest(e,a)}catch(h){return s(h)}this[TA].currentSocket=f,super.createSocket(e,r,s)},f=>{this.decrementSockets(n,l),s(f)})}createConnection(){let e=this[TA].currentSocket;if(this[TA].currentSocket=void 0,!e)throw new Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[TA].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){this[TA]&&(this[TA].defaultPort=e)}get protocol(){return this[TA].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[TA]&&(this[TA].protocol=e)}};Gl.Agent=Dte});var p_e=H(Hu=>{"use strict";var JLt=Hu&&Hu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),ZLt=Hu&&Hu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),A_e=Hu&&Hu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&JLt(e,t,r);return ZLt(e,t),e},XLt=Hu&&Hu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Hu,"__esModule",{value:!0});Hu.HttpProxyAgent=void 0;var $Lt=A_e(Ae("net")),e_t=A_e(Ae("tls")),t_t=XLt($E()),r_t=Ae("events"),n_t=Ok(),h_e=Ae("url"),uB=(0,t_t.default)("http-proxy-agent"),X4=class extends n_t.Agent{constructor(e,r){super(r),this.proxy=typeof e=="string"?new h_e.URL(e):e,this.proxyHeaders=r?.headers??{},uB("Creating new HttpProxyAgent instance: %o",this.proxy.href);let s=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),a=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={...r?i_t(r,"headers"):null,host:s,port:a}}addRequest(e,r){e._header=null,this.setRequestProps(e,r),super.addRequest(e,r)}setRequestProps(e,r){let{proxy:s}=this,a=r.secureEndpoint?"https:":"http:",n=e.getHeader("host")||"localhost",l=`${a}//${n}`,f=new h_e.URL(e.path,l);r.port!==80&&(f.port=String(r.port)),e.path=String(f);let h=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders};if(s.username||s.password){let A=`${decodeURIComponent(s.username)}:${decodeURIComponent(s.password)}`;h["Proxy-Authorization"]=`Basic ${Buffer.from(A).toString("base64")}`}h["Proxy-Connection"]||(h["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let A of Object.keys(h)){let m=h[A];m&&e.setHeader(A,m)}}async connect(e,r){e._header=null,e.path.includes("://")||this.setRequestProps(e,r);let s,a;uB("Regenerating stored HTTP header string for request"),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(uB("Patching connection write() output buffer with updated header"),s=e.outputData[0].data,a=s.indexOf(`\r
\r
`)+4,e.outputData[0].data=e._header+s.substring(a),uB("Output buffer: %o",e.outputData[0].data));let n;return this.proxy.protocol==="https:"?(uB("Creating `tls.Socket`: %o",this.connectOpts),n=e_t.connect(this.connectOpts)):(uB("Creating `net.Socket`: %o",this.connectOpts),n=$Lt.connect(this.connectOpts)),await(0,r_t.once)(n,"connect"),n}};X4.protocols=["http","https"];Hu.HttpProxyAgent=X4;function i_t(t,...e){let r={},s;for(s in t)e.includes(s)||(r[s]=t[s]);return r}});var d_e=H(fB=>{"use strict";var s_t=fB&&fB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fB,"__esModule",{value:!0});fB.parseProxyResponse=void 0;var o_t=s_t($E()),$4=(0,o_t.default)("https-proxy-agent:parse-proxy-response");function a_t(t){return new Promise((e,r)=>{let s=0,a=[];function n(){let m=t.read();m?A(m):t.once("readable",n)}function l(){t.removeListener("end",f),t.removeListener("error",h),t.removeListener("readable",n)}function f(){l(),$4("onend"),r(new Error("Proxy connection ended before receiving CONNECT response"))}function h(m){l(),$4("onerror %o",m),r(m)}function A(m){a.push(m),s+=m.length;let w=Buffer.concat(a,s),v=w.indexOf(`\r
\r
`);if(v===-1){$4("have not received end of HTTP headers yet..."),n();return}let D=w.slice(0,v).toString("ascii").split(`\r
`),I=D.shift();if(!I)return t.destroy(),r(new Error("No header received from proxy CONNECT response"));let R=I.split(" "),N=+R[1],U=R.slice(2).join(" "),V={};for(let ee of D){if(!ee)continue;let te=ee.indexOf(":");if(te===-1)return t.destroy(),r(new Error(`Invalid header from proxy CONNECT response: "${ee}"`));let ie=ee.slice(0,te).toLowerCase(),ae=ee.slice(te+1).trimStart(),ge=V[ie];typeof ge=="string"?V[ie]=[ge,ae]:Array.isArray(ge)?ge.push(ae):V[ie]=ae}$4("got proxy server response: %o %o",I,V),l(),e({connect:{statusCode:N,statusText:U,headers:V},buffered:w})}t.on("error",h),t.on("end",f),n()})}fB.parseProxyResponse=a_t});var w_e=H(ju=>{"use strict";var c_t=ju&&ju.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),l_t=ju&&ju.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),E_e=ju&&ju.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&c_t(e,t,r);return l_t(e,t),e},I_e=ju&&ju.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ju,"__esModule",{value:!0});ju.HttpsProxyAgent=void 0;var eU=E_e(Ae("net")),g_e=E_e(Ae("tls")),u_t=I_e(Ae("assert")),f_t=I_e($E()),h_t=Ok(),A_t=Ae("url"),p_t=d_e(),Lk=(0,f_t.default)("https-proxy-agent"),m_e=t=>t.servername===void 0&&t.host&&!eU.isIP(t.host)?{...t,servername:t.host}:t,tU=class extends h_t.Agent{constructor(e,r){super(r),this.options={path:void 0},this.proxy=typeof e=="string"?new A_t.URL(e):e,this.proxyHeaders=r?.headers??{},Lk("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let s=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),a=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...r?y_e(r,"headers"):null,host:s,port:a}}async connect(e,r){let{proxy:s}=this;if(!r.host)throw new TypeError('No "host" provided');let a;s.protocol==="https:"?(Lk("Creating `tls.Socket`: %o",this.connectOpts),a=g_e.connect(m_e(this.connectOpts))):(Lk("Creating `net.Socket`: %o",this.connectOpts),a=eU.connect(this.connectOpts));let n=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},l=eU.isIPv6(r.host)?`[${r.host}]`:r.host,f=`CONNECT ${l}:${r.port} HTTP/1.1\r
`;if(s.username||s.password){let v=`${decodeURIComponent(s.username)}:${decodeURIComponent(s.password)}`;n["Proxy-Authorization"]=`Basic ${Buffer.from(v).toString("base64")}`}n.Host=`${l}:${r.port}`,n["Proxy-Connection"]||(n["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let v of Object.keys(n))f+=`${v}: ${n[v]}\r
`;let h=(0,p_t.parseProxyResponse)(a);a.write(`${f}\r
`);let{connect:A,buffered:m}=await h;if(e.emit("proxyConnect",A),this.emit("proxyConnect",A,e),A.statusCode===200)return e.once("socket",d_t),r.secureEndpoint?(Lk("Upgrading socket connection to TLS"),g_e.connect({...y_e(m_e(r),"host","path","port"),socket:a})):a;a.destroy();let w=new eU.Socket({writable:!1});return w.readable=!0,e.once("socket",v=>{Lk("Replaying proxy buffer for failed request"),(0,u_t.default)(v.listenerCount("data")>0),v.push(m),v.push(null)}),w}};tU.protocols=["http","https"];ju.HttpsProxyAgent=tU;function d_t(t){t.resume()}function y_e(t,...e){let r={},s;for(s in t)e.includes(s)||(r[s]=t[s]);return r}});var S_e=H(Nd=>{"use strict";Object.defineProperty(Nd,"__esModule",{value:!0});var C_e=Ae("buffer"),eI={INVALID_ENCODING:"Invalid encoding provided. Please specify a valid encoding the internal Node.js Buffer supports.",INVALID_SMARTBUFFER_SIZE:"Invalid size provided. Size must be a valid integer greater than zero.",INVALID_SMARTBUFFER_BUFFER:"Invalid Buffer provided in SmartBufferOptions.",INVALID_SMARTBUFFER_OBJECT:"Invalid SmartBufferOptions object supplied to SmartBuffer constructor or factory methods.",INVALID_OFFSET:"An invalid offset value was provided.",INVALID_OFFSET_NON_NUMBER:"An invalid offset value was provided. A numeric value is required.",INVALID_LENGTH:"An invalid length value was provided.",INVALID_LENGTH_NON_NUMBER:"An invalid length value was provived. A numeric value is required.",INVALID_TARGET_OFFSET:"Target offset is beyond the bounds of the internal SmartBuffer data.",INVALID_TARGET_LENGTH:"Specified length value moves cursor beyong the bounds of the internal SmartBuffer data.",INVALID_READ_BEYOND_BOUNDS:"Attempted to read beyond the bounds of the managed data.",INVALID_WRITE_BEYOND_BOUNDS:"Attempted to write beyond the bounds of the managed data."};Nd.ERRORS=eI;function g_t(t){if(!C_e.Buffer.isEncoding(t))throw new Error(eI.INVALID_ENCODING)}Nd.checkEncoding=g_t;function B_e(t){return typeof t=="number"&&isFinite(t)&&I_t(t)}Nd.isFiniteInteger=B_e;function v_e(t,e){if(typeof t=="number"){if(!B_e(t)||t<0)throw new Error(e?eI.INVALID_OFFSET:eI.INVALID_LENGTH)}else throw new Error(e?eI.INVALID_OFFSET_NON_NUMBER:eI.INVALID_LENGTH_NON_NUMBER)}function m_t(t){v_e(t,!1)}Nd.checkLengthValue=m_t;function y_t(t){v_e(t,!0)}Nd.checkOffsetValue=y_t;function E_t(t,e){if(t<0||t>e.length)throw new Error(eI.INVALID_TARGET_OFFSET)}Nd.checkTargetOffset=E_t;function I_t(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t}function w_t(t){if(typeof BigInt>"u")throw new Error("Platform does not support JS BigInt type.");if(typeof C_e.Buffer.prototype[t]>"u")throw new Error(`Platform does not support Buffer.prototype.${t}.`)}Nd.bigIntAndBufferInt64Check=w_t});var D_e=H(xte=>{"use strict";Object.defineProperty(xte,"__esModule",{value:!0});var bn=S_e(),b_e=4096,C_t="utf8",Pte=class t{constructor(e){if(this.length=0,this._encoding=C_t,this._writeOffset=0,this._readOffset=0,t.isSmartBufferOptions(e))if(e.encoding&&(bn.checkEncoding(e.encoding),this._encoding=e.encoding),e.size)if(bn.isFiniteInteger(e.size)&&e.size>0)this._buff=Buffer.allocUnsafe(e.size);else throw new Error(bn.ERRORS.INVALID_SMARTBUFFER_SIZE);else if(e.buff)if(Buffer.isBuffer(e.buff))this._buff=e.buff,this.length=e.buff.length;else throw new Error(bn.ERRORS.INVALID_SMARTBUFFER_BUFFER);else this._buff=Buffer.allocUnsafe(b_e);else{if(typeof e<"u")throw new Error(bn.ERRORS.INVALID_SMARTBUFFER_OBJECT);this._buff=Buffer.allocUnsafe(b_e)}}static fromSize(e,r){return new this({size:e,encoding:r})}static fromBuffer(e,r){return new this({buff:e,encoding:r})}static fromOptions(e){return new this(e)}static isSmartBufferOptions(e){let r=e;return r&&(r.encoding!==void 0||r.size!==void 0||r.buff!==void 0)}readInt8(e){return this._readNumberValue(Buffer.prototype.readInt8,1,e)}readInt16BE(e){return this._readNumberValue(Buffer.prototype.readInt16BE,2,e)}readInt16LE(e){return this._readNumberValue(Buffer.prototype.readInt16LE,2,e)}readInt32BE(e){return this._readNumberValue(Buffer.prototype.readInt32BE,4,e)}readInt32LE(e){return this._readNumberValue(Buffer.prototype.readInt32LE,4,e)}readBigInt64BE(e){return bn.bigIntAndBufferInt64Check("readBigInt64BE"),this._readNumberValue(Buffer.prototype.readBigInt64BE,8,e)}readBigInt64LE(e){return bn.bigIntAndBufferInt64Check("readBigInt64LE"),this._readNumberValue(Buffer.prototype.readBigInt64LE,8,e)}writeInt8(e,r){return this._writeNumberValue(Buffer.prototype.writeInt8,1,e,r),this}insertInt8(e,r){return this._insertNumberValue(Buffer.prototype.writeInt8,1,e,r)}writeInt16BE(e,r){return this._writeNumberValue(Buffer.prototype.writeInt16BE,2,e,r)}insertInt16BE(e,r){return this._insertNumberValue(Buffer.prototype.writeInt16BE,2,e,r)}writeInt16LE(e,r){return this._writeNumberValue(Buffer.prototype.writeInt16LE,2,e,r)}insertInt16LE(e,r){return this._insertNumberValue(Buffer.prototype.writeInt16LE,2,e,r)}writeInt32BE(e,r){return this._writeNumberValue(Buffer.prototype.writeInt32BE,4,e,r)}insert Line truncated
`,lHt=/\u2014 (\S+) (\S+)\n/g;function uHt(t,e){let r=t.inclusionProof,s=$ne.fromString(r.checkpoint.envelope),a=C8.fromString(s.note);if(!fHt(s,e))throw new lR.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid checkpoint signature"});return a}function fHt(t,e){let r=Buffer.from(t.note,"utf-8");return t.signatures.some(s=>{let a=e.find(n=>CUe.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint)&&n.baseURL.match(s.name));return a?CUe.crypto.verify(r,a.publicKey,s.signature):!1})}var $ne=class t{note;signatures;constructor(e,r){this.note=e,this.signatures=r}static fromString(e){if(!e.includes(Xne))throw new lR.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"missing checkpoint separator"});let r=e.indexOf(Xne),s=e.slice(0,r+1),n=e.slice(r+Xne.length).matchAll(lHt),l=Array.from(n,f=>{let[,h,A]=f,m=Buffer.from(A,"base64");if(m.length<5)throw new lR.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"malformed checkpoint signature"});return{name:h,keyHint:m.subarray(0,4),signature:m.subarray(4)}});if(l.length===0)throw new lR.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"no signatures found in checkpoint"});return new t(s,l)}},C8=class t{origin;logSize;logHash;rest;constructor(e,r,s,a){this.origin=e,this.logSize=r,this.logHash=s,this.rest=a}static fromString(e){let r=e.trimEnd().split(`
`);if(r.length<3)throw new lR.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"too few lines in checkpoint header"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],"base64"),l=r.slice(3);return new t(s,a,n,l)}};uR.LogCheckpoint=C8});var vUe=H(nie=>{"use strict";Object.defineProperty(nie,"__esModule",{value:!0});nie.verifyMerkleInclusion=pHt;var rie=tl(),eie=Na(),hHt=Buffer.from([0]),AHt=Buffer.from([1]);function pHt(t,e){let r=t.inclusionProof,s=BigInt(r.logIndex),a=BigInt(e.logSize);if(s<0n||s>=a)throw new eie.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:`invalid index: ${s}`});let{inner:n,border:l}=dHt(s,a);if(r.hashes.length!==n+l)throw new eie.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid hash count"});let f=r.hashes.slice(0,n),h=r.hashes.slice(n),A=wHt(t.canonicalizedBody),m=mHt(gHt(A,f,s),h);if(!rie.crypto.bufferEqual(m,e.logHash))throw new eie.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"calculated root hash does not match inclusion proof"})}function dHt(t,e){let r=yHt(t,e),s=EHt(t>>BigInt(r));return{inner:r,border:s}}function gHt(t,e,r){return e.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?tie(a,s):tie(s,a),t)}function mHt(t,e){return e.reduce((r,s)=>tie(s,r),t)}function yHt(t,e){return IHt(t^e-BigInt(1))}function EHt(t){return t.toString(2).split("1").length-1}function IHt(t){return t===0n?0:t.toString(2).length}function tie(t,e){return rie.crypto.digest("sha256",AHt,t,e)}function wHt(t){return rie.crypto.digest("sha256",hHt,t)}});var bUe=H(iie=>{"use strict";Object.defineProperty(iie,"__esModule",{value:!0});iie.verifyTLogSET=vHt;var SUe=tl(),CHt=Na(),BHt=MB();function vHt(t,e){if(!(0,BHt.filterTLogAuthorities)(e,{logID:t.logId.keyId,targetDate:new Date(Number(t.integratedTime)*1e3)}).some(a=>{let n=SHt(t),l=Buffer.from(SUe.json.canonicalize(n),"utf8"),f=t.inclusionPromise.signedEntryTimestamp;return SUe.crypto.verify(l,a.publicKey,f)}))throw new CHt.VerificationError({code:"TLOG_INCLUSION_PROMISE_ERROR",message:"inclusion promise could not be verified"})}function SHt(t){let{integratedTime:e,logIndex:r,logId:s,canonicalizedBody:a}=t;return{body:a.toString("base64"),integratedTime:Number(e),logIndex:Number(r),logID:s.keyId.toString("hex")}}});var PUe=H(B8=>{"use strict";Object.defineProperty(B8,"__esModule",{value:!0});B8.verifyTLogBody=kHt;B8.verifyTLogInclusion=RHt;var DUe=Ere(),aie=Na(),sie=EUe(),oie=IUe(),bHt=wUe(),DHt=BUe(),PHt=vUe(),xHt=bUe();function kHt(t,e){let{kind:r,version:s}=t.kindVersion,a=JSON.parse(t.canonicalizedBody.toString("utf8"));if(r!==a.kind||s!==a.apiVersion)throw new aie.VerificationError({code:"TLOG_BODY_ERROR",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(r){case"dsse":if(s==sie.DSSE_API_VERSION_V1)return(0,sie.verifyDSSETLogBody)(a,e);{let n=DUe.Entry.fromJSON(a);return(0,sie.verifyDSSETLogBodyV2)(n,e)}case"intoto":return(0,bHt.verifyIntotoTLogBody)(a,e);case"hashedrekord":if(s==oie.HASHEDREKORD_API_VERSION_V1)return(0,oie.verifyHashedRekordTLogBody)(a,e);{let n=DUe.Entry.fromJSON(a);return(0,oie.verifyHashedRekordTLogBodyV2)(n,e)}default:throw new aie.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported kind: ${r}`})}}function RHt(t,e){let r=!1;if(THt(t)&&((0,xHt.verifyTLogSET)(t,e),r=!0),QHt(t)){let s=(0,DHt.verifyCheckpoint)(t,e);(0,PHt.verifyMerkleInclusion)(t,s),r=!0}if(!r)throw new aie.VerificationError({code:"TLOG_MISSING_INCLUSION_ERROR",message:"inclusion could not be verified"})}function THt(t){return t.inclusionPromise!==void 0}function QHt(t){return t.inclusionProof!==void 0}});var QUe=H(v8=>{"use strict";Object.defineProperty(v8,"__esModule",{value:!0});v8.Verifier=void 0;var FHt=Ae("util"),UB=Na(),xUe=pUe(),cie=dUe(),kUe=yUe(),RUe=PUe(),lie=class{trustMaterial;options;constructor(e,r={}){this.trustMaterial=e,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,timestampThreshold:r.timestampThreshold??r.tsaThreshold??1,tsaThreshold:0}}verify(e,r){let s=this.verifyTimestamps(e),a=this.verifySigningKey(e,s);return this.verifyTLogs(e),this.verifySignature(e,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(e){let r=[];for(let s of e.timestamps)switch(s.$case){case"timestamp-authority":r.push((0,kUe.getTSATimestamp)(s.timestamp,e.signature.signature,this.trustMaterial.timestampAuthorities));break;case"transparency-log":{let a=(0,kUe.getTLogTimestamp)(s.tlogEntry);a&&r.push(a);break}}if(TUe(r))throw new UB.VerificationError({code:"TIMESTAMP_ERROR",message:"duplicate timestamp"});if(r.length<this.options.timestampThreshold)throw new UB.VerificationError({code:"TIMESTAMP_ERROR",message:`expected ${this.options.timestampThreshold} timestamps, got ${r.length}`});return r.map(s=>s.timestamp)}verifySigningKey({key:e},r){switch(e.$case){case"public-key":return(0,xUe.verifyPublicKey)(e.hint,r,this.trustMaterial);case"certificate":{let s=(0,xUe.verifyCertificate)(e.certificate,r,this.trustMaterial);if(TUe(s Line truncated
Try running the command again with the package name prefixed: ${pe.pretty(r,"yarn add",pe.Type.CODE)} ${pe.pretty(r,G.makeDescriptor(G.makeIdent(null,"my-package"),`${te[0]}...`),pe.Type.DESCRIPTOR)}`);if(!ee)throw new ht(`The ${pe.pretty(r,V,pe.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ie=omt(a,ee,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ie.map(async ge=>{let de=await ED(ee,{project:s,workspace:a,cache:n,fixed:l,target:ge,modifier:A,strategies:m,maxResults:w});return{request:ee,suggestedDescriptors:de,target:ge}}))})).then(V=>V.flat()),I=await tA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async V=>{for(let{request:ee,suggestedDescriptors:{suggestions:te,rejections:ie}}of D)if(te.filter(ge=>ge.descriptor!==null).length===0){let[ge]=ie;if(typeof ge>"u")throw new Error("Assertion failed: Expected an error to have been set");s.configuration.get("enableNetwork")?V.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range`):V.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),V.reportSeparator(),V.reportExceptionOnce(ge)}});if(I.hasErrors())return I.exitCode();let R=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:V},target:ee}of D){let te,ie=V.filter(xe=>xe.descriptor!==null),ae=ie[0].descriptor,ge=ie.every(xe=>G.areDescriptorsEqual(xe.descriptor,ae));ie.length===1||ge?te=ae:(R=!0,{answer:te}=await(0,f2e.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:V.map(({descriptor:xe,name:we,reason:d})=>xe?{name:we,hint:d,descriptor:xe}:{name:we,hint:d,disabled:!0}),onCancel:()=>process.exit(130),result(xe){return this.find(xe,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let de=a.manifest[ee].get(te.identHash);(typeof de>"u"||de.descriptorHash!==te.descriptorHash)&&(a.manifest[ee].set(te.identHash,te),this.optional&&(ee==="dependencies"?a.manifest.ensureDependencyMeta({...te,range:"unknown"}).optional=!0:ee==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...te,range:"unknown"}).optional=!0)),typeof de>"u"?N.push([a,ee,te,m]):U.push([a,ee,de,te]))}return await r.triggerMultipleHooks(V=>V.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(V=>V.afterWorkspaceDependencyReplacement,U),R&&this.context.stdout.write(`
`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function omt(t,e,{dev:r,peer:s,preferDev:a,optional:n}){let l=t.manifest.dependencies.has(e.identHash),f=t.manifest.devDependencies.has(e.identHash),h=t.manifest.peerDependencies.has(e.identHash);if((r||s)&&l)throw new ht(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&h)throw new ht(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new ht(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&h)throw new ht(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new ht(`Package "${G.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let A=[];return s&&A.push("peerDependencies"),(r||a)&&A.push("devDependencies"),n&&A.push("dependencies"),A.length>0?A:f?["devDependencies"]:h?["peerDependencies"]:["dependencies"]}We();We();sr();var MC=class extends mt{constructor(){super(...arguments);this.verbose=ye.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=ye.String({required:!1})}static{this.paths=[["bin"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Yt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await qn.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new ht(`Couldn't find a binary named "${this.name}" for package "${G.prettyLocator(r,a)}"`);let[,h]=f;return this.context.stdout.write(`${h}
`),0}return(await Wt.start({configuration:r,json:this.json,stdout:this.context.stdout},async l=>{let f=await qn.getPackageAccessibleBinaries(a,{project:s}),A=Array.from(f.keys()).reduce((m,w)=>Math.max(m,w.length),0);for(let[m,[w,v]]of f)l.reportJson({name:m,source:G.stringifyIdent(w),path:v});if(this.verbose)for(let[m,[w]]of f)l.reportInfo(null,`${m.padEnd(A," ")} ${G.prettyLocator(r,w)}`);else for(let m of f.keys())l.reportInfo(null,m)})).exitCode()}};We();Mt();sr();var UC=class extends mt{constructor(){super(...arguments);this.mirror=ye.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=ye.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}static{this.paths=[["cache","clean"],["cache","clear"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins);if(!r.get("enableCacheClean"))throw new ht("Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.");let s=await gn.find(r);return(await Wt.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,l=!this.mirror;n&&(await fe.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),l&&await fe.removePromise(s.cwd)})).exitCode()}};We();sr();xl();var OW=Ae("util"),HC=class extends mt{constructor(){super(...arguments);this.why=ye.Boolean("--why",!1,{description:"Print the explanation for why a setting has its value"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=ye.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=ye.String()}static{this.paths=[["config","get"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(s)>"u")throw new ht(`Couldn't find a configuration settings named "${s}"`);let l=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=Ye.convertMapsToIndexableObjects(l),h=a?rc(f,a):f,A=await Wt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async m=>{m.reportJson(h)});if(!this.json){if(typeof h=="string")return this.context.stdout.write(`${h}
`),A.exitCode();OW.inspect.styles.name="cyan",this.context.stdout.write(`${(0,OW.inspect)(h,{depth:1/0,colors:r.get("enableColors"),compact:!1})}
`)}return A.exitCode()}};We();sr();xl();var LW=Ae("util"),jC=class extends mt{constructor(){super(...arguments);this.json=ye.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=ye.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ye.String();this.value=ye.String()}static{this.paths=[["config","set"]]}static{this.usage=At.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"`]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new ht("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ht(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new ht("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>$e.updateHomeConfiguration(I):I=>$e.updateConfiguration(s(),I))(I=>{if(n){let R=F0(I);return Ey(R,this.name,f),R}else return{...I,[a]:f}});let m=(await $e.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),w=Ye.convertMapsToIndexableObjects(m),v=n?rc(w,n):w;return(await Wt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{LW.inspect.styles.name="cyan",I.reportInfo(0,`Successfully set ${this.name} to ${(0,LW.inspect)(v,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};We();sr();xl();var GC=class extends mt{constructor(){super(...arguments);this.home=ye.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ye.String()}static{this.paths=[["config","unset"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new ht("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ht(`Couldn't find a configuration settings named "${a}"`);let f=this.home?A=>$e.updateHomeConfiguration(A):A=>$e.updateConfiguration(s(),A);return(await Wt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async A=>{let m=!1;await f(w=>{if(!_S(w,this.name))return A.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),m=!0,w;let v=n?F0(w):{...w};return N0(v,this.name),v}),m||A.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};We();Mt();sr();var WO=Ae("util"),qC=class extends mt{constructor(){super(...arguments);this.noDefaults=ye.Boolean("--no-defaults",!1,{description:"Omit the default values from the display"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.verbose=ye.Boolean("-v,--verbose",{hidden:!0});this.why=ye.Boolean("--why",{hidden:!0});this.names=ye.Rest()}static{this.paths=[["config"]]}static{this.usage=At.Usage({description:"display the current configuration",details:`
This command prints the current active configuration settings.
`,examples:[["Print the active configuration settings","$0 config"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await dC({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:"The --verbose option is deprecated, the settings' descriptions are now always displayed"},{option:this.why,message:"The --why option is deprecated, the settings' sources are now always displayed"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,l=await Wt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[h,A]of r.invalid)f.reportError(34,`Invalid configuration key "${h}" in ${A}`);f.reportSeparator()}if(this.json)for(let h of a){if(this.noDefaults&&!r.sources.has(h))continue;let A=r.settings.get(h);typeof A>"u"&&f.reportError(34,`No configuration key named "${h}"`);let m=r.getSpecial(h,{hideSecrets:!0,getNativePaths:!0}),w=r.sources.get(h)??"<default>",v=w&&w[0]!=="<"?me.fromPortablePath(w):w;f.reportJson({key:h,effective:m,source:v,...A})}else{let h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},A={},m={children:A};for(let w of a){if(this.noDefaults&&!r.sources.has(w))continue;let v=r.settings.get(w),D=r.sources.get(w)??"<default>",I=r.getSpecial(w,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:"Description",value:pe.tuple(pe.Type.MARKDOWN,{text:v.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:pe.tuple(D[0]==="<"?pe.Type.CODE:pe.Type.PATH,D)}};A[w]={value:pe.tuple(pe.Type.CODE,w),children:R};let N=(U,V)=>{for(let[ee,te]of V)if(te instanceof Map){let ie={};U[ee]={children:ie},N(ie,te)}else U[ee]={label:ee,value:pe.tuple(pe.Type.NO_HINT,(0,WO.inspect)(te,h))}};I instanceof Map?N(R,I):R.Value={label:"Value",value:pe.tuple(pe.Type.NO_HINT,(0,WO.inspect)(I,h))}}a.length!==1&&(n=void 0),bs.emitTree(m,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let f=a[0],h=(0,WO.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(`
`),this.context.stdout.write(`${h}
`)}return l.exitCode()}};We();sr();ga();var YO={};lr(YO,{Strategy:()=>ID,acceptedStrategies:()=>amt,dedupe:()=>_W});We();We();var h2e=st(ma()),ID=(e=>(e.HIGHEST="highest",e))(ID||{}),amt=new Set(Object.values(ID)),cmt={highest:async(t,e,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let l=new Map;for(let[h,A]of t.storedResolutions){let m=t.storedDescriptors.get(h);if(typeof m>"u")throw new Error(`Assertion failed: The descriptor (${h}) should have been registered`);Ye.getSetWithDefault(l,m.identHash).add(A)}let f=new Map(Ye.mapAndFilter(t.storedDescriptors.values(),h=>G.isVirtualDescriptor(h)?Ye.mapAndFilter.skip:[h.descriptorHash,Ye.makeDeferred()]));for(let h of t.storedDescriptors.values()){let A=f.get(h.descriptorHash);if(typeof A>"u")throw new Error(`Assertion failed: The descriptor (${h.descriptorHash}) should have been registered`);let m=t.storedResolutions.get(h.descriptorHash);if(typeof m>"u")throw new Error(`Assertion failed: The resolution (${h.descriptorHash}) should have been registered`);let w=t.originalPackages.get(m);if(typeof w>"u")throw new Error(`Assertion failed: The package (${m}) should have been registered`);Promise.resolve().then(async()=>{let v=r.getResolutionDependencies(h,a),D=Object.fromEntries(await Ye.allSettledSafe(Object.entries(v).map(async([ee,te])=>{let ie=f.get(te.descriptorHash);if(typeof ie>"u")throw new Error(`Assertion failed: The descriptor (${te.descriptorHash}) should have been registered`);let ae=await ie.promise;if(!ae)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[ee,ae.updatedPackage]})));if(e.length&&!h2e.default.isMatch(G.stringifyIdent(h),e)||!r.shouldPersistResolution(w,a))return w;let I=l.get(h.identHash);if(typeof I>"u")throw new Error(`Assertion failed: The resolutions (${h.identHash}) should have been registered`);if(I.size===1)return w;let R=[...I].map(ee=>{let te=t.originalPackages.get(ee);if(typeof te>"u")throw new Error(`Assertion failed: The package (${ee}) should have been registered`);return te}),N=await r.getSatisfying(h,D,R,a),U=N.locators?.[0];if(typeof U>"u"||!N.sorted)return w;let V=t.originalPackages.get(U.locatorHash);if(typeof V>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return V}).then(async v=>{let D=await t.preparePackage(v,{resolver:r,resolveOptions:a});A.resolve({descriptor:h,currentPackage:w,updatedPackage:v,resolvedPackage:D})}).catch(v=>{A.reject(v)})}return[...f.values()].map(h=>h.promise)}};async function _W(t,{strategy:e,patterns:r,cache:s,report:a}){let{configuration:n}=t,l=new rs,f=n.makeResolver(),h=n.makeFetcher(),A={cache:s,checksums:t.storedChecksums,fetcher:h,project:t,report:l,cacheOptions:{skipIntegrityCheck:!0}},m={project:t,resolver:f,report:l,fetchOptions:A};return await a.startTimerPromise("Deduplication step",async()=>{let w=cmt[e],v=await w(t,r,{resolver:f,resolveOptions:m,fetcher:h,fetchOptions:A}),D=jo.progressViaCounter(v.length);await a.reportProgress(D);let I=0;await Promise.all(v.map(U=>U.then(V=>{if(V===null||V.currentPackage.locatorHash===V.updatedPackage.locatorHash)return;I++;let{descriptor:ee,currentPackage:te,updatedPackage:ie}=V;a.reportInfo(0,`${G.prettyDescriptor(n,ee)} can be deduped from ${G.prettyLocator(n,te)} to ${G.prettyLocator(n,ie)}`),a.reportJson({descriptor:G.stringifyDescriptor(ee),currentResolution:G.stringifyLocator(te),updatedResolution:G.stringifyLocator(ie)}),t.storedResolutions.set(ee.descriptorHash,ie.locatorHash)}).finally(()=>D.tick())));let R;switch(I){case 0:R="No packages";break;case 1:R="One package";break;default:R=`${I} packages`}let N=pe.pretty(n,e,pe.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${N} strategy`),I})}var VC=class extends mt{constructor(){super(...arguments);this.strategy=ye.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:$s(ID)});this.check=ye.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=ye.String("--mode",{description:"Change what artifacts installs generate",validator:$s(uc)});this.patterns=ye.Rest()}static{this.paths=[["dedupe"]]}static{this.usage=At.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 dow Line truncated
`)}};var YC=class extends mt{static{this.paths=[["help"],["--help"],["-h"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};We();Mt();sr();var KC=class extends mt{constructor(){super(...arguments);this.leadingArgument=ye.String();this.args=ye.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!G.tryParseIdent(this.leadingArgument)){let r=Y.resolve(this.context.cwd,me.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};We();var zC=class extends mt{static{this.paths=[["-v"],["--version"]]}async execute(){this.context.stdout.write(`${Fn||"<unknown>"}
`)}};We();We();sr();var JC=class extends mt{constructor(){super(...arguments);this.commandName=ye.String();this.args=ye.Proxy()}static{this.paths=[["exec"]]}static{this.usage=At.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"']]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Yt.find(r,this.context.cwd);return await s.restoreInstallState(),await qn.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};We();sr();ga();var ZC=class extends mt{constructor(){super(...arguments);this.hash=ye.String({required:!1,validator:P0(_h(),[xp(/^p[0-9a-f]{6}$/)])})}static{this.paths=[["explain","peer-requirements"]]}static{this.usage=At.Usage({description:"explain a set of peer requirements",details:`
A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters.
When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not.
When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement.
**Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\`yarn explain peer-requirements\`).
`,examples:[["Explain the corresponding peer requirement for a hash","$0 explain peer-requirements p1a4ed"],["List all peer requirements","$0 explain peer-requirements"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s}=await Yt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<"u"?await umt(this.hash,s,{stdout:this.context.stdout}):await fmt(s,{stdout:this.context.stdout})}};async function umt(t,e,r){let s=e.peerRequirementNodes.get(t);if(typeof s>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);let a=new Set,n=h=>a.has(h.requester.locatorHash)?{value:pe.tuple(pe.Type.DEPENDENT,{locator:h.requester,descriptor:h.descriptor}),children:h.children.size>0?[{value:pe.tuple(pe.Type.NO_HINT,"...")}]:[]}:(a.add(h.requester.locatorHash),{value:pe.tuple(pe.Type.DEPENDENT,{locator:h.requester,descriptor:h.descriptor}),children:Object.fromEntries(Array.from(h.children.values(),A=>[G.stringifyLocator(A.requester),n(A)]))}),l=e.peerWarnings.find(h=>h.hash===t);return(await Wt.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async h=>{let A=pe.mark(e.configuration),m=l?A.Cross:A.Check;if(h.reportInfo(0,`Package ${pe.pretty(e.configuration,s.subject,pe.Type.LOCATOR)} is requested to provide ${pe.pretty(e.configuration,s.ident,pe.Type.IDENT)} by its descendants`),h.reportSeparator(),h.reportInfo(0,pe.pretty(e.configuration,s.subject,pe.Type.LOCATOR)),bs.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),w=>[G.stringifyLocator(w.requester),n(w)]))},{configuration:e.configuration,stdout:r.stdout,json:!1}),h.reportSeparator(),s.provided.range==="missing:"){let w=l?"":" , but all peer requests are optional";h.reportInfo(0,`${m} Package ${pe.pretty(e.configuration,s.subject,pe.Type.LOCATOR)} does not provide ${pe.pretty(e.configuration,s.ident,pe.Type.IDENT)}${w}.`)}else{let w=e.storedResolutions.get(s.provided.descriptorHash);if(!w)throw new Error("Assertion failed: Expected the descriptor to be registered");let v=e.storedPackages.get(w);if(!v)throw new Error("Assertion failed: Expected the package to be registered");h.reportInfo(0,`${m} Package ${pe.pretty(e.configuration,s.subject,pe.Type.LOCATOR)} provides ${pe.pretty(e.configuration,s.ident,pe.Type.IDENT)} with version ${G.prettyReference(e.configuration,v.version??"0.0.0")}, ${l?"which does not satisfy all requests.":"which satisfies all requests"}`),l?.type===3&&(l.range?h.reportInfo(0,` The combined requested range is ${pe.pretty(e.configuration,l.range,pe.Type.RANGE)}`):h.reportInfo(0," Unfortunately, the requested ranges have no overlap"))}})).exitCode()}async function fmt(t,e){return(await Wt.start({configuration:t.configuration,stdout:e.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=pe.mark(t.configuration),n=Ye.sortMap(t.peerRequirementNodes,[([,l])=>G.stringifyLocator(l.subject),([,l])=>G.stringifyIdent(l.ident)]);for(let[,l]of n.values()){if(!l.root)continue;let f=t.peerWarnings.find(m=>m.hash===l.hash),h=[...G.allPeerRequests(l)],A;if(h.length>2?A=` and ${h.length-1} other dependencies`:h.length===2?A=" and 1 other dependency":A="",l.provided.range!=="missing:"){let m=t.storedResolutions.get(l.provided.descriptorHash);if(!m)throw new Error("Assertion failed: Expected the resolution to have been registered");let w=t.storedPackages.get(m);if(!w)throw new Error("Assertion failed: Expected the provided package to have been registered");let v=`${pe.pretty(t.configuration,l.hash,pe.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,l.subject)} provides ${G.prettyLocator(t.configuration,w)} to ${G.prettyLocator(t.configuration,h[0].requester)}${A}`;f?s.reportWarning(0,v):s.reportInfo(0,v)}else{let m=`${pe.pretty(t.configuration,l.hash,pe.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,l.subject)} doesn't provide ${G.prettyIdent(t.configuration,l.ident)} to ${G.prettyLocator(t.configuration,h[0].requester)}${A}`;f?s.reportWarning(0,m):s.reportInfo(0,m)}}})).exitCode()}We();sr();ga();We();We();Mt();sr();var p2e=st(Di()),XC=class extends mt{constructor(){super(...arguments);this.useYarnPath=ye.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=ye.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=ye.String()}static{this.paths=[["set","version"]]}static{this.usage=At.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set th Line truncated
${e}`)})}let f=t.projectCwd??t.startingCwd,h=Y.resolve(f,".yarn/releases"),A=Y.resolve(h,`yarn-${e}.cjs`),m=Y.relative(t.startingCwd,A),w=Ye.isTaggedYarnVersion(e),v=t.get("yarnPath"),D=!w,I=D||!!v||!!a;if(a===!1){if(D)throw new Zt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${pe.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${pe.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),I=!0);if(I){let ee=await l();s.reportInfo(0,`Saving the new release in ${pe.pretty(t,m,"magenta")}`),await fe.removePromise(Y.dirname(A)),await fe.mkdirPromise(Y.dirname(A),{recursive:!0}),await fe.writeFilePromise(A,ee,{mode:493}),await $e.updateConfiguration(f,{yarnPath:Y.relative(f,A)})}else await fe.removePromise(Y.dirname(A)),await $e.updateConfiguration(f,{yarnPath:$e.deleteProperty});let R=await nr.tryFind(f)||new nr;R.packageManager=`yarn@${w?e:await wD(t,"stable")}`;let N={};R.exportTo(N);let U=Y.join(f,nr.fileName),V=`${JSON.stringify(N,null,R.indent)}
`;return await fe.changeFilePromise(U,V,{automaticNewlines:!0}),{bundleVersion:e}}function d2e(t){return Tr[KT(t)]}var Amt=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\n\n(?<details>(?:.(?!##))+)/gs;async function pmt(t){let r=`https://repo.yarnpkg.com/${Ye.isTaggedYarnVersion(Fn)?Fn:await wD(t,"canary")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await Sn.get(r,{configuration:t});return new Map(Array.from(s.toString().matchAll(Amt),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=d2e(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var $C=class extends mt{constructor(){super(...arguments);this.code=ye.String({required:!1,validator:gS(_h(),[xp(/^YN[0-9]{4}$/)])});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["explain"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let s=d2e(this.code),a=pe.pretty(r,s,pe.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await pmt(r)).get(this.code),h=typeof f<"u"?pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.MARKDOWN,{text:f,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}:
${pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx"))}
`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:h})}
`):this.context.stdout.write(`${n}
${h}
`)}else{let s={children:Ye.mapAndFilter(Object.entries(Tr),([a,n])=>Number.isNaN(Number(a))?Ye.mapAndFilter.skip:{label:Mh(Number(a)),value:pe.tuple(pe.Type.CODE,n)})};bs.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};We();Mt();sr();var g2e=st(ma()),e1=class extends mt{constructor(){super(...arguments);this.all=ye.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=ye.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=ye.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=ye.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=ye.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=ye.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=ye.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=ye.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=ye.Rest()}static{this.paths=[["info"]]}static{this.usage=At.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd),n=await gn.find(r);if(!a&&!this.all)throw new Dr(s.cwd,this.context.cwd);await s.restoreInstallState();let l=new Set(this.extra);this.cache&&l.add("cache"),this.dependents&&l.add("dependents"),this.manifest&&l.add("manifest");let f=(te,{recursive:ie})=>{let ae=te.anchoredLocator.locatorHash,ge=new Map,de=[ae];for(;de.length>0;){let xe=de.shift();if(ge.has(xe))continue;let we=s.storedPackages.get(xe);if(typeof we>"u")throw new Error("Assertion failed: Expected the package to be registered");if(ge.set(xe,we),G.isVirtualLocator(we)&&de.push(G.devirtualizeLocator(we).locatorHash),!(!ie&&xe!==ae))for(let d of we.dependencies.values()){let be=s.storedResolutions.get(d.descriptorHash);if(typeof be>"u")throw new Error("Assertion failed: Expected the resolution to be registered");de.push(be)}}return ge.values()},h=({recursive:te})=>{let ie=new Map;for(let ae of s.workspaces)for(let ge of f(ae,{recursive:te}))ie.set(ge.locatorHash,ge);return ie.values()},A=({all:te,recursive:ie})=>te&&ie?s.storedPackages.values():te?h({recursive:ie}):f(a,{recursive:ie}),m=({all:te,recursive:ie})=>{let ae=A({all:te,recursive:ie}),ge=this.patterns.map(we=>{let d=G.parseLocator(we),be=g2e.default.makeRe(G.stringifyIdent(d)),Ce=G.isVirtualLocator(d),Ee=Ce?G.devirtualizeLocator(d):d;return he=>{let $=G.stringifyIdent(he);if(!be.test($))return!1;if(d.reference==="unknown")return!0;let De=G.isVirtualLocator(he),Te=De?G.devirtualizeLocator(he):he;return!(Ce&&De&&d.reference!==he.reference||Ee.reference!==Te.reference)}}),de=Ye.sortMap([...ae],we=>G.stringifyLocator(we));return{selection:de.filter(we=>ge.length===0||ge.some(d=>d(we))),sortedLookup:de}},{selection:w,sortedLookup:v}=m({all:this.all,recursive:this.recursive});if(w.length===0)throw new ht("No package matched your request");let D=new Map;if(this.dependents)for(let te of v)for(let ie of te.dependencies.values()){let ae=s.storedResolutions.get(ie.descriptorHash);if(typeof ae>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ye.getArrayWithDefault(D,ae).push(te)}let I=new Map;for(let te of v){if(!G.isVirtualLocator(te))continue;let ie=G.devirtualizeLocator(te);Ye.getArrayWithDefault(I,ie.locatorHash).push(te)}let R={},N={children:R},U=r.makeFetcher(),V={project:s,fetcher:U,cache:n,checksums:s.storedChecksum Line truncated
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"]]})}async execute(){return this.cli.run(["exec","node",...this.args])}};We();sr();var i1=class extends mt{constructor(){super(...arguments);this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","check"]]}static{this.usage=At.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:`
Check only the plugins from https.
If this command detects any plugin differences in the CI environment, it will throw an error.
`,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=await $e.findRcFiles(this.context.cwd);return(await Wt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let l of s)if(l.data?.plugins)for(let f of l.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let h=await Sn.get(f.spec,{configuration:r}),A=si.makeHash(h);if(f.checksum===A)continue;let m=pe.pretty(r,f.path,pe.Type.PATH),w=pe.pretty(r,f.spec,pe.Type.URL),v=`${m} is different from the file provided by ${w}`;n.reportJson({...f,newChecksum:A}),n.reportError(0,v)}})).exitCode()}};We();We();Mt();sr();var w2e=Ae("os");We();Mt();sr();var m2e=Ae("os");We();au();sr();var Emt="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function tE(t,e){let r=await Sn.get(Emt,{configuration:t}),s=Fs(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!e||zr.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var s1=class extends mt{constructor(){super(...arguments);this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","list"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins);return(await Wt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await tE(r,Fn);for(let[l,{experimental:f,...h}]of Object.entries(n)){let A=l;f&&(A+=" [experimental]"),a.reportJson({name:l,experimental:f,...h}),a.reportInfo(null,A)}})).exitCode()}};var Imt=/^[0-9]+$/,wmt=process.platform==="win32";function y2e(t){return Imt.test(t)?`pull/${t}/head`:t}var Cmt=({repository:t,branch:e},r)=>[["git","init",me.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",y2e(e)],["git","reset","--hard","FETCH_HEAD"]],Bmt=({branch:t})=>[["git","fetch","origin","--depth=1",y2e(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],vmt=({plugins:t,noMinify:e},r,s)=>[["yarn","build:cli",...new Array().concat(...t.map(a=>["--plugin",Y.resolve(s,a)])),...e?["--no-minify"]:[],"|"],[wmt?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",me.fromPortablePath(r),"|"]],o1=class extends mt{constructor(){super(...arguments);this.installPath=ye.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ye.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ye.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=ye.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.dryRun=ye.Boolean("-n,--dry-run",!1,{description:"If set, the bundle will be built but not added to the project"});this.noMinify=ye.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=ye.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=ye.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}static{this.paths=[["set","version","from","sources"]]}static{this.usage=At.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 execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s}=await Yt.find(r,this.context.cwd),a=typeof this.installPath<"u"?Y.resolve(this.context.cwd,me.toPortablePath(this.installPath)):Y.resolve(me.toPortablePath((0,m2e.tmpdir)()),"yarnpkg-sources",si.makeHash(this.repository).slice(0,6));return(await Wt.start({configuration:r,stdout:this.context.stdout},async l=>{await HW(this,{configuration:r,report:l,target:a}),l.reportSeparator(),l.reportInfo(0,"Building a fresh bundle"),l.reportSeparator();let f=await un.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),h=Y.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);fe.existsSync(h)||(await CD(vmt(this,h,a),{configuration:r,context:this.context,target:a}),l.reportSeparator());let A=await fe.readFilePromise(h);if(!this.dryRun){let{bundleVersion:m}=await MW(r,null,async()=>A,{report:l});this.skipPlugins||await Smt(this,m,{project:s,report:l,target:a})}})).exitCode()}};async function CD(t,{configuration:e,context:r,target:s}){for(let[a,...n]of t){let l=n[n.length-1]==="|";if(l&&n.pop(),l)await un.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${pe.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")}
`);try{await un.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function HW(t,{configuration:e,report:r,target:s}){let a=!1;if(!t.force&&fe.existsSync(Y.join(s,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await CD(Bmt(t),{configuration:e,context:t.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await fe.removePromise(s),await fe.mkdirPromise(s,{recursive:!0}),await CD(Cmt(t,s),{configuration:e,context:t.context,target:s}))}async function Smt(t,e,{project:r,report:s,target:a}){let n=await tE(r.configuration,e),l=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())l.has(f)&&await jW(f,t,{project:r,report:s,target:a})}We();We();Mt();sr();var E2e=st(Di()),I2e=Ae("vm");var a1=class extends mt{constructor(){super(...arguments);this.name=ye.String();this.checksum=ye.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}static{this.paths=[["plugin","import"]]}static{this.usage=At.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.
If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified.
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 execute(){let r=await $e.find(this.context.cwd,this.context.plugins);return(await Wt.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Yt.find(r,this.context.cwd),l,f;if(this.name.match(/^\.{0,2}[\\/]/)||me.isAbsolute(this.name)){let h=Y.resolve(this.context.cwd,me.toPortablePath(this.name));a.reportInfo(0,`Reading ${pe.pretty(r,h,pe.Type.PATH)}`),l=Y.relative(n.cwd,h),f=await fe.readFilePromise(h)}else{let h;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new Zt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}l=this.name,h=this.name}else{let A=G.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(A.reference!=="unknown"&&!E2e.default.valid(A.reference))throw new Zt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let m=G.stringifyIdent(A),w=await tE(r,Fn);if(!Object.hasOwn(w,m)){let v=`Couldn't find a plugin named ${G.prettyIdent(r,A)} on the remote registry.
`;throw r.plugins.has(m)?v+=`A plugin named ${G.prettyIdent(r,A)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${pe.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",pe.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${pe.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",pe.Type.URL)}).`,new Zt(51,v)}l=m,h=w[m].url,A.reference!=="unknown"?h=h.replace(/\/master\//,`/${m}/${A.reference}/`):Fn!==null&&(h=h.replace(/\/master\//,`/@yarnpkg/cli/${Fn}/`))}a.reportInfo(0,`Downloading ${pe.pretty(r,h,"green")}`),f=await Sn.get(h,{configuration:r})}await GW(l,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function GW(t,e,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,l={},f={exports:l};(0,I2e.runInNewContext)(e.toString(),{module:f,exports:l});let A=`.yarn/plugins/${f.exports.name}.cjs`,m=Y.resolve(s.cwd,A);a.reportInfo(0,`Saving the new plugin in ${pe.pretty(n,A,"magenta")}`),await fe.mkdirPromise(Y.dirname(m),{recursive:!0}),await fe.writeFilePromise(m,e);let w={path:A,spec:t};r&&(w.checksum=si.makeHash(e)),await $e.addPlugin(s.cwd,[w])}var bmt=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],c1=class extends mt{constructor(){super(...arguments);this.installPath=ye.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ye.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ye.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=ye.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=ye.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=ye.String()}static{this.paths=[["plugin","import","from","sources"]]}static{this.usage=At.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 execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<"u"?Y.resolve(this.context.cwd,me.toPortablePath(this.installPath)):Y.resolve(me.toPortablePath((0,w2e.tmpdir)()),"yarnpkg-sources",si.makeHash(this.repository).slice(0,6));return(await Wt.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:l}=await Yt.find(r,this.context.cwd),f=G.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),h=G.stringifyIdent(f),A=await tE(r,Fn);if(!Object.hasOwn(A,h))throw new Zt(51,`Couldn't find a plugin named "${h}" 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 m=h;await HW(this,{configuration:r,report:n,target:s}),await jW(m,this,{project:l,report:n,target:s})})).exitCode()}};async function jW(t,{context:e,noMinify:r},{project:s,report:a,target:n}){let l=t.replace(/@yarnpkg\//,""),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${l}`),a.reportSeparator(),await CD(bmt({pluginName:l,noMinify:r},n),{configuration:f,context:e,target:n}),a.reportSeparator();let h=Y.resolve(n,`packages/${l}/bundles/${t}.js`),A=await fe.readFilePromise(h);await GW(t,A,{project:s,report:a})}We();Mt();sr();var l1=class extends mt{constructor(){super(...arguments);this.name=ye.String()}static{this.paths=[["plugin","remove"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s}=await Yt.find(r,this.context.cwd);return(await Wt.start({configuration:r,stdout:this.context.stdout},async n=>{let l=this.name,f=G.parseIdent(l);if(!r.plugins.has(l))throw new ht(`${G.prettyIdent(r,f)} isn't referenced by the current configuration`);let h=`.yarn/plugins/${l}.cjs`,A=Y.resolve(s.cwd,h);fe.existsSync(A)&&(n.reportInfo(0,`Removing ${pe.pretty(r,h,pe.Type.PATH)}...`),await fe.removePromise(A)),n.reportInfo(0,"Updating the configuration..."),await $e.updateConfiguration(s.cwd,{plugins:m=>{if(!Array.isArray(m))return m;let w=m.filter(v=>v.path!==h);return w.length===0?$e.deleteProperty:w.length===m.length?m:w}})})).exitCode()}};We();sr();var u1=class extends mt{constructor(){super(...arguments);this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","runtime"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins);return(await Wt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let l=this.context.plugins.plugins.has(n),f=n;l&&(f+=" [builtin]"),a.reportJson({name:n,builtin:l}),a.reportInfo(null,`${f}`)}})).exitCode()}};We();We();sr();var f1=class extends mt{constructor(){super(...arguments);this.idents=ye.Rest()}static{this.paths=[["rebuild"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd),n=await gn.find(r);if(!a)throw new Dr(s.cwd,this.context.cwd);let l=new Set;for(let f of this.idents)l.add(G.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new rs}),l.size>0)for(let f of s.storedPackages.values())l.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};We();We();We();sr();var qW=st(ma());ga();var h1=class extends mt{constructor(){super(...arguments);this.all=ye.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=ye.String("--mode",{description:"Change what artifacts installs generate",validator:$s(uc)});this.patterns=ye.Rest()}static{this.paths=[["remove"]]}static{this.usage=At.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}'"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd),n=await gn.find(r);if(!a)throw new Dr(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let l=this.all?s.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],h=[],A=!1,m=[];for(let I of this.patterns){let R=!1,N=G.parseIdent(I);for(let U of l){let V=[...U.manifest.peerDependenciesMeta.keys()];for(let ee of(0,qW.default)(V,I))U.manifest.peerDependenciesMeta.delete(ee),A=!0,R=!0;for(let ee of f){let te=U.manifest.getForScope(ee),ie=[...te.values()].map(ae=>G.stringifyIdent(ae));for(let ae of(0,qW.default)(ie,G.stringifyIdent(N))){let{identHash:ge}=G.parseIdent(ae),de=te.get(ge);if(typeof de>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[ee].delete(ge),m.push([U,ee,de]),A=!0,R=!0}}}R||h.push(I)}let w=h.length>1?"Patterns":"Pattern",v=h.length>1?"don't":"doesn't",D=this.all?"any":"this";if(h.length>0)throw new ht(`${w} ${pe.prettyList(r,h,pe.Type.CODE)} ${v} match any packages referenced by ${D} workspace`);return A?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,m),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};We();We();sr();var C2e=Ae("util"),A1=class extends mt{constructor(){super(...arguments);this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["run"]]}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd);if(!a)throw new Dr(s.cwd,this.context.cwd);return(await Wt.start({configuration:r,stdout:this.context.stdout,json:this.json},async l=>{let f=a.manifest.scripts,h=Ye.sortMap(f.keys(),w=>w),A={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},m=h.reduce((w,v)=>Math.max(w,v.length),0);for(let[w,v]of f.entries())l.reportInfo(null,`${w.padEnd(m," ")} ${(0,C2e.inspect)(v,A)}`),l.reportJson({name:w,script:v})})).exitCode()}};We();We();sr();var p1=class extends mt{constructor(){super(...arguments);this.inspect=ye.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=ye.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=ye.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=ye.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=ye.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=ye.Boolean("--silent",{hidden:!0});this.scriptName=ye.String();this.args=ye.Proxy()}static{this.paths=[["run"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Yt.find(r,this.context.cwd);await s.restoreInstallState();let l=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await qn.hasPackageScript(l,this.scriptName,{project:s}))return await qn.executePackageScript(l,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await qn.getPackageAccessibleBinaries(l,{project:s});if(f.get(this.scriptName)){let A=[];return this.inspect&&(typeof this.inspect=="string"?A.push(`--inspect=${this.inspect}`):A.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?A.push(`--inspect-brk=${this.inspectBrk}`):A.push("--inspect-brk")),this.require&&A.push(`--require=${this.require}`),await qn.executePackageAccessibleBinary(l,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:A,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let m=(await Promise.all(s.workspaces.map(async w=>w.manifest.scripts.has(this.scriptName)?w:null))).filter(w=>w!==null);if(m.length===1)return await qn.executeWorkspaceScript(m[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 ht(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${G.prettyLocator(r,n)}). 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 ht(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${G.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new ht("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let A=[this.scriptName].concat(this.args);for(let[m,w]of RC)for(let v of w)if(A.length>=v.length&&JSON.stringify(A.slice(0,v.length))===JSON.stringify(v))throw new ht(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${m} plugin. You can install it with "yarn plugin import ${m}".`);throw new ht(`Couldn't find a script named "${this.scriptName}".`)}}};We();We();sr();var d1=class extends mt{constructor(){super(...arguments);this.descriptor=ye.String();this.resolution=ye.String()}static{this.paths=[["set","resolution"]]}static{this.usage=At.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, edit the `resolutions` field in 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 npm:1.5.0"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd),n=await gn.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new Dr(s.cwd,this.context.cwd);let l=G.parseDescriptor(this.descriptor,!0),f=G.makeDescriptor(l,this.resolution);return s.storedDescriptors.set(l.descriptorHash,l),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(l.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};We();Mt();sr();var B2e=st(ma()),g1=class extends mt{constructor(){super(...arguments);this.all=ye.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=ye.Rest()}static{this.paths=[["unlink"]]}static{this.usage=At.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}'"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd),n=await gn.find(r);if(!a)throw new Dr(s.cwd,this.context.cwd);let l=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:h,reference:A}of l.manifest.resolutions)A.startsWith("portal:")&&f.add(h.descriptor.fullName);if(this.leadingArguments.length>0)for(let h of this.leadingArguments){let A=Y.resolve(this.context.cwd,me.toPortablePath(h));if(Ye.isPathLike(h)){let m=await $e.find(A,this.context.plugins,{useRc:!1,strict:!1}),{project:w,workspace:v}=await Yt.find(m,A);if(!v)throw new Dr(w.cwd,A);if(this.all){for(let D of w.workspaces)D.manifest.name&&f.add(G.stringifyIdent(D.anchoredLocator));if(f.size===0)throw new ht("No workspace found to be unlinked in the target project")}else{if(!v.manifest.name)throw new ht("The target workspace doesn't have a name and thus cannot be unlinked");f.add(G.stringifyIdent(v.anchoredLocator))}}else{let m=[...l.manifest.resolutions.map(({pattern:w})=>w.descriptor.fullName)];for(let w of(0,B2e.default)(m,h))f.add(w)}}return l.manifest.resolutions=l.manifest.resolutions.filter(({pattern:h})=>!f.has(h.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};We();We();We();sr();var v2e=st(gD()),VW=st(ma());ga();var m1=class extends mt{constructor(){super(...arguments);this.interactive=ye.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=ye.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=ye.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=ye.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=ye.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=ye.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.noTimeGate=ye.Boolean("--no-time-gate",!1,{description:"Disable the minimum release age check for this command"});this.mode=ye.String("--mode",{description:"Change what artifacts installs generate",validator:$s(uc)});this.patterns=ye.Rest()}static{this.paths=[["up"]]}static{this.usage=At.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 li Line truncated
${ae}`):N.reportError(27,`${G.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)
${ae}`)}else te.length>1&&!f&&N.reportError(27,`${G.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(D.hasErrors())return D.exitCode();let I=!1,R=[];for(let[N,U,,{suggestions:V}]of v){let ee,te=V.filter(de=>de.descriptor!==null),ie=te[0].descriptor,ae=te.every(de=>G.areDescriptorsEqual(de.descriptor,ie));te.length===1||ae?ee=ie:(I=!0,{answer:ee}=await(0,v2e.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${G.prettyWorkspace(r,N)} \u276F ${U}?`,choices:V.map(({descriptor:de,name:xe,reason:we})=>de?{name:xe,hint:we,descriptor:de}:{name:xe,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(de){return this.find(de,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let ge=N.manifest[U].get(ee.identHash);if(typeof ge>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(ge.descriptorHash!==ee.descriptorHash)N.manifest[U].set(ee.identHash,ee),R.push([N,U,ge,ee]);else{let de=r.makeResolver(),xe={project:s,resolver:de},we=r.normalizeDependency(ge),d=de.bindDescriptor(we,N.anchoredLocator,xe);s.forgetResolution(d)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,R),I&&this.context.stdout.write(`
`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};We();We();sr();var y1=class extends mt{constructor(){super(...arguments);this.recursive=ye.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=ye.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=ye.String()}static{this.paths=[["why"]]}static{this.usage=At.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. Specify a version or range to determine why the dependency tree contains a specific version of a package. This is particularly useful when trying to find out why your project depends on lower versions.
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"],["Explain why version 3.3.1 of lodash is in your project","$0 why [email protected]"],["Explain why version 3.X of lodash is in your project","$0 why lodash@^3"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd);if(!a)throw new Dr(s.cwd,this.context.cwd);await s.restoreInstallState();let n=G.parseDescriptor(this.package,!1);if(n.range!=="unknown"&&zr.validRange(n.range)===null)throw new ht(`Expected a valid semver range, got ${n.range}`);let l=this.recursive?Pmt(s,n,{configuration:r,peers:this.peers}):Dmt(s,n,{configuration:r,peers:this.peers});bs.emitTree(l,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function Dmt(t,e,{configuration:r,peers:s}){let a=Ye.sortMap(t.storedPackages.values(),f=>G.stringifyLocator(f)),n={},l={children:n};for(let f of a){let h={};for(let m of f.dependencies.values()){if(!s&&WW(f,m))continue;let w=t.storedResolutions.get(m.descriptorHash);if(!w)throw new Error("Assertion failed: The resolution should have been registered");let v=t.storedPackages.get(w);if(!v)throw new Error("Assertion failed: The package should have been registered");if(!G.areIdentsEqual(v,e)||!G.isPackageInRange(v,e.range))continue;{let I=G.stringifyLocator(f);n[I]={value:[f,pe.Type.LOCATOR],children:h}}let D=G.stringifyLocator(v);h[D]={value:[{descriptor:m,locator:v},pe.Type.DEPENDENT]}}}return l}function Pmt(t,e,{configuration:r,peers:s}){let a=Ye.sortMap(t.workspaces,v=>G.stringifyLocator(v.anchoredLocator)),n=new Set,l=new Set,f=v=>{if(n.has(v.locatorHash))return l.has(v.locatorHash);if(n.add(v.locatorHash),G.areIdentsEqual(v,e)&&G.isPackageInRange(v,e.range))return l.add(v.locatorHash),!0;let D=!1;for(let I of v.dependencies.values()){if(!s&&WW(v,I))continue;let R=t.storedResolutions.get(I.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let N=t.storedPackages.get(R);if(!N)throw new Error("Assertion failed: The package should have been registered");f(N)&&(D=!0)}return D&&l.add(v.locatorHash),D};for(let v of a)f(v.anchoredPackage);let h=new Set,A={},m={children:A},w=(v,D,I)=>{if(!l.has(v.locatorHash))return;let R=I!==null?pe.tuple(pe.Type.DEPENDENT,{locator:v,descriptor:I}):pe.tuple(pe.Type.LOCATOR,v),N={},U={value:R,children:N},V=G.stringifyLocator(v);if(D[V]=U,!(I!==null&&t.tryWorkspaceByLocator(v))&&!h.has(v.locatorHash)){h.add(v.locatorHash);for(let ee of v.dependencies.values()){if(!s&&WW(v,ee))continue;let te=t.storedResolutions.get(ee.descriptorHash);if(!te)throw new Error("Assertion failed: The resolution should have been registered");let ie=t.storedPackages.get(te);if(!ie)throw new Error("Assertion failed: The package should have been registered");w(ie,N,ee)}}};for(let v of a)w(v.anchoredPackage,A,null);return m}function WW(t,e){return G.isVirtualLocator(t)&&t.peerDependencies.has(e.identHash)}We();var rY={};lr(rY,{GitFetcher:()=>vD,GitResolver:()=>SD,default:()=>zmt,gitUtils:()=>fc});We();Mt();var fc={};lr(fc,{TreeishProtocols:()=>BD,clone:()=>tY,fetchBase:()=>V2e,fetchChangedFiles:()=>W2e,fetchChangedWorkspaces:()=>Ymt,fetchRoot:()=>q2e,isGitUrl:()=>w1,lsRemote:()=>G2e,normalizeLocator:()=>Wmt,normalizeRepoUrl:()=>E1,resolveUrl:()=>eY,splitRepoUrl:()=>$p,validateRepoUrl:()=>$W});We();Mt();sr();xl();var H2e=st(_2e()),I1=st(Ae("querystring")),ZW=st(Di());function JW(t,e,r){let s=t.indexOf(r);return t.lastIndexOf(e,s>-1?s:1/0)}function M2e(t){try{return new URL(t)}catch{return}}function qmt(t){let e=JW(t,"@","#"),r=JW(t,":","#");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),JW(t,":","#")===-1&&t.indexOf("//")===-1&&(t=`ssh://${t}`),t}function U2e(t){return M2e(t)||M2e(qmt(t))}function E1(t,{git:e=!1}={}){if(t=t.replace(/^git\+https:/,"https:"),t=t.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"),t=t.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 r=U2e(t);r&&(t=r.href),t=t.replace(/^git\+([^:]+):/,"$1:")}return t}function j2e(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var Vmt=[/^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\/(.+)?$/],BD=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(BD||{});function w1(t){return t?Vmt.some(e=>!!t.match(e)):!1}function $p(t){t=E1(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{pr Line truncated
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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd);if(!a)throw new Dr(s.cwd,this.context.cwd);let n=s.workspaces,l=new Map(n.map(h=>[G.stringifyIdent(h.anchoredLocator),h])),f=l.get(this.workspaceName);if(f===void 0){let h=Array.from(l.keys()).sort();throw new ht(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:
- ${h.join(`
- `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var Jmt={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:Y2e.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[UC,HC,jC,GC,d1,o1,XC,C1,WC,YC,KC,zC,_C,MC,qC,VC,JC,ZC,$C,e1,t1,r1,g1,n1,i1,c1,a1,l1,s1,u1,f1,h1,A1,p1,m1,y1,B1]},Zmt=Jmt;var aY={};lr(aY,{default:()=>tyt});We();We();var iY="catalog:";var sY=t=>t.startsWith(iY),Xmt=t=>t.range.slice(iY.length)||null,K2e=t=>t===null?"default catalog":`catalog "${t}"`,$mt=t=>t.scope?`@${t.scope}/${t.name}`:t.name,oY=(t,e,r,s)=>{let a=Xmt(e),n;if(a===null)n=t.configuration.get("catalog");else try{let m=t.configuration.get("catalogs");m&&(n=m.get(a))}catch{n=void 0}if(!n||n.size===0)throw new Zt(82,`${G.prettyDescriptor(t.configuration,e)}: ${K2e(a)} not found or empty`);let l=$mt(e),f=n.get(l);if(!f)throw new Zt(82,`${G.prettyDescriptor(t.configuration,e)}: entry not found in ${K2e(a)}`);let h=t.configuration.normalizeDependency(G.makeDescriptor(e,f));return r.supportsDescriptor(h,s)?r.bindDescriptor(h,t.topLevelWorkspace.anchoredLocator,s):h};var eyt={configuration:{catalog:{description:"The default catalog of packages",type:"MAP",valueDefinition:{description:"The catalog of packages",type:"STRING"}},catalogs:{description:"Named catalogs of packages",type:"MAP",valueDefinition:{description:"A named catalog",type:"MAP",valueDefinition:{description:"Package version in the catalog",type:"STRING"}}}},hooks:{beforeWorkspacePacking:(t,e)=>{let r=t.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new rs};for(let n of nr.allDependencies){let l=e[n];if(l)for(let[f,h]of Object.entries(l)){if(typeof h!="string"||!sY(h))continue;let A=G.parseIdent(f),m=G.makeDescriptor(A,h),w=oY(r,m,s,a),{protocol:v,source:D,params:I,selector:R}=G.parseRange(G.convertToManifestRange(w.range));v===t.project.configuration.get("defaultProtocol")&&(v=null),l[f]=G.makeRange({protocol:v,source:D,params:I,selector:R})}}},reduceDependency:async(t,e,r,s,{resolver:a,resolveOptions:n})=>sY(t.range)?oY(e,t,a,n):t}},tyt=eyt;var hY={};lr(hY,{default:()=>nyt});We();var Ut={optional:!0},cY=[["@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:Ut,zenObservable:Ut}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Ut,zenObservable:Ut}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":Ut}}],["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":Ut,"postcss-jsx":Ut,"postcss-less":Ut,"postcss-markdown":Ut,"postcss-scss":Ut}}],["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:Ut}}],["snowpack@>=3.3.0",{dependencies:{"node-gyp":"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Ut}}],["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:Ut,"vue-template-compiler":Ut}}],["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"}}],Line truncated
This command will output all matches to the given prolog query.
`,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(RD(),kD)),s=await $e.find(this.context.cwd,this.context.plugins),{project:a}=await Yt.find(s,this.context.cwd),n=await r.find(a),l=this.query;return l.endsWith(".")||(l=`${l}.`),(await Wt.start({configuration:s,json:this.json,stdout:this.context.stdout},async h=>{for await(let A of n.query(l)){let m=Array.from(Object.entries(A)),w=m.length,v=m.reduce((D,[I])=>Math.max(D,I.length),0);for(let D=0;D<w;D++){let[I,R]=m[D];h.reportInfo(null,`${Iyt(D,w)}${I.padEnd(v," ")} = ${Eyt(R)}`)}h.reportJson(A)}})).exitCode()}};function Eyt(t){return typeof t!="string"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function Iyt(t,e){let r=t===0,s=t===e-1;return r&&s?"":r?"\u250C ":s?"\u2514 ":"\u2502 "}We();sr();var k1=class extends mt{constructor(){super(...arguments);this.verbose=ye.Boolean("-v,--verbose",!1,{description:"Also print the fact database automatically compiled from the workspace manifests"})}static{this.paths=[["constraints","source"]]}static{this.usage=At.Usage({category:"Constraints-related commands",description:"print the source code for the constraints",details:"\n This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\n ",examples:[["Prints the source code","yarn constraints source"],["Print the source code and the fact database","yarn constraints source -v"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(RD(),kD)),s=await $e.find(this.context.cwd,this.context.plugins),{project:a}=await Yt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};We();We();sr();DD();var R1=class extends mt{constructor(){super(...arguments);this.fix=ye.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["constraints"]]}static{this.usage=At.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:`
This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code.
If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution.
For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints.
`,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s}=await Yt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new S1(s);else{let{Constraints:A}=await Promise.resolve().then(()=>(RD(),kD));n=await A.find(s)}let l,f=!1,h=!1;for(let A=this.fix?10:1;A>0;--A){let m=await n.process();if(!m)break;let{changedWorkspaces:w,remainingErrors:v}=zO(s,m,{fix:this.fix}),D=[];for(let[I,R]of w){let N=I.manifest.indent;I.manifest=new nr,I.manifest.indent=N,I.manifest.load(R),D.push(I.persistManifest())}if(await Promise.all(D),!(w.size>0&&A>1)){l=$2e(v,{configuration:r}),f=!1,h=!0;for(let[,I]of v)for(let R of I)R.fixable?f=!0:h=!1}}if(l.children.length===0)return 0;if(f){let A=h?`Those errors can all be fixed by running ${pe.pretty(r,"yarn constraints --fix",pe.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${pe.pretty(r,"yarn constraints --fix",pe.Type.CODE)}`;await Wt.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async m=>{m.reportInfo(0,A),m.reportSeparator()})}return l.children=Ye.sortMap(l.children,A=>A.value[1]),bs.emitTree(l,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};DD();var wyt={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[x1,k1,R1],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get("enableConstraintsChecks"))return;let r=await t.loadUserConfig(),s;if(r?.constraints)s=new S1(t);else{let{Constraints:l}=await Promise.resolve().then(()=>(RD(),kD));s=await l.find(t)}let a=await s.process();if(!a)return;let{remainingErrors:n}=zO(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[l,f]of n)for(let h of f)e(84,`${pe.pretty(t.configuration,l.anchoredLocator,pe.Type.IDENT)}: ${h.text}`);else e(84,`Constraint check failed; run ${pe.pretty(t.configuration,"yarn constraints",pe.Type.CODE)} for more details`)}}},Cyt=wyt;var kY={};lr(kY,{CreateCommand:()=>T1,DlxCommand:()=>Q1,default:()=>vyt});We();sr();var T1=class extends mt{constructor(){super(...arguments);this.pkg=ye.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=ye.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ye.String();this.args=ye.Proxy()}static{this.paths=[["create"]]}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let s=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=G.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?G.makeIdent(a.scope,`create-${a.name}`):G.makeIdent(null,`create-${a.name}`),l=G.stringifyIdent(n);return a.range!=="unknown"&&(l+=`@${a.range}`),this.cli.run(["dlx",...r,l,...this.args])}};We();We();Mt();sr();var Q1=class extends mt{constructor(){super(...arguments);this.packages=ye.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=ye.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ye.String();this.args=ye.Proxy()}static{this.paths=[["dlx"]]}static{this.usage=At.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-vite to scaffold a new Vite project","yarn dlx create-vite"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]})}async execute(){return $e.telemetry=null,await fe.mktempPromise(async r=>{let s=Y.join(r,`dlx-${process.pid}`);await fe.mkdirPromise(s),await fe.writeFilePromise(Y.join(s,"package.json"),`{}
`),await fe.writeFilePromise(Y.join(s,"yarn.lock"),"");let a=Y.join(s,".yarnrc.yml"),n=await $e.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await $e.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Mh(68),level:pe.LogLevel.Discard}]},h=n!==null?Y.join(n,".yarnrc.yml"):null;h!==null&&fe.existsSync(h)?(await fe.copyFilePromise(h,a),await $e.updateConfiguration(s,N=>{let U=Ye.toMerged(N,f);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(V=>{let ee=typeof V=="string"?V:V.path,te=me.isAbsolute(ee)?ee:me.resolve(me.fromPortablePath(n),ee);return typeof V=="string"?te:{path:te,spec:V.spec}})),U})):await fe.writeJsonPromise(a,f);let A=this.packages??[this.command],m=G.parseDescriptor(this.command).name,w=await this.cli.run(["add","--fixed","--",...A],{cwd:s,quiet:this.quiet});if(w!==0)return w;this.quiet||this.context.stdout.write(`
`);let v=await $e.find(s,this.context.plugins),{project:D,workspace:I}=await Yt.find(v,s);if(I===null)throw new Dr(D.cwd,s);await D.restoreInstallState();let R=await qn.getWorkspaceAccessibleBinaries(I);return R.has(m)===!1&&R.size===1&&typeof this.packages>"u"&&(m=Array.from(R)[0][0]),await qn.executeWorkspaceAccessibleBinary(I,m,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var Byt={commands:[T1,Q1]},vyt=Byt;var QY={};lr(QY,{ExecFetcher:()=>QD,ExecResolver:()=>FD,default:()=>Dyt,execUtils:()=>$O});We();We();We();Mt();var rA="exec:";var $O={};lr($O,{loadGeneratorFile:()=>TD,makeLocator:()=>TY,makeSpec:()=>SBe,parseSpec:()=>RY});We();Mt();function RY(t){let{params:e,selector:r}=G.parseRange(t),s=me.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?G.parseLocator(e.locator):null,path:s}}function SBe({parentLocator:t,path:e,generatorHash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function TY(t,{parentLocator:e,path:r,generatorHash:s,protocol:a}){return G.makeLocator(t,SBe({parentLocator:e,path:r,generatorHash:s,protocol:a}))}async function TD(t,e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(t,{protocol:e}),n=Y.isAbsolute(a)?{packageFs:new Jn(Rt.root),prefixPath:Rt.dot,localPath:Rt.root}:await r.fetcher.fetch(s,r),l=n.localPath?{packageFs:new Jn(Rt.root),prefixPath:Y.relative(Rt.root,n.localPath)}:n;n!==l&&n.releaseFs&&n.releaseFs();let f=l.packageFs,h=Y.join(l.prefixPath,a);return await f.readFilePromise(h,"utf8")}var QD=class{supports(e,r){return!!e.reference.startsWith(rA)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:rA});if(Y.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:Y.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,l]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:l}}async fetchFromDisk(e,r){let s=r.project.getDependencyMeta(e,null);if(!r.project.configuration.get("enableScripts")&&!s.built)throw new Zt(4,`${G.prettyLocator(r.project.configuration,e)} can't be built with the exec: protocol because all scripts have been disabled.`);let a=await TD(e.reference,rA,r);return fe.mktempPromise(async n=>{let l=Y.join(n,"generator.js");return await fe.writeFilePromise(l,a),fe.mktempPromise(async f=>{if(await this.generatePackage(f,e,l,r),!fe.existsSync(Y.join(f,"build")))throw new Error("The script should have generated a build directory");return await Hs.makeArchiveFromDirectory(Y.join(f,"build"),{prefixPath:G.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,s,a){return await fe.mktempPromise(async n=>{let l=await qn.makeScriptEnv({project:a.project,binFolder:n}),f=Y.join(e,"runtime.js");return await fe.mktempPromise(async h=>{let A=Y.join(h,"buildfile.log"),m=Y.join(e,"generator"),w=Y.join(e,"build");await fe.mkdirPromise(m),await fe.mkdirPromise(w);let v={tempDir:me.fromPortablePath(m),buildDir:me.fromPortablePath(w),locator:G.stringifyLocator(r)};await fe.writeFilePromise(f,`
// Expose 'Module' as a global variable
Object.defineProperty(global, 'Module', {
get: () => require('module'),
configurable: true,
enumerable: false,
});
// Expose non-hidden built-in modules as global variables
for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {
Object.defineProperty(global, name, {
get: () => require(name),
configurable: true,
enumerable: false,
});
}
// Expose the 'execEnv' global variable
Object.defineProperty(global, 'execEnv', {
value: {
...${JSON.stringify(v)},
},
enumerable: true,
});
`);let D=l.NODE_OPTIONS||"",I=/\s*--require\s+\S*\.pnp\.c?js\s*/g;D=D.replace(I," ").trim(),l.NODE_OPTIONS=D;let{stdout:R,stderr:N}=a.project.configuration.getSubprocessStreams(A,{header:`# This file contains the result of Yarn generating a package (${G.stringifyLocator(r)})
`,prefix:G.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await un.pipevp(process.execPath,["--require",me.fromPortablePath(f),me.fromPortablePath(s),G.stringifyIdent(r)],{cwd:e,env:l,stdin:null,stdout:R,stderr:N});if(U!==0)throw fe.detachTemp(h),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${pe.pretty(a.project.configuration,A,pe.Type.PATH)})`)})})}};We();We();We();var Syt=2,FD=class{supportsDescriptor(e,r){return!!e.range.startsWith(rA)}supportsLocator(e,r){return!!e.reference.startsWith(rA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){if(s.project.tryWorkspaceByLocator(r)===null)throw new Zt(57,`${G.prettyLocator(s.project.configuration,r)} lists ${G.prettyDescriptor(s.project.configuration,e)} as dependency, but only workspaces can depend on exec: packages.`);return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=RY(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let l=await TD(G.makeRange({protocol:rA,source:a,selector:a,params:{locator:G.stringifyLocator(n)}}),rA,s.fetchOptions),f=si.makeHash(`${Syt}`,l).slice(0,6);return[TY(e,{parentLocator:n,path:a,generatorHash:f,protocol:rA})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(l=>l.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ye.releaseAfterUseAsync(async()=>await nr.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var byt={fetchers:[QD],resolvers:[FD]},Dyt=byt;var NY={};lr(NY,{FileFetcher:()=>_D,FileResolver:()=>MD,TarballFileFetcher:()=>UD,TarballFileResolver:()=>HD,default:()=>kyt,fileUtils:()=>sE});We();Mt();var F1=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,ND=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Ds="file:";var sE={};lr(sE,{fetchArchiveFromLocator:()=>LD,makeArchiveFromLocator:()=>eL,makeBufferFromLocator:()=>FY,makeLocator:()=>N1,makeSpec:()=>bBe,parseSpec:()=>OD});We();Mt();function OD(t){let{params:e,selector:r}=G.parseRange(t),s=me.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?G.parseLocator(e.locator):null,path:s}}function bBe({parentLocator:t,path:e,hash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function N1(t,{parentLocator:e,path:r,hash:s,protocol:a}){return G.makeLocator(t,bBe({parentLocator:e,path:r,hash:s,protocol:a}))}async function LD(t,e){let{parentLocator:r,path:s}=G.parseFileStyleRange(t.reference,{protocol:Ds}),a=Y.isAbsolute(s)?{packageFs:new Jn(Rt.root),prefixPath:Rt.dot,localPath:Rt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new Jn(Rt.root),prefixPath:Y.relative(Rt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let l=n.packageFs,f=Y.join(n.prefixPath,s);return await Ye.releaseAfterUseAsync(async()=>await l.readFilePromise(f),n.releaseFs)}async function eL(t,{protocol:e,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=G.parseFileStyleRange(t.reference,{protocol:e}),l=Y.isAbsolute(n)?{packageFs:new Jn(Rt.root),prefixPath:Rt.dot,localPath:Rt.root}:await r.fetcher.fetch(a,r),f=l.localPath?{packageFs:new Jn(Rt.root),prefixPath:Y.relative(Rt.root,l.localPath)}:l;l!==f&&l.releaseFs&&l.releaseFs();let h=f.packageFs,A=Y.join(f.prefixPath,n);return await Ye.releaseAfterUseAsync(async()=>await Hs.makeArchiveFromDirectory(A,{baseFs:h,prefixPath:G.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:s}),f.releaseFs)}async function FY(t,{protocol:e,fetchOptions:r}){return(await eL(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var _D=class{supports(e,r){return!!e.reference.startsWith(Ds)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:Ds});if(Y.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:Y.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,l]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFro Line truncated
`,{automaticNewlines:!0});let A=[h],m=Y.join(this.context.cwd,"README.md");if(fe.existsSync(m)||(await fe.writeFilePromise(m,`# ${G.stringifyIdent(n.name)}
`),A.push(m)),!s||s.cwd===this.context.cwd){let w=Y.join(this.context.cwd,Or.lockfile);fe.existsSync(w)||(await fe.writeFilePromise(w,""),A.push(w));let D=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Whether you use PnP or not, the node_modules folder is often used to store","# build artifacts that should be gitignored","node_modules","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/caching#zero-installs","","#!.yarn/cache",".pnp.*"].map(ie=>`${ie}
`).join(""),I=Y.join(this.context.cwd,".gitignore");fe.existsSync(I)||(await fe.writeFilePromise(I,D),A.push(I));let N=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(ie=>`${ie}
`).join(""),U=Y.join(this.context.cwd,".gitattributes");fe.existsSync(U)||(await fe.writeFilePromise(U,N),A.push(U));let V={"*":{charset:"utf-8",endOfLine:"lf",indentSize:2,indentStyle:"space",insertFinalNewline:!0}};Ye.mergeIntoTarget(V,r.get("initEditorConfig"));let ee=`root = true
`;for(let[ie,ae]of Object.entries(V)){ee+=`
[${ie}]
`;for(let[ge,de]of Object.entries(ae)){let xe=ge.replace(/[A-Z]/g,we=>`_${we.toLowerCase()}`);ee+=`${xe} = ${de}
`}}let te=Y.join(this.context.cwd,".editorconfig");fe.existsSync(te)||(await fe.writeFilePromise(te,ee),A.push(te)),await this.cli.run(["install"],{quiet:!0}),await this.initialize(),fe.existsSync(Y.join(this.context.cwd,".git"))||(await un.execvp("git",["init"],{cwd:this.context.cwd}),await un.execvp("git",["add","--",...A],{cwd:this.context.cwd}),await un.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};var O1=class extends yg{constructor(){super(...arguments);this.initializer=ye.String();this.argv=ye.Proxy()}static{this.paths=[["init"]]}async initialize(){this.context.stdout.write(`
`),await this.cli.run(["dlx",this.initializer,...this.argv],{quiet:!0})}};var Nyt={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:[yg,O1]},Oyt=Nyt;var Lz={};lr(Lz,{SearchCommand:()=>e2,UpgradeInteractiveCommand:()=>t2,default:()=>W2t});We();var RBe=st(Ae("os"));function L1({stdout:t}){if(RBe.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!t.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}sr();var Gve=st(iK()),sK={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},QIt=(0,Gve.default)(sK.appId,sK.apiKey).initIndex(sK.indexName),oK=async(t,e=0)=>await QIt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var GP=["regular","dev","peer"],e2=class extends mt{static{this.paths=[["search"]]}static{this.usage=At.Usage({category:"Interactive commands",description:"open the search interface",details:`
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"]]})}async execute(){L1(this.context);let{Gem:e}=await Promise.resolve().then(()=>(OL(),bz)),{ScrollableItems:r}=await Promise.resolve().then(()=>(UL(),ML)),{useKeypress:s}=await Promise.resolve().then(()=>($1(),Dz)),{useMinistore:a}=await Promise.resolve().then(()=>(Tz(),Rz)),{renderForm:n}=await Promise.resolve().then(()=>(VL(),qL)),{default:l}=await Promise.resolve().then(()=>st(PPe())),{Box:f,Text:h}=await Promise.resolve().then(()=>st(Du())),{default:A,useEffect:m,useState:w}=await Promise.resolve().then(()=>st(Ln())),v=await $e.find(this.context.cwd,this.context.plugins),D=()=>A.createElement(f,{flexDirection:"row"},A.createElement(f,{flexDirection:"column",width:48},A.createElement(f,null,A.createElement(h,null,"Press ",A.createElement(h,{bold:!0,color:"cyanBright"},"<up>"),"/",A.createElement(h,{bold:!0,color:"cyanBright"},"<down>")," to move between packages.")),A.createElement(f,null,A.createElement(h,null,"Press ",A.createElement(h,{bold:!0,color:"cyanBright"},"<space>")," to select a package.")),A.createElement(f,null,A.createElement(h,null,"Press ",A.createElement(h,{bold:!0,color:"cyanBright"},"<space>")," again to change the target."))),A.createElement(f,{flexDirection:"column"},A.createElement(f,{marginLeft:1},A.createElement(h,null,"Press ",A.createElement(h,{bold:!0,color:"cyanBright"},"<enter>")," to install the selected packages.")),A.createElement(f,{marginLeft:1},A.createElement(h,null,"Press ",A.createElement(h,{bold:!0,color:"cyanBright"},"<ctrl+c>")," to abort.")))),I=()=>A.createElement(A.Fragment,null,A.createElement(f,{width:15},A.createElement(h,{bold:!0,underline:!0,color:"gray"},"Owner")),A.createElement(f,{width:11},A.createElement(h,{bold:!0,underline:!0,color:"gray"},"Version")),A.createElement(f,{width:10},A.createElement(h,{bold:!0,underline:!0,color:"gray"},"Downloads"))),R=()=>A.createElement(f,{width:17},A.createElement(h,{bold:!0,underline:!0,color:"gray"},"Target")),N=({hit:de,active:xe})=>{let[we,d]=a(de.name,null);s({active:xe},(Ee,he)=>{if(he.name!=="space")return;if(!we){d(GP[0]);return}let $=GP.indexOf(we)+1;$===GP.length?d(null):d(GP[$])},[we,d]);let be=G.parseIdent(de.name),Ce=G.prettyIdent(v,be);return A.createElement(f,null,A.createElement(f,{width:45},A.createElement(h,{bold:!0,wrap:"wrap"},Ce)),A.createElement(f,{width:14,marginLeft:1},A.createElement(h,{bold:!0,wrap:"truncate"},de.owner.name)),A.createElement(f,{width:10,marginLeft:1},A.createElement(h,{italic:!0,wrap:"truncate"},de.version)),A.createElement(f,{width:16,marginLeft:1},A.createElement(h,null,de.humanDownloadsLast30Days)))},U=({name:de,active:xe})=>{let[we]=a(de,null),d=G.parseIdent(de);return A.createElement(f,null,A.createElement(f,{width:47},A.createElement(h,{bold:!0}," - ",G.prettyIdent(v,d))),GP.map(be=>A.createElement(f,{key:be,width:14,marginLeft:1},A.createElement(h,null," ",A.createElement(e,{active:we===be})," ",A.createElement(h,{bold:!0},be)))))},V=()=>A.createElement(f,{marginTop:1},A.createElement(h,null,"Powered by Algolia.")),te=await n(({useSubmit:de})=>{let xe=a();de(xe);let we=Array.from(xe.keys()).filter(j=>xe.get(j)!==null),[d,be]=w(""),[Ce,Ee]=w(0),[he,$]=w([]),De=j=>{j.match(/\t| /)||be(j)},Te=async()=>{Ee(0);let j=await oK(d);j.query===d&&$(j.hits)},ot=async()=>{let j=await oK(d,Ce+1);j.query===d&&j.page-1===Ce&&(Ee(j.page),$([...he,...j.hits]))};return m(()=>{d?Te():$([])},[d]),A.createElement(f,{flexDirection:"column"},A.createElement(D,null),A.createElement(f,{flexDirection:"row",marginTop:1},A.createElement(h,{bold:!0},"Search: "),A.createElement(f,{width:41},A.createElement(l,{value:d,onChange:De,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),A.createElement(I,null)),he.length?A.createElement(r,{radius:2,loop:!1,children:he.map(j=>A.createElement(N,{key:j.name,hit:j,active:!1})),willReachEnd:ot}):A.createElement(h,{color:"gray"},"Start typing..."),A.createElement(f,{flexDirection:"row",marginTop:1},A.createElement(f,{width:49},A.createElement(h,{bold:!0},"Selected:")),A.createElement(R,null)),we.length?we.map(j=>A.createElement(U,{key:j,name:j,active:!1})):A.createElement(h,{color:"gray"},"No selected packages..."),A.createElement(V,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof te>"u")return 1;let ie=Array.from(te.keys()).filter(de=>te.get(de)==="regular"),ae=Array.from(te.keys()).filter(de=>te.get(de)==="dev"),ge=Array.from(te.keys()).filter(de=>te.get(de)==="peer");return ie.length&&await this.cli.run(["add",...ie]),ae.length&&await this.cli.run(["add","--dev",...ae]),ge&&await this.cli.run(["add","--peer",...ge]),0}};We();sr();FV();var NPe=st(Di());ga();var FPe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;function OPe(t,e){return t.length>0?[t.slice(0,e)].concat(OPe(t.slice(e),e)):[]}var t2=class extends mt{constructor(){super(...arguments);this.mode=ye.String("--mode",{description:"Change what artifacts installs genera Line truncated
${m}, next tree:
${JP(f)}`);let v=UPe(f);if(v)throw new Error(`${v}, after hoisting finished:
${JP(f)}`)}return n.debugLevel>=2&&console.log(JP(f)),oBt(f)},$2t=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let l of n.hoistedDependencies.values())r.set(l.name,l);for(let l of n.dependencies.values())n.peerNames.has(l.name)||a(l)}};return a(e),r},eBt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=new Set,n=(l,f)=>{if(s.has(l))return;s.add(l);for(let A of l.hoistedDependencies.values())if(!f.has(A.name)){let m;for(let w of t)m=w.dependencies.get(A.name),m&&r.set(m.name,m)}let h=new Set;for(let A of l.dependencies.values())h.add(A.name);for(let A of l.dependencies.values())l.peerNames.has(A.name)||n(A,h)};return n(e,a),r},_Pe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:s,ident:a,locator:n,dependencies:l,originalDependencies:f,hoistedDependencies:h,peerNames:A,reasons:m,isHoistBorder:w,hoistPriority:v,dependencyKind:D,hoistedFrom:I,hoistedTo:R}=e,N={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(l),originalDependencies:new Map(f),hoistedDependencies:new Map(h),peerNames:new Set(A),reasons:new Map(m),decoupled:!0,isHoistBorder:w,hoistPriority:v,dependencyKind:D,hoistedFrom:new Map(I),hoistedTo:new Map(R)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),t.dependencies.set(N.name,N),N},tBt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(e.keys());s.sort((a,n)=>{let l=e.get(a),f=e.get(n);if(f.hoistPriority!==l.hoistPriority)return f.hoistPriority-l.hoistPriority;{let h=l.dependents.size+l.peerDependents.size;return f.dependents.size+f.peerDependents.size-h}});for(let a of s){let n=a.substring(0,a.indexOf("@",1)),l=a.substring(n.length+1);if(!t.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(l)<0&&f.push(l)}}return r},Hz=t=>{let e=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!t.peerNames.has(n)){let l=t.dependencies.get(n);l&&!e.has(l)&&r(l,a)}e.add(s)}};for(let s of t.dependencies.values())t.peerNames.has(s.name)||r(s);return e},Gz=(t,e,r,s,a,n=new Set)=>{let l=e[e.length-1];if(n.has(l))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(l);let f=aBt(l),h=tBt(l,f),A=t==l?new Map:a.fastLookupPossible?$2t(e):eBt(e),m,w=!1,v=!1,D=new Map(Array.from(h.entries()).map(([R,N])=>[R,N[0]])),I=new Map;do{let R=iBt(t,e,r,A,D,h,s,I,a);R.isGraphChanged&&(v=!0),R.anotherRoundNeeded&&(w=!0),m=!1;for(let[N,U]of h)U.length>1&&!l.dependencies.has(N)&&(D.delete(N),U.shift(),D.set(N,U[0]),m=!0)}while(m);for(let R of l.dependencies.values())if(!l.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let N=Gz(t,[...e,R],r,I,a);N.isGraphChanged&&(v=!0),N.anotherRoundNeeded&&(w=!0),r.delete(R.locator)}return{anotherRoundNeeded:w,isGraphChanged:v}},rBt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},nBt=(t,e,r,s,a,n,l,f,{outputReason:h,fastLookupPossible:A})=>{let m,w=null,v=new Set;h&&(m=`${Array.from(e).map(N=>Yo(N)).join("\u2192")}`);let D=r[r.length-1],R=!(s.ident===D.ident);if(h&&!R&&(w="- self-reference"),R&&(R=s.dependencyKind!==1,h&&!R&&(w="- workspace")),R&&s.dependencyKind===2&&(R=!rBt(s),h&&!R&&(w="- external soft link with unhoisted dependencies")),R&&(R=!t.peerNames.has(s.name),h&&!R&&(w=`- cannot shadow peer: ${Yo(t.originalDependencies.get(s.name).locator)} at ${m}`)),R){let N=!1,U=a.get(s.name);if(N=!U||U.ident===s.ident,h&&!N&&(w=`- filled by: ${Yo(U.locator)} at ${m}`),N)for(let V=r.length-1;V>=1;V--){let te=r[V].dependencies.get(s.name);if(te&&te.ident!==s.ident){N=!1;let ie=f.get(D);ie||(ie=new Set,f.set(D,ie)),ie.add(s.name),h&&(w=`- filled by ${Yo(te.locator)} at ${r.slice(0,V).map(ae=>Yo(ae.locator)).join("\u2192")}`);break}}R=N}if(R&&(R=n.get(s.name)===s.ident,h&&!R&&(w=`- filled by: ${Yo(l.get(s.name)[0])} at ${m}`)),R){let N=!0,U=new Set(s.peerNames);for(let V=r.length-1;V>=1;V--){let ee=r[V];for(let te of U){if(ee.peerNames.has(te)&&ee.originalDependencies.has(te))continue;let ie=ee.dependencies.get(te);ie&&t.dependencies.get(te)!==ie&&(V===r.length-1?v.add(ie):(v=null,N=!1,h&&(w=`- peer dependency ${Yo(ie.locator)} from parent ${Yo(ee.locator)} was not hoisted to ${m}`))),U.delete(te)}if(!N)break}R=N}if(R&&!A)for(let N of s.hoistedDependencies.values()){let U=a.get(N.name)||t.dependencies.get(N.name);if(!U||N.ident!==U.ident){R=!1,h&&(w=`- previously hoisted dependency mismatch, needed: ${Yo(N.locator)}, available: ${Yo(U?.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:w}:{isHoistable:R?0:1,reason:w}},KL=t=>`${t.name}@${t.locator}`,iBt=(t,e,r,s,a,n,l,f,h)=>{let A=e[e.length-1],m=new Set,w=!1,v=!1,D=(U,V,ee,te,ie)=>{if(m.has(te))return;let ae=[...V,KL(te)],ge=[...ee,KL(te)],de=new Map,xe=new Map;for(let Ee of Hz(te)){let he=nBt(A,r,[A,...U,te],Ee,s,a,n,f,{outputReason:h.debugLevel>=2,fastLookupPossible:h.fastLookupPossible});if(xe.set(Ee,he),he.isHoistable===2)for(let $ of he.dependsOn){let Line truncated
${JP(t)}`)}let Ce=Hz(te);for(let Ee of Ce)if(we.has(Ee)){let he=xe.get(Ee);if((a.get(Ee.name)===Ee.ident||!te.reasons.has(Ee.name))&&he.isHoistable!==0&&te.reasons.set(Ee.name,he.reason),!Ee.isHoistBorder&&ge.indexOf(KL(Ee))<0){m.add(te);let De=_Pe(te,Ee);D([...U,te],ae,ge,De,R),m.delete(te)}}},I,R=new Set(Hz(A)),N=Array.from(e).map(U=>KL(U));do{I=R,R=new Set;for(let U of I){if(U.locator===A.locator||U.isHoistBorder)continue;let V=_Pe(A,U);D([],Array.from(r),N,V,R)}}while(R.size>0);return{anotherRoundNeeded:w,isGraphChanged:v}},UPe=t=>{let e=[],r=new Set,s=new Set,a=(n,l,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let h=new Map(l);for(let A of n.dependencies.values())n.peerNames.has(A.name)||h.set(A.name,A);for(let A of n.originalDependencies.values()){let m=h.get(A.name),w=()=>`${Array.from(s).concat([n]).map(v=>Yo(v.locator)).join("\u2192")}`;if(n.peerNames.has(A.name)){let v=l.get(A.name);(v!==m||!v||v.ident!==A.ident)&&e.push(`${w()} - broken peer promise: expected ${A.ident} but found ${v&&v.ident}`)}else{let v=f.hoistedFrom.get(n.name),D=n.hoistedTo.get(A.name),I=`${v?` hoisted from ${v.join(", ")}`:""}`,R=`${D?` hoisted to ${D}`:""}`,N=`${w()}${I}`;m?m.ident!==A.ident&&e.push(`${N} - broken require promise for ${A.name}${R}: expected ${A.ident}, but found: ${m.ident}`):e.push(`${N} - broken require promise: no required dependency ${A.name}${R} found`)}}s.add(n);for(let A of n.dependencies.values())n.peerNames.has(A.name)||a(A,h,n);s.delete(n)};return a(t,t.dependencies,t),e.join(`
`)},sBt=(t,e)=>{let{identName:r,name:s,reference:a,peerNames:n}=t,l={name:s,references:new Set([a]),locator:jz(r,a),ident:LPe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[t,l]]),h=(A,m)=>{let w=f.get(A),v=!!w;if(!w){let{name:D,identName:I,reference:R,peerNames:N,hoistPriority:U,dependencyKind:V}=A;w={name:D,references:new Set([R]),locator:jz(I,R),ident:LPe(I,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:!1,hoistPriority:U||0,dependencyKind:V||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(A,w)}if(!w.isHoistBorder&&e.hoistingLimits.get(m.locator)?.has(A.name)&&(w.isHoistBorder=!0),m.dependencies.set(A.name,w),m.originalDependencies.set(A.name,w),v){let D=new Set,I=R=>{if(!D.has(R)){D.add(R),R.decoupled=!1;for(let N of R.dependencies.values())R.peerNames.has(N.name)||I(N)}};I(w)}else for(let D of A.dependencies)h(D,w)};for(let A of t.dependencies)h(A,l);return l},qz=t=>t.substring(0,t.indexOf("@",1)),oBt=t=>{let e={name:t.name,identName:qz(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),s=(a,n,l)=>{let f=r.has(a),h;if(n===a)h=l;else{let{name:A,references:m,locator:w}=a;h={name:A,identName:qz(w),references:m,dependencies:new Set}}if(l.dependencies.add(h),!f){r.add(a);for(let A of a.dependencies.values())a.peerNames.has(A.name)||s(A,a,h);r.delete(a)}};for(let a of t.dependencies.values())s(a,t,e);return e},aBt=t=>{let e=new Map,r=new Set([t]),s=l=>`${l.name}@${l.ident}`,a=l=>{let f=s(l),h=e.get(f);return h||(h={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(f,h)),h},n=(l,f)=>{let h=!!r.has(f);if(a(f).dependents.add(l.ident),!h){r.add(f);for(let m of f.dependencies.values()){let w=a(m);w.hoistPriority=Math.max(w.hoistPriority,m.hoistPriority),f.peerNames.has(m.name)?w.peerDependents.add(f.ident):n(f,m)}}};for(let l of t.dependencies.values())t.peerNames.has(l.name)||n(t,l);return e},Yo=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let s=t.substring(e+1);if(s==="workspace:.")return".";if(s){let a=(s.indexOf("#")>0?s.split("#")[1]:s).replace("npm:","");return s.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`};var JP=t=>{let e=0,r=(a,n,l="")=>{if(e>5e4||n.has(a))return"";e++;let f=Array.from(a.dependencies.values()).sort((A,m)=>A.name===m.name?0:A.name>m.name?1:-1),h="";n.add(a);for(let A=0;A<f.length;A++){let m=f[A];if(!a.peerNames.has(m.name)&&m!==a){let w=a.reasons.get(m.name),v=qz(m.locator);h+=`${l}${A<f.length-1?"\u251C\u2500":"\u2514\u2500"}${(n.has(m)?">":"")+(v!==m.name?`a:${m.name}:`:"")+Yo(m.locator)+(w?` ${w}`:"")}
`,h+=r(m,n,`${l}${A<f.length-1?"\u2502 ":" "}`)}}return n.delete(a),h};return r(t,new Set)+(e>5e4?`
Tree is too large, part of the tree has been dunped
`:"")};var ZP=(s=>(s.WORKSPACES="workspaces",s.DEPENDENCIES="dependencies",s.NONE="none",s))(ZP||{}),HPe="node_modules",vg="$wsroot$";var XP=(t,e)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=lBt(t,e),l=null;if(a.length===0){let f=MPe(r,{hoistingLimits:s});l=fBt(t,f,e)}return{tree:l,errors:a,preserveSymlinksRequired:n}},oA=t=>`${t.name}@${t.reference}`,Wz=t=>{let e=new Map;for(let[r,s]of t.entries())if(!s.dirList){let a=e.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},e.set(s.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(Y.delimiter).length,l=a.split(Y.delimiter).length;return a===s?0:n!==l?l-n:a>s?1:-1});return e},jPe=(t,e)=>{let r=G.isVirtualLocator(t)?G.devirtualizeLocator(t):t,s=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e;return G.areLocatorsEqual(r,s)},Vz=(t,e,r,s)=>{if(t.linkType!=="SOFT")return!1;let a=me.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return Y.contains(s,a)===null},cBt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let s=me.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},l=t.getDependencyTreeRoots(),f=new Map,h=new Set,A=(v,D)=>{let I=oA(v);if(h.has(I))return;h.add(I);let R=t.getPackageInformation(v);if(R){let N=D?oA(D):"";if(oA(v)!==N&&R.linkType==="SOFT"&&!v.reference.startsWith("link:")&&!Vz(R,v,t,s)){let U=GPe(R,v,t);(!f.get(U)||v.reference.startsWith("workspace:"))&&f.set(U,v)}for(let[U,V]of R.packageDependencies)V!==null&&(R.packagePeers.has(U)||A(t.getLocator(U,V),v))}};for(let v of l)A(v,null);let m=s.split(Y.sep);for(let v of f.values()){let D=t.getPackageInformation(v),R=me.toPortablePath(D.packageLocation.slice(0,-1)).split(Y.sep).slice(m.length),N=n;for(let U of R){let V=N.children.get(U);V||(V={children:new Map},N.children.set(U,V)),N=V}N.workspaceLocator=v}let w=(v,D)=>{if(v.workspaceLocator){let I=oA(D),R=a.get(I);R||(R=new Set,a.set(I,R)),R.add(v.workspaceLocator)}for(let I of v.children.values())w(I,v.workspaceLocator||D)};for(let v of n.children.values())w(v,n.workspaceLocator);return a},lBt=(t,e)=>{let r=[],s=!1,a=new Map,n=cBt(t),l=t.getPackageInformation(t.topLevel);if(l===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=t.findPackageLocator(l.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let h=me.toPortablePath(l.packageLocation.slice(0,-1)),A={name:f.name,identName:f.name,reference:f.reference,peerNames:l.packagePeers,dependencies:new Set,dependencyKind:1},m=new Map,w=(D,I)=>`${oA(I)}:${D}`,v=(D,I,R,N,U,V,ee,te)=>{let ie=w(D,R),ae=m.get(ie),ge=!!ae;!ge&&R.name===f.name&&R.reference===f.reference&&(ae=A,m.set(ie,A));let de=Vz(I,R,t,h);if(!ae){let Ee=0;de?Ee=2:I.linkType==="SOFT"&&R.name.endsWith(vg)&&(Ee=1),ae={name:D,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:Ee===1?new Set:I.packagePeers,dependencyKind:Ee},m.set(ie,ae)}let xe;if(de?xe=2:U.linkType==="SOFT"?xe=1:xe=0,ae.hoistPriority=Math.max(ae.hoistPriority||0,xe),te&&!de){let Ee=oA({name:N.identName,reference:N.reference}),he=a.get(Ee)||new Set;a.set(Ee,he),he.add(ae.name)}let we=new Map(I.packageDependencies);if(e.project){let Ee=e.project.workspacesByCwd.get(me.toPortablePath(I.packageLocation.slice(0,-1)));if(Ee){let he=new Set([...Array.from(Ee.manifest.peerDependencies.values(),$=>G.stringifyIdent($)),...Array.from(Ee.manifest.peerDependenciesMeta.keys())]);for(let $ of he)we.has($)||(we.set($,V.get($)||null),ae.peerNames.add($))}}let d=oA({name:R.name.replace(vg,""),reference:R.reference}),be=n.get(d);if(be)for(let Ee of be)we.set(`${Ee.name}${vg}`,Ee.reference);(I!==U||I.linkType!=="SOFT"||!de&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(ee)))&&N.dependencies.add(ae);let Ce=R!==f&&I.linkType==="SOFT"&&!R.name.endsWith(vg)&&!de;if(!ge&&!Ce){let Ee=new Map;for(let[he,$]of we)if($!==null){let De=t.getLocator(he,$),Te=t.getLocator(he.replace(vg,""),$),ot=t.getPackageInformation(Te);if(ot===null)throw new Error("Assertion failed: Expected the package to have been registered");let j=Vz(ot,De,t,h);if(e.validateExternalSoftLinks&&e.project&&j){ot.packageDependencies.size>0&&(s=!0);for(let[He,Qe]of ot.packageDependencies)if(Qe!==null){let ft=G.parseLocator(Array.isArray(Qe)?`${Qe[0]}@${Qe[1]}`:`${He}@${Qe}`);if(oA(ft)!==oA(De)){let Me=we.get(He);if(Me){let x=G.parseLocator(Array.isArray(Me)?`${Me[0]}@${Me[1]}`:`${He}@${Me}`);jPe(x,ft)||r.push({messageName:71,text:`Cannot link ${G.prettyIdent(e.project.configuration,G.parseIdent(De.name))} into ${G.pretLine truncated
`;for(let n=0,l=t.length;n<l;++n)a+=s+zL(String(n),t[n],e,s).replace(/^ +/,""),n+1<l&&(a+=","),a+=`
`;return a+=r,a+="]",a}function CBt(t,e,r){let s=Object.keys(t),a="";a+="{";for(let n=0,l=s.length,f=0;n<l;++n){let h=s[n],A=t[h];typeof A>"u"||(f!==0&&(a+=", "),a+=JSON.stringify(h),a+=": ",a+=zL(h,A,e,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function BBt(t,e,r){let s=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{
`;let l=0;for(let f=0,h=s.length;f<h;++f){let A=s[f],m=t[A];typeof m>"u"||(l!==0&&(n+=",",n+=`
`),n+=a,n+=JSON.stringify(A),n+=": ",n+=zL(A,m,e,a).replace(/^ +/g,""),l+=1)}return l!==0&&(n+=`
`),n+=r,n+="}",n}function zL(t,e,r,s){let{next:a}=WPe[r],n=a[t]||a["*"];return YPe(e,n,s)}function YPe(t,e,r){let{collapsed:s}=WPe[e];return Array.isArray(t)?s?IBt(t,e,r):wBt(t,e,r):typeof t=="object"&&t!==null?s?CBt(t,e,r):BBt(t,e,r):JSON.stringify(t)}function KPe(t){return YPe(t,"TOP_LEVEL","")}function $P(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(l=>n(l)));let a=r.map((n,l)=>l);return a.sort((n,l)=>{for(let f of s){let h=f[n]<f[l]?-1:f[n]>f[l]?1:0;if(h!==0)return h}return 0}),a.map(n=>r[n])}function vBt(t){let e=new Map,r=$P(t.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=e.get(s);typeof n>"u"&&e.set(s,n=new Set),n.add(a)}return Array.from(e).map(([s,a])=>[s,Array.from(a)])}function SBt(t){return $P(t.fallbackPool||[],([e])=>e)}function bBt(t){let e=[],r=t.dependencyTreeRoots.find(s=>t.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation==="./");for(let[s,a]of $P(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){if(s===null)continue;let n=[];e.push([s,n]);for(let[l,{packageLocation:f,packageDependencies:h,packagePeers:A,linkType:m,discardFromLookup:w}]of $P(a,([v])=>v===null?"0":`1${v}`)){if(l===null)continue;let v=[];s!==null&&l!==null&&!h.has(s)&&v.push([s,l]);for(let[U,V]of h)v.push([U,V]);let D=$P(v,([U])=>U),I=A&&A.size>0?Array.from(A):void 0,N={packageLocation:f,packageDependencies:D,packagePeers:I,linkType:m,discardFromLookup:w||void 0};n.push([l,N]),r&&s===r.name&&l===r.reference&&e.unshift([null,[[null,N]]])}}return e}function ex(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,pnpZipBackend:t.pnpZipBackend,fallbackExclusionList:vBt(t),fallbackPool:SBt(t),packageRegistryData:bBt(t)}}var ZPe=st(JPe());function XPe(t,e){return[t?`${t}
`:"",`/* eslint-disable */
`,`// @ts-nocheck
`,`"use strict";
`,`
`,e,`
`,(0,ZPe.default)()].join("")}function DBt(t){return JSON.stringify(t,null,2)}function PBt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\
`)}'`}function xBt(t){return[`const RAW_RUNTIME_STATE =
`,`${PBt(KPe(t))};
`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {
`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});
`,`}
`].join("")}function kBt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {
`,` const fs = require('fs');
`,` const path = require('path');
`,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Or.pnpData)});
`,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});
`,`}
`].join("")}function $Pe(t){let e=ex(t),r=xBt(e);return XPe(t.shebang,r)}function exe(t){let e=ex(t),r=kBt(),s=XPe(t.shebang,r);return{dataFile:DBt(e),loaderFile:s}}Mt();function Jz(t,{basePath:e}){let r=me.toPortablePath(e),s=Y.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,l=new Map(t.packageRegistryData.map(([w,v])=>[w,new Map(v.map(([D,I])=>{if(w===null!=(D===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let R=I.discardFromLookup??!1,N={name:w,reference:D},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=N)):n.set(I.packageLocation,{locator:N,discardFromLookup:R});let V=null;return[D,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:R,get packageLocation(){return V||(V=Y.join(s,I.packageLocation))}}]}))])),f=new Map(t.fallbackExclusionList.map(([w,v])=>[w,new Set(v)])),h=new Map(t.fallbackPool),A=t.dependencyTreeRoots,m=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:A,enableTopLevelFallback:m,fallbackExclusionList:f,pnpZipBackend:t.pnpZipBackend,fallbackPool:h,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:l}}Mt();Mt();var ad=Ae("module"),yE=Ae("url"),aJ=Ae("util");var Da=Ae("url");var ixe=st(Ae("assert"));var Zz=Array.isArray,tx=JSON.stringify,rx=Object.getOwnPropertyNames,mE=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Xz=(t,e)=>RegExp.prototype.exec.call(t,e),$z=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),Sg=(t,...e)=>String.prototype.endsWith.apply(t,e),eJ=(t,...e)=>String.prototype.includes.apply(t,e),tJ=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),nx=(t,...e)=>String.prototype.indexOf.apply(t,e),txe=(t,...e)=>String.prototype.replace.apply(t,e),bg=(t,...e)=>String.prototype.slice.apply(t,e),aA=(t,...e)=>String.prototype.startsWith.apply(t,e),rxe=Map,nxe=JSON.parse;function ix(t,e,r){return class extends r{constructor(...s){super(e(...s)),this.code=t,this.name=`${r.name} [${t}]`}}}var sxe=ix("ERR_PACKAGE_IMPORT_NOT_DEFINED",(t,e,r)=>`Package import specifier "${t}" is not defined${e?` in package ${e}package.json`:""} imported from ${r}`,TypeError),rJ=ix("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),oxe=ix("ERR_INVALID_PACKAGE_TARGET",(t,e,r,s=!1,a=void 0)=>{let n=typeof r=="string"&&!s&&r.length&&!aA(r,"./");return e==="."?((0,ixe.default)(s===!1),`Invalid "exports" main target ${tx(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${s?"imports":"exports"}" target ${tx(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),sx=ix("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error),axe=ix("ERR_PACKAGE_PATH_NOT_EXPORTED",(t,e,r=void 0)=>e==="."?`No "exports" main defined in ${t}package.json${r?` imported from ${r}`:""}`:`Package subpath '${e}' is not defined by "exports" in ${t}package.json${r?` imported from ${r}`:""}`,Error);var ZL=Ae("url");function cxe(t,e){let r=Object.create(null);for(let s=0;s<e.length;s++){let a=e[s];mE(t,a)&&(r[a]=t[a])}return r}var JL=new rxe;function RBt(t,e,r,s){let a=JL.get(t);if(a!==void 0)return a;let n=s(t);if(n===void 0){let D={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return JL.set(t,D),D}let l;try{l=nxe(n)}catch(D){throw new sx(t,(r?`"${e}" from `:"")+(0,ZL.fileURLToPath)(r||e),D.message)}let{imports:f,main:h,name:A,type:m}=cxe(l,["imports","main","name","type"]),w=mE(l,"exports")?l.exports:void 0;(typeof f!="object"||f===null)&&(f=void 0),typeof h!="string"&&(h=void 0),typeof A!="string"&&(A=void 0),m!=="module"&&m!=="commonjs"&&(m="none");let v={pjsonPath:t,exists:!0,main:h,name:A,type:m,exports:w,imports:f};return JL.set(t,v),v}function lxe(t,e){let r=new URL("./package.json",t);for(;;){let n=r.pathname;if(Sg(n,"node_modules/package.json"))break;let l=RBt((0,ZL.fileURLToPath)(r),t,void 0,e);if(l.exists)return l;let f=r;if(r=new URL("../package.json",r),r.pathname===f.pathname)break}let s=(0,ZL.fileURLToPath)(r),a={pjsonPath:s,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return JL.set(s,a),a}function TBt(t,e,r){throw new sxe(t,e&&(0,Da.fileURLToPath)(new URL(".",e)),(0,Da.fileURLToPath)(r))}function QBt(t,e,r,s){let a=`request is not a valid subpath for the "${r?"imports":"exports"}" resolution of ${(0,Da.fileURLToPath)(e)}`;throw new rJ(t,a,s&&(0,Da.fileURLToPath)(s))}function ox(t,e,r,s,a){throw typeof e=="object"&&e!==null?e=tx(e,null,""):e=`${e}`,new oxe((0,Da.fileURLToPath)(new URL(".",r)),t,e,s,a&&(0,Da.fileURLToPath)(a))}var uxe=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f Line truncated
`),r;l=t[++n]}else if(l===" "&&!s){a=!0;continue}else if(l==='"'){s=!s;continue}a?(r.push(l),a=!1):r[r.length-1]+=l}return s&&e.push(`invalid value for NODE_OPTIONS (unterminated string)
`),r}Mt();var[vo,Xc,jBt]=process.versions.node.split(".").map(t=>parseInt(t,10)),wxe=vo>19||vo===19&&Xc>=2||vo===18&&Xc>=13,Dgr=vo===20&&Xc<6||vo===19&&Xc>=3,Pgr=vo>19||vo===19&&Xc>=6,xgr=vo>=21||vo===20&&Xc>=10||vo===18&&Xc>=19,kgr=vo>=21||vo===20&&Xc>=10||vo===18&&Xc>=20,Rgr=vo>=22,Tgr=vo===26&&Xc<1||vo===25&&Xc>=7||vo===24&&Xc===15||vo===22&&(Xc>22||Xc===22&&jBt>=3);function oJ(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send){let e=t.map(r=>me.fromPortablePath(Mo.resolveVirtual(r)));if(wxe)process.send({"watch:require":e});else for(let r of e)process.send({"watch:require":r})}}function cJ(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,f=/^\.{0,2}\//,h={name:null,reference:null},A=[],m=new Set;if(t.enableTopLevelFallback===!0&&A.push(h),e.compatibilityMode!==!1)for(let Ne of["react-scripts","gatsby"]){let Fe=t.packageRegistry.get(Ne);if(Fe)for(let Pe of Fe.keys()){if(Pe===null)throw new Error("Assertion failed: This reference shouldn't be null");A.push({name:Ne,reference:Pe})}}let{ignorePattern:w,packageRegistry:v,packageLocatorsByLocations:D}=t;function I(Ne,Fe){return{fn:Ne,args:Fe,error:null,result:null}}function R(Ne){let Fe=process.stderr?.hasColors?.()??process.stdout.isTTY,Pe=(ft,Me)=>`\x1B[${ft}m${Me}\x1B[0m`,He=Ne.error;console.error(He?Pe("31;1",`\u2716 ${Ne.error?.message.replace(/\n.*/s,"")}`):Pe("33;1","\u203C Resolution")),Ne.args.length>0&&console.error();for(let ft of Ne.args)console.error(` ${Pe("37;1","In \u2190")} ${(0,aJ.inspect)(ft,{colors:Fe,compact:!0})}`);Ne.result&&(console.error(),console.error(` ${Pe("37;1","Out \u2192")} ${(0,aJ.inspect)(Ne.result,{colors:Fe,compact:!0})}`));let Qe=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Qe.length>0){console.error();for(let ft of Qe)console.error(` ${Pe("38;5;244",ft)}`)}console.error()}function N(Ne,Fe){if(e.allowDebug===!1)return Fe;if(Number.isFinite(s)){if(s>=2)return(...Pe)=>{let He=I(Ne,Pe);try{return He.result=Fe(...Pe)}catch(Qe){throw He.error=Qe}finally{R(He)}};if(s>=1)return(...Pe)=>{try{return Fe(...Pe)}catch(He){let Qe=I(Ne,Pe);throw Qe.error=He,R(Qe),He}}}return Fe}function U(Ne){let Fe=d(Ne);if(!Fe)throw Gs("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return Fe}function V(Ne){if(Ne.name===null)return!0;for(let Fe of t.dependencyTreeRoots)if(Fe.name===Ne.name&&Fe.reference===Ne.reference)return!0;return!1}let ee=new Set(["node","require",...Ixe("--conditions")]);function te(Ne,Fe=ee,Pe){let He=Ee(Y.join(Ne,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(He===null)throw Gs("INTERNAL",`The locator that owns the "${Ne}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Qe}=U(He),ft=Y.join(Qe,Or.manifest);if(!e.fakeFs.existsSync(ft))return null;let Me=JSON.parse(e.fakeFs.readFileSync(ft,"utf8"));if(Me.exports==null)return null;let x=Y.contains(Qe,Ne);if(x===null)throw Gs("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");x!=="."&&!f.test(x)&&(x=`./${x}`);try{let C=pxe({packageJSONUrl:(0,yE.pathToFileURL)(me.fromPortablePath(ft)),packageSubpath:x,exports:Me.exports,base:Pe?(0,yE.pathToFileURL)(me.fromPortablePath(Pe)):null,conditions:Fe});return me.toPortablePath((0,yE.fileURLToPath)(C))}catch(C){throw Gs("EXPORTS_RESOLUTION_FAILED",C.message,{unqualifiedPath:Xf(Ne),locator:He,pkgJson:Me,subpath:Xf(x),conditions:Fe},C.code)}}function ie(Ne,Fe,{extensions:Pe}){let He;try{Fe.push(Ne),He=e.fakeFs.statSync(Ne)}catch{}if(He&&!He.isDirectory())return e.fakeFs.realpathSync(Ne);if(He&&He.isDirectory()){let Qe;try{Qe=JSON.parse(e.fakeFs.readFileSync(Y.join(Ne,Or.manifest),"utf8"))}catch{}let ft;if(Qe&&Qe.main&&(ft=Y.resolve(Ne,Qe.main)),ft&&ft!==Ne){let Me=ie(ft,Fe,{extensions:Pe});if(Me!==null)return Me}}for(let Qe=0,ft=Pe.length;Qe<ft;Qe++){let Me=`${Ne}${Pe[Qe]}`;if(Fe.push(Me),e.fakeFs.existsSync(Me))return Me}if(He&&He.isDirectory())for(let Qe=0,ft=Pe.length;Qe<ft;Qe++){let Me=Y.format({dir:Ne,name:"index",ext:Pe[Qe]});if(Fe.push(Me),e.fakeFs.existsSync(Me))return Me}return null}function ae(Ne){let Fe=new ad.Module(Ne,null);return Fe.filename=Ne,Fe.paths=ad.Module._nodeModulePaths(Ne),Fe}function ge(Ne,Fe){return Fe.endsWith("/")&&(Fe=Y.join(Fe,"internal.js")),ad.Module._resolveFilename(me.fromPortablePath(Ne),ae(me.fromPortablePath(Fe)),!1,{plugnplay:!1})}function de(Ne){if(w===null)return!1;let Fe=Y.contains(t.basePath,Ne);return Fe===null?!1:!!w.test(Fe.replace(/\/$/,""))}let xe={std:3,resolveVirtual:1,getAllLocators:1},we=h;function d({name:Ne,reference:Fe}){let Pe=v.get(Ne);if(!Pe)return null;let He=Pe.get(Fe);return He||null}function be({name:Ne,reference:Fe}){let Pe=[];for(let[He,Qe]of v)if(He!==null)for(let[ft,Me]of Qe)ft===nulLine truncated
Require request: "${He}"
Required by: ${Qe}
`,{request:He,issuer:Qe});return me.toPortablePath(x)}let ft,Me=Ne.match(a);if(Me){if(!Fe)throw Gs("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:He,issuer:Qe});let[,x,C]=Me,P=Ee(Fe);if(!P){let Le=ge(Ne,Fe);if(Le===!1)throw Gs("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: "${He}"
Required by: ${Qe}
`,{request:He,issuer:Qe});return me.toPortablePath(Le)}let F=U(P).packageDependencies.get(x),Z=null;if(F==null&&P.name!==null){let Le=t.fallbackExclusionList.get(P.name);if(!Le||!Le.has(P.reference)){for(let St=0,er=A.length;St<er;++St){let Ht=U(A[St]).packageDependencies.get(x);if(Ht!=null){r?Z=Ht:F=Ht;break}}if(t.enableTopLevelFallback&&F==null&&Z===null){let St=t.fallbackPool.get(x);St!=null&&(Z=St)}}}let X=null;if(F===null)if(V(P))X=Gs("MISSING_PEER_DEPENDENCY",`Your application tried to access ${x} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.
Required package: ${x}${x!==He?` (via "${He}")`:""}
Required by: ${Qe}
`,{request:He,issuer:Qe,dependencyName:x});else{let Le=Ce(x,P);Le.every(pt=>V(pt))?X=Gs("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.
Required package: ${x}${x!==He?` (via "${He}")`:""}
Required by: ${P.name}@${P.reference} (via ${Qe})
${Le.map(pt=>`Ancestor breaking the chain: ${pt.name}@${pt.reference}
`).join("")}
`,{request:He,issuer:Qe,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Le}):X=Gs("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.
Required package: ${x}${x!==He?` (via "${He}")`:""}
Required by: ${P.name}@${P.reference} (via ${Qe})
${Le.map(pt=>`Ancestor breaking the chain: ${pt.name}@${pt.reference}
`).join("")}
`,{request:He,issuer:Qe,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Le})}else F===void 0&&(!Pe&&(0,ad.isBuiltin)(Ne)?V(P)?X=Gs("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}. 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 ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.
Required package: ${x}${x!==He?` (via "${He}")`:""}
Required by: ${Qe}
`,{request:He,issuer:Qe,dependencyName:x}):X=Gs("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}. 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 ${x} isn't otherwise declared in ${P.name}'s dependencies, this makes the require call ambiguous and unsound.
Required package: ${x}${x!==He?` (via "${He}")`:""}
Required by: ${Qe}
`,{request:He,issuer:Qe,issuerLocator:Object.assign({},P),dependencyName:x}):V(P)?X=Gs("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.
Required package: ${x}${x!==He?` (via "${He}")`:""}
Required by: ${Qe}
`,{request:He,issuer:Qe,dependencyName:x}):X=Gs("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
Required package: ${x}${x!==He?` (via "${He}")`:""}
Required by: ${P.name}@${P.reference} (via ${Qe})
`,{request:He,issuer:Qe,issuerLocator:Object.assign({},P),dependencyName:x}));if(F==null){if(Z===null||X===null)throw X||new Error("Assertion failed: Expected an error to have been set");F=Z;let Le=X.message.replace(/\n.*/g,"");X.message=Le,!m.has(Le)&&s!==0&&(m.add(Le),process.emitWarning(X))}let re=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},ce=U(re);if(!ce.packageLocation)throw Gs("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: ${re.name}@${re.reference}${re.name!==He?` (via "${He}")`:""}
Required by: ${P.name}@${P.reference} (via ${Qe})
`,{request:He,issuer:Qe,dependencyLocator:Object.assign({},re)});let ke=ce.packageLocation;C?ft=Y.join(ke,C):ft=ke}else if(Y.isAbsolute(Ne))ft=Y.normalize(Ne);else{if(!Fe)throw Gs("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:He,issuer:Qe});let x=Y.resolve(Fe);Fe.match(l)?ft=Y.normalize(Y.join(x,Ne)):ft=Y.normalize(Y.join(Y.dirname(x),Ne))}return Y.normalize(ft)}function De(Ne,Fe,Pe=ee,He){if(n.test(Ne))return Fe;let Qe=te(Fe,Pe,He);return Qe?Y.normalize(Qe):Fe}function Te(Ne,{extensions:Fe=Object.keys(ad.Module._extensions)}={}){let Pe=[],He=ie(Ne,Pe,{extensions:Fe});if(He)return oJ([He]),Y.normalize(He);{oJ(Pe);let Qe=Xf(Ne),ft=Ee(Ne);if(ft){let{packageLocation:Me}=U(ft),x=!0;try{e.fakeFs.accessSync(Me)}catch(C){if(C?.code==="ENOENT")x=!1;else{let P=(C?.message??C??"empty exception thrown").replace(/^[A-Z]/,E=>E.toLowerCase());throw Gs("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${P}).
Missing package: ${ft.name}@${ft.reference}
Expected package location: ${Xf(Me)}
`,{unqualifiedPath:Qe,extensions:Fe})}}if(!x){let C=Me.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 Gs("QUALIFIED_PATH_RESOLUTION_FAILED",`${C}
Missing package: ${ft.name}@${ft.reference}
Expected package location: ${Xf(Me)}
`,{unqualifiedPath:Qe,extensions:Fe})}}throw Gs("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.
Source path: ${Qe}
${Pe.map(Me=>`Not found: ${Xf(Me)}
`).join("")}`,{unqualifiedPath:Qe,extensions:Fe})}}function ot(Ne,Fe,Pe){if(!Fe)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let He=dxe({name:Ne,base:(0,yE.pathToFileURL)(me.fromPortablePath(Fe)),conditions:Pe.conditions??ee,readFileSyncFn:he});if(He instanceof URL)return Te(me.toPortablePath((0,yE.fileURLToPath)(He)),{extensions:Pe.extensions});if(He.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return j(He,Fe,Pe)}function j(Ne,Fe,Pe={}){try{if(Ne.startsWith("#"))return ot(Ne,Fe,Pe);let{considerBuiltins:He,extensions:Qe,conditions:ft}=Pe,Me=$(Ne,Fe,{considerBuiltins:He});if(Ne==="pnpapi")return Me;if(Me===null)return null;let x=()=>Fe!==null?de(Fe):!1,C=(!He||!(0,ad.isBuiltin)(Ne))&&!x()?De(Ne,Me,ft,Fe):Me;return Te(C,{extensions:Qe})}catch(He){throw Object.hasOwn(He,"pnpCode")&&Object.assign(He.data,{request:Xf(Ne),issuer:Fe&&Xf(Fe)}),He}}function rt(Ne){let Fe=Y.normalize(Ne),Pe=Mo.resolveVirtual(Fe);return Pe!==Fe?Pe:null}return{VERSIONS:xe,topLevel:we,getLocator:(Ne,Fe)=>Array.isArray(Fe)?{name:Fe[0],reference:Fe[1]}:{name:Ne,reference:Fe},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Ne=[];for(let[Fe,Pe]of v)for(let He of Pe.keys())Fe!==null&&He!==null&&Ne.push({name:Fe,reference:He});return Ne},getPackageInformation:Ne=>{let Fe=d(Ne);if(Fe===null)return null;let Pe=me.fromPortablePath(Fe.packageLocation);return{...Fe,packageLocation:Pe}},findPackageLocator:Ne=>Ee(me.toPortablePath(Ne)),resolveToUnqualified:N("resolveToUnqualified",(Ne,Fe,Pe)=>{let He=Fe!==null?me.toPortablePath(Fe):null,Qe=$(me.toPortablePath(Ne),He,Pe);return Qe===null?null:me.fromPortablePath(Qe)}),resolveUnqualified:N("resolveUnqualified",(Ne,Fe)=>me.fromPortablePath(Te(me.toPortablePath(Ne),Fe))),resolveRequest:N("resolveRequest",(Ne,Fe,Pe)=>{let He=Fe!==null?me.toPortablePath(Fe):null,Qe=j(me.toPortablePath(Ne),He,Pe);return Qe===null?null:me.fromPortablePath(Qe)}),resolveVirtual:N("resolveVirtual",Ne=>{let Fe=rt(me.toPortablePath(Ne));return Fe!==null?me.fromPortablePath(Fe):null})}}Mt();var Cxe=(t,e,r)=>{let s=ex(t),a=Jz(s,{basePath:e}),n=me.join(e,Or.pnpCjs);return cJ(a,{fakeFs:r,pnpapiResolution:n})};var uJ=st(vxe());sr();var cA={};lr(cA,{checkManifestCompatibility:()=>Sxe,extractBuildRequest:()=>XL,getExtractHint:()=>fJ,hasBindingGyp:()=>hJ});We();Mt();function Sxe(t){return G.isPackageCompatible(t,us.getArchitectureSet())}function XL(t,e,r,{configuration:s}){let a=[];for(let n of["preinstall","install","postinstall"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&a.push({type:1,script:"node-gyp rebuild"}),a.length===0?null:t.linkType!=="HARD"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${G.prettyLocator(s,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${G.prettyLocator(s,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${G.prettyLocator(s,t)} lists build scripts, but all build scripts have been disabled.`)}:Sxe(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${G.prettyLocator(s,t)} The ${us.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var qBt=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function fJ(t){return t.packageFs.getExtractHint({relevantExtensions:qBt})}function hJ(t){let e=Y.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var lx={};lr(lx,{getUnpluggedPath:()=>cx});We();Mt();function cx(t,{configuration:e}){return Y.resolve(e.get("pnpUnpluggedFolder"),G.slugifyLocator(t))}var VBt=new Set([G.makeIdent(null,"open").identHash,G.makeIdent(null,"opn").identHash]),Dg=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let s=Pg(r.project).cjs;if(!fe.existsSync(s))throw new ht(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=Ye.getFactoryWithDefault(this.pnpCache,s,()=>Ye.dynamicRequire(s,{cachingStrategy:Ye.CachingStrategy.FsTime})),n={name:G.stringifyIdent(e),reference:e.reference},l=a.getPackageInformation(n);if(!l)throw new ht(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return me.toPortablePath(l.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return nullLine truncated
`,n+=`# cause your node_modules installation to become invalidated.
`,n+=`
`,n+=`__metadata:
`,n+=` version: ${_xe}
`,n+=` nmMode: ${s.value}
`;let l=Array.from(e.keys()).sort(),f=G.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let m of l){let w=e.get(m);n+=`
`,n+=`${JSON.stringify(m)}:
`,n+=` locations:
`;for(let v of w.locations){let D=Y.contains(t.cwd,v);if(D===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` - ${JSON.stringify(D)}
`}if(w.aliases.length>0){n+=` aliases:
`;for(let v of w.aliases)n+=` - ${JSON.stringify(v)}
`}if(m===f&&r.size>0){n+=` bin:
`;for(let[v,D]of r){let I=Y.contains(t.cwd,v);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` ${JSON.stringify(I)}:
`;for(let[R,N]of D){let U=Y.relative(Y.join(v,Vi),N);n+=` ${JSON.stringify(R)}: ${JSON.stringify(U)}
`}}}}let h=t.cwd,A=Y.join(h,Vi,BJ);try{a&&await fe.removePromise(A),await fe.changeFilePromise(A,n,{automaticNewlines:!0})}finally{dvt(t)}}async function yvt(t){let e=t.cwd,r=Y.join(e,Vi,BJ);try{let s=await fe.statPromise(r);return`${s.mtimeMs}:${s.size}`}catch{return null}}async function Mxe(t,{unrollAliases:e=!1}={}){let r=t.cwd,s=Y.join(r,Vi,BJ),a;try{a=await fe.statPromise(s)}catch{}if(!a)return null;let n=Fs(await fe.readFilePromise(s,"utf8"));if(n.__metadata.version>_xe)return null;let l=n.__metadata.nmMode||"classic",f=new Map,h=new Map;delete n.__metadata;for(let[A,m]of Object.entries(n)){let w=m.locations.map(D=>Y.join(r,D)),v=m.bin;if(v)for(let[D,I]of Object.entries(v)){let R=Y.join(r,me.toPortablePath(D)),N=Ye.getMapWithDefault(h,R);for(let[U,V]of Object.entries(I))N.set(U,me.toPortablePath([R,Vi,V].join(Y.sep)))}if(f.set(A,{target:Rt.dot,linkType:"HARD",locations:w,aliases:m.aliases||[]}),e&&m.aliases)for(let D of m.aliases){let{scope:I,name:R}=G.parseLocator(A),N=G.makeLocator(G.makeIdent(I,R),D),U=G.stringifyLocator(N);f.set(U,{target:Rt.dot,linkType:"HARD",locations:w,aliases:[]})}}return{locatorMap:f,binSymlinks:h,locationTree:Uxe(f,{skipPrefix:t.cwd}),nmMode:l,mtimeMs:a.mtimeMs}}var a2=async(t,e)=>{if(t.split(Y.sep).indexOf(Vi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{let r;if(!e.innerLoop&&(r=await fe.lstatPromise(t),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!e.isWorkspaceDir)){await fe.unlinkPromise(t);return}let s=await fe.readdirPromise(t,{withFileTypes:!0});for(let n of s){let l=Y.join(t,n.name);n.isDirectory()?(n.name!==Vi||e&&e.innerLoop)&&await a2(l,{innerLoop:!0,contentsOnly:!1}):await fe.unlinkPromise(l)}let a=!e.innerLoop&&e.isWorkspaceDir&&r?.isSymbolicLink();!e.contentsOnly&&!a&&await fe.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Fxe=4,r_=(t,{skipPrefix:e})=>{let r=Y.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let s=r.split(Y.sep).filter(h=>h!==""),a=s.indexOf(Vi),n=s.slice(0,a).join(Y.sep),l=Y.join(e,n),f=s.slice(a);return{locationRoot:l,segments:f}},Uxe=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let s=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&Y.contains(e,n.target)!==null){let f=Ye.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let l of n.locations){let{locationRoot:f,segments:h}=r_(l,{skipPrefix:e}),A=Ye.getFactoryWithDefault(r,f,s);for(let m=0;m<h.length;++m){let w=h[m];if(w!=="."){let v=Ye.getFactoryWithDefault(A.children,w,s);A.children.set(w,v),A=v}m===h.length-1&&(A.locator=a,A.linkType=n.linkType)}}}return r},SJ=async(t,e,r)=>{if(process.platform==="win32"&&r==="junctions"){let s;try{s=await fe.lstatPromise(t)}catch{}if(!s||s.isDirectory()){await fe.symlinkPromise(t,e,"junction");return}}await fe.symlinkPromise(Y.relative(Y.dirname(e),t),e)};async function Hxe(t,e,r){let s=Y.join(t,`${CJ.default.randomBytes(16).toString("hex")}.tmp`);try{await fe.writeFilePromise(s,r);try{await fe.linkPromise(s,e)}catch{}}finally{await fe.unlinkPromise(s)}}async function Evt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind==="file"){if(n.value==="hardlinks-global"&&s&&r.digest){let f=Y.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),h;try{let A=await fe.statPromise(f);if(A&&(!r.mtimeMs||A.mtimeMs>r.mtimeMs||A.mtimeMs<r.mtimeMs-pvt))if(await si.checksumFile(f,{baseFs:fe,algorithm:"sha1"})!==r.digest){let w=Y.join(s,`${CJ.default.randomBytes(16).toString("hex")}.tmp`);await fe.renamePromise(f,w);let v=await a.readFilePromise(t);await fe.writeFilePromise(w,v);try{await fe.linkPromise(w,f),r.mtimeMs=new Date().getTime(),await fe.unlinkPromise(w)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(A.mtimeMs));await fe.linkPromise(f,e),h=!0}catch{h=!1}if(!h){let A=await a.readFilePromise(t);await Hxe(s,f,A),r.mtimeMs=new Date().getTime();try{await fe.linkPromise(f,e)}catch(m){m&&m.code&&m.code=="EXDEV"&&(n.value="hardlinks-local",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let l=r.mode&511;l!==420&&await fe.chmodPromise(e,l)}}var Ivt=async(t,e,{baseFs:r,globalHardlinksStore:s,nmMode:a,windowsLinkType:n,packageChecksum:l})=>{await fe.mkdirPromise(t,{recursive:!0});let f=async(m=Rt.dot)=>{let w=Y.join(e,m),v=await r.readdirPromise(w,{withFileTypes:!0}),D=new Map;for(let I of v){let R=Y.join(m,I.name),N,U=Y.join(w,I.name);if(I.isFile()){if(N={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let V=await si.checksumFile(U,{baseFs:r,algorithm:"sha1"});N.digest=V}}else if(I.isDirectory())N={kind:"directory"};else if(I.isSymbolicLink())N={kind:"symlink",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,"0")})`);if(D. Line truncated
`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";if(!process.stdin.isTTY)throw new Zt(33,"The registry requires additional authentication, but Yarn is not running in an interactive terminal");let{otp:s}=await(0,kJ.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`
`),s}function s_(t){if(t.originalError?.name!=="HTTPError")return!1;try{return(t.originalError?.response.headers["www-authenticate"].split(/,\s*/).map(r=>r.toLowerCase())).includes("otp")}catch{return!1}}function u2(t){return{"npm-otp":t}}async function Yvt(t,{configuration:e,ident:r}){let s=null;if(process.env.GITLAB_CI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.CIRCLECI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(t).host.replace("registry.yarnpkg.com","registry.npmjs.org").replace("yarn.npmjs.org","registry.npmjs.org")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append("audience",a),s=(await Sn.get(n.href,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await Sn.post(`${t}/-/npm/v1/oidc/token/exchange/package${Ax(r)}`,null,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var dx=class{supports(e,r){if(!e.reference.startsWith(Ci))return!1;let{selector:s,params:a}=G.parseRange(e.reference);return!(!Zxe.default.valid(s)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,l]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:l}}async fetchFromNetwork(e,r){let{params:s}=G.parseRange(e.reference);if(s===null||typeof s.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await wE(s.__archiveUrl,{customErrorMessage:IE,configuration:r.project.configuration,ident:e});return await Hs.convertToZip(a,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};We();var gx=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Ci)||!G.tryParseDescriptor(e.range.slice(Ci.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){let s=r.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(Ci.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(Ci.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(Ci.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(e,r){throw new Error("Unreachable")}};We();We();var Xxe=st(Di());var cd=class t{supports(e,r){if(!e.reference.startsWith(Ci))return!1;let s=new URL(e.reference);return!(!Xxe.default.valid(s.pathname)||s.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,l]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:l}}async fetchFromNetwork(e,r){let s;try{s=await wE(t.getLocatorUrl(e),{customErrorMessage:IE,configuration:r.project.configuration,ident:e})}catch{s=await wE(t.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:IE,configuration:r.project.configuration,ident:e})}return await Hs.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:s}){let a=c2(e.scope,{configuration:s}),n=t.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=zr.clean(e.reference.slice(Ci.length));if(r===null)throw new Zt(10,"The npm semver resolver got selected, but the version isn't semver");let s=encodeURIComponent(e.name),a=encodeURIComponent(r);return`${Ax(e)}/-/${s}-${a}.tgz`}};We();We();We();var a_=st(Di());var o_=G.makeIdent(null,"node-gyp"),Kvt=/\b(node-gyp|prebuild-install)\b/;function $xe(t,e){let r=a=>Ye.mapAndFilter(e,n=>{try{let l=new zr.SemVer(n);if(a.test(l))return l}catch{}return Ye.mapAndFilter.skip}),sLine truncated
https://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:n5t,subject:t,predicateType:s5t,predicate:{buildType:`${l5t}/${u5t}`,builder:{id:`${Ot.CI_PROJECT_URL}/-/runners/${Ot.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Ot.CI_PROJECT_URL}`,digest:{sha1:Ot.CI_COMMIT_SHA},entryPoint:Ot.CI_JOB_NAME},parameters:{CI:Ot.CI,CI_API_GRAPHQL_URL:Ot.CI_API_GRAPHQL_URL,CI_API_V4_URL:Ot.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Ot.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Ot.CI_BUILD_ID,CI_BUILD_NAME:Ot.CI_BUILD_NAME,CI_BUILD_REF:Ot.CI_BUILD_REF,CI_BUILD_REF_NAME:Ot.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Ot.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Ot.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Ot.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Ot.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Ot.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Ot.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Ot.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Ot.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Ot.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Ot.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Ot.CI_COMMIT_TITLE,CI_CONFIG_PATH:Ot.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Ot.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Ot.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Ot.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Ot.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Ot.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Ot.CI_JOB_ID,CI_JOB_NAME:Ot.CI_JOB_NAME,CI_JOB_NAME_SLUG:Ot.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Ot.CI_JOB_STAGE,CI_JOB_STARTED_AT:Ot.CI_JOB_STARTED_AT,CI_JOB_URL:Ot.CI_JOB_URL,CI_NODE_TOTAL:Ot.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Ot.CI_PAGES_DOMAIN,CI_PAGES_URL:Ot.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Ot.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Ot.CI_PIPELINE_ID,CI_PIPELINE_IID:Ot.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Ot.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Ot.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Ot.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Ot.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Ot.CI_PROJECT_ID,CI_PROJECT_NAME:Ot.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Ot.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Ot.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Ot.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Ot.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Ot.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Ot.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Ot.CI_PROJECT_TITLE,CI_PROJECT_URL:Ot.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Ot.CI_PROJECT_VISIBILITY,CI_REGISTRY:Ot.CI_REGISTRY,CI_REGISTRY_IMAGE:Ot.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Ot.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Ot.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Ot.CI_RUNNER_ID,CI_RUNNER_TAGS:Ot.CI_RUNNER_TAGS,CI_SERVER_HOST:Ot.CI_SERVER_HOST,CI_SERVER_NAME:Ot.CI_SERVER_NAME,CI_SERVER_PORT:Ot.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Ot.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Ot.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Ot.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Ot.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Ot.CI_SERVER_URL,CI_SERVER_VERSION:Ot.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Ot.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Ot.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Ot.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Ot.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Ot.GITLAB_CI,GITLAB_FEATURES:Ot.GITLAB_FEATURES,GITLAB_USER_ID:Ot.GITLAB_USER_ID,GITLAB_USER_LOGIN:Ot.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Ot.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Ot.CI_RUNNER_DESCRIPTION,architecture:Ot.CI_RUNNER_EXECUTABLE_ARCH,server:Ot.CI_SERVER_URL,project:Ot.CI_PROJECT_PATH,job:{id:Ot.CI_JOB_ID},pipeline:{id:Ot.CI_PIPELINE_ID,ref:Ot.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Ot.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Ot.CI_PROJECT_URL}`,digest:{sha1:Ot.CI_COMMIT_SHA}}]}}}else throw new Zt(91,"Provenance generation is only supported in GitHub Actions and GitLab CI");return HUe.attest(Buffer.from(JSON.stringify(r)),r5t,e)};async function f5t(t,e,{access:r,tag:s,registry:a,gitHead:n,provenance:l}){let f=t.manifest.name,h=t.manifest.version,A=G.stringifyIdent(f),m=GUe.default.fromData(e,{algorithms:["sha1","sha512"]}),w=r??qUe(t,f),v=await VUe(t),D=await fA.genPackageManifest(t),I=`${A}-${h}.tgz`,R=new URL(`${ku(a)}/${A}/-/${I}`),N={[I]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}};if(l){let U={name:`pkg:npm/${A.replace(/^@/,"%40")}@${h}`,digest:{sha512:m.sha512[0].hexDigest()}},V=await jUe([U]),ee=JSON.stringify(V);N[`${A}-${h}.sigstore`]={content_type:V.mediaType,data:ee,length:ee.length}}return{_id:A,_attachments:N,name:A,access:w,"dist-tags":{[s]:h},versions:{[h]:{...D,_id:`${A}@${h}`,name:A,version:h,gitHead:n,dist:{shasum:m.sha1[0].hexDigest(),integrity:m.sha512[0].toString(),tarball:R.toString()}}},readme:v}}async function h5t(t){try{let{stdout:e}=await un.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return} Line truncated
`;try{a=await fe.readFilePromise(e,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var Aie={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}},WUe={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"}},YUe={npmMinimalAgeGate:{description:"Minimum age of a package version according to the publish date on the npm registry to be considered for installation",type:"DURATION",unit:"m",default:"1d"}},A5t={npmPreapprovedPackages:{description:"Array of package descriptors or package name glob patterns to exclude from the minimum release age check",type:"STRING",isArray:!0,default:[]}},p5t={configuration:{...Aie,...WUe,...YUe,...A5t,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...Aie,...WUe,...YUe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:ku,valueDefinition:{description:"",type:"SHAPE",properties:{...Aie}}}},fetchers:[dx,cd],resolvers:[gx,mx,yx]},d5t=p5t;var vie={};lr(vie,{NpmAuditCommand:()=>VB,NpmInfoCommand:()=>WB,NpmLoginCommand:()=>YB,NpmLogoutCommand:()=>zB,NpmPublishCommand:()=>JB,NpmStageApproveCommand:()=>ZB,NpmStageListCommand:()=>XB,NpmStageRejectCommand:()=>$B,NpmTagAddCommand:()=>tv,NpmTagListCommand:()=>ev,NpmTagRemoveCommand:()=>rv,NpmWhoamiCommand:()=>nv,default:()=>P5t,npmAuditTypes:()=>AR,npmAuditUtils:()=>D8});We();We();sr();var Eie=st(ma());ga();var AR={};lr(AR,{Environment:()=>fR,Severity:()=>hR});var fR=(s=>(s.All="all",s.Production="production",s.Development="development",s))(fR||{}),hR=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(hR||{});var D8={};lr(D8,{allSeverities:()=>qB,getPackages:()=>yie,getReportTree:()=>gie,getSeverityInclusions:()=>die,getTopLevelDependencies:()=>mie});We();var KUe=st(Di());var qB=["info","low","moderate","high","critical"];function die(t){if(typeof t>"u")return new Set(qB);let e=qB.indexOf(t),r=qB.slice(e);return new Set(r)}function gie(t){let e={},r={children:e};for(let[s,a]of Ye.sortMap(Object.entries(t),n=>n[0]))for(let n of Ye.sortMap(a,l=>`${l.id}`))e[`${s}/${n.id}`]={value:pe.tuple(pe.Type.IDENT,G.parseIdent(s)),children:{ID:typeof n.id<"u"&&{label:"ID",value:pe.tuple(pe.Type.ID,n.id)},Issue:{label:"Issue",value:pe.tuple(pe.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:pe.tuple(pe.Type.URL,n.url)},Severity:{label:"Severity",value:pe.tuple(pe.Type.NO_HINT,n.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:pe.tuple(pe.Type.RANGE,n.vulnerable_versions)},"Tree Versions":{label:"Tree Versions",children:[...n.versions].sort(KUe.default.compare).map(l=>({value:pe.tuple(pe.Type.REFERENCE,l)}))},Dependents:{label:"Dependents",children:Ye.sortMap(n.dependents,l=>G.stringifyLocator(l)).map(l=>({value:pe.tuple(pe.Type.LOCATOR,l)}))}}};return r}function mie(t,e,{all:r,environment:s}){let a=[],n=r?t.workspaces:[e],l=["all","production"].includes(s),f=["all","development"].includes(s);for(let h of n)for(let A of h.anchoredPackage.dependencies.values())(h.manifest.devDependencies.has(A.identHash)?!f:!l)||a.push({workspace:h,dependency:A});return a}function yie(t,e,{recursive:r}){let s=new Map,a=new Set,n=[],l=t.configuration.makeResolver(),f={project:t,resolver:l},h=(A,m)=>{let w=t.storedResolutions.get(m.descriptorHash);if(typeof w>"u")throw new Error("Assertion failed: The resolution should have been registered");if(!a.has(w))a.add(w);else return;let v=t.storedPackages.get(w);if(typeof v>"u")throw new Error("Assertion failed: The package should have been registered");let D=G.ensureDevirtualizedDescriptor(m);if(l.supportsDescriptor(D,f)){let R=l.getResolutionDependencies(D,f);if(Object.keys(R).length>0)for(let N of Object.values(R))h(A,N)}if(G.ensureDevirtualizedLocator(v).reference.startsWith("npm:")&&v.version!==null){let R=G.stringifyIdent(v),N=Ye.getMapWithDefault(s,R);Ye.getArrayWithDefault(N,v.version).push(A)}if(r)for(let R of v.dependencies.values())n.push([v,R])};for(let{workspace:A,dependency:m}of e)n.push([A.anchoredLocator,m]);for(;n.length>0;){let[A,m]=n.shift();h(A,m)}return s}var VB=class extends mt{constructor(){super(...arguments);this.all=ye.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=ye.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environm 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 ${qB.map(r=>`\`${r}\``).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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd);if(!a)throw new Dr(s.cwd,this.context.cwd);await s.restoreInstallState();let n=mie(s,a,{all:this.all,environment:this.environment}),l=yie(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),h=Object.create(null);for(let[N,U]of l)f.some(V=>Eie.default.isMatch(N,V))||(h[N]=[...U.keys()]);let A=_n.getAuditRegistry({configuration:r}),m,w=await tA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=Jr.post("/-/npm/v1/security/advisories/bulk",h,{authType:Jr.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:A}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(h),async([ee,te])=>{let ie=await Jr.getPackageMetadata(G.parseIdent(ee),{project:s});return Ye.mapAndFilter(te,ae=>{let{deprecated:ge}=ie.versions[ae];return ge?[ee,ae,ge]:Ye.mapAndFilter.skip})})),V=await N;for(let[ee,te,ie]of U.flat(1))Object.hasOwn(V,ee)&&V[ee].some(ae=>zr.satisfiesWithPrereleases(te,ae.vulnerable_versions))||(V[ee]??=[],V[ee].push({id:`${ee} (deprecation)`,title:(typeof ie=="string"?ie:"").trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:te}));m=V});if(w.hasErrors())return w.exitCode();let v=die(this.severity),D=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),I=Object.create(null);for(let[N,U]of Object.entries(m)){let V=U.filter(ee=>!Eie.default.isMatch(`${ee.id}`,D)&&v.has(ee.severity));V.length>0&&(I[N]=V.map(ee=>{let te=l.get(N);if(typeof te>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let ie=[...te.keys()].filter(ge=>zr.satisfiesWithPrereleases(ge,ee.vulnerable_versions)),ae=new Map;for(let ge of ie)for(let de of te.get(ge))ae.set(de.locatorHash,de);return{...ee,versions:ie,dependents:[...ae.values()]}}))}let R=Object.keys(I).length>0;return R?(bs.emitTree(gie(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Wt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,"No audit suggestions")}),R?1:0)}};We();We();Mt();sr();var Iie=st(Di()),wie=Ae("util"),WB=class extends mt{constructor(){super(...arguments);this.fields=ye.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=ye.Rest()}static{this.paths=[["npm","info"]]}static{this.usage=At.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 in Line truncated
`),this.context.stdout.write(`${(0,wie.inspect)(h,{depth:1/0,colors:!0,compact:!1})}
`);return f.exitCode()}};function Cie(t){if(Array.isArray(t)){let e=[];for(let r of t)r=Cie(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let s=Cie(t[r]);s&&(e[r]=s)}return e}else return t||null}We();We();sr();var Bie=st(gD()),YB=class extends mt{constructor(){super(...arguments);this.scope=ye.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=ye.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=ye.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"});this.webLogin=ye.Boolean("--web-login",{description:"Enable web login"})}static{this.paths=[["npm","login"]]}static{this.usage=At.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 execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=await P8({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Wt.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let l=await I5t({registry:s,configuration:r,report:n,webLogin:this.webLogin,stdin:this.context.stdin,stdout:this.context.stdout});return await C5t(s,l,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};async function P8({scope:t,publish:e,configuration:r,cwd:s}){return t&&e?_n.getScopeRegistry(t,{configuration:r,type:_n.RegistryType.PUBLISH_REGISTRY}):t?_n.getScopeRegistry(t,{configuration:r}):e?_n.getPublishRegistry((await TC(r,s)).manifest,{configuration:r}):_n.getDefaultRegistry({configuration:r})}async function g5t(t,e){let r;try{r=await Jr.post("/-/v1/login",null,{configuration:e,registry:t,authType:Jr.AuthType.NO_AUTH,jsonResponse:!0,headers:{"npm-auth-type":"web"}})}catch{return null}return r}async function m5t(t,e){let r=await Sn.request(t,null,{configuration:e,jsonResponse:!0});if(r.statusCode===202){let s=r.headers["retry-after"]??"1";return{type:"waiting",sleep:parseInt(s,10)}}return r.statusCode===200?{type:"success",token:r.body.token}:null}async function y5t({registry:t,configuration:e,report:r}){let s=await g5t(t,e);if(!s)return null;if(us.openUrl){r.reportInfo(0,"Starting the web login process..."),r.reportSeparator();let{openNow:a}=await(0,Bie.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open your browser now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});r.reportSeparator(),(!a||!await us.openUrl(s.loginUrl))&&(r.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice:"),r.reportWarning(0,pe.pretty(e,s.loginUrl,pe.Type.URL)),r.reportSeparator())}for(;;){let a=await m5t(s.doneUrl,e);if(a===null)return null;if(a.type==="waiting")await new Promise(n=>setTimeout(n,a.sleep*1e3));else return a.token}}var E5t=["https://registry.yarnpkg.com","https://registry.npmjs.org"];async function I5t(t){if(t.webLogin??E5t.includes(t.registry)){let e=await y5t(t);if(e!==null)return e}return await w5t(t)}async function w5t({registry:t,configuration:e,report:r,stdin:s,stdout:a}){let n=await B5t({configuration:e,registry:t,report:r,stdin:s,stdout:a}),l=`/-/user/org.couchdb.user:${encodeURIComponent(n.name)}`,f={_id:`org.couchdb.user:${n.name}`,name:n.name,password:n.password,type:"user",roles:[],date:new Date().toISOString()},h={attemptedAs:n.name,configuration:e,registry:t,jsonResponse:!0,authType:Jr.AuthType.NO_AUTH};try{return(await Jr.put(l,f,h)).token}catch(D){if(!(D.originalError?.name==="HTTPError"&&D.originalError?.response.statusCode===409))throw D}let A={...h,authType:Jr.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${n.name}:${n.password}`).toString("base64")}`}},m=await Jr.get(l,A);for(let[D,I]of Object.entries(m))(!f[D]||D==="roles")&&(f[D]=I);let w=`${l}/-rev/${f._rev}`;return(await Jr.put(w,f,A)).token}async function C5t(t,e,{alwaysAuth:r,scope:s}){let a=l=>f=>{let h=Ye.isIndexableObject(f)?f:{},A=h[l],m=Ye.isIndexableObject(A)?A:{};return{...h,[l]:{...m,...r!==void Line truncated
This command will list all staged package versions awaiting approval on the npm registry.
If a package name is provided, only staged versions of that package will be listed.
`,examples:[["List all staged packages","yarn npm stage list"],["List staged versions of a specific package","yarn npm stage list my-pkg"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=_n.getDefaultRegistry({configuration:r,type:_n.RegistryType.PUBLISH_REGISTRY}),a=await b5t(r,s,this.package??void 0);if(await Wt.start({configuration:r,stdout:this.context.stdout,json:this.json,includeFooter:!1,includePrefix:!1},async l=>{a.length>0?(l.reportInfo(0,`The following packages are awaiting approval. Use ${pe.pretty(r,"yarn npm stage approve <stageId>",pe.Type.CODE)} to approve them.`),l.reportSeparator()):this.package?l.reportInfo(0,`No staged versions found for package ${this.package}`):l.reportInfo(0,"No staged packages found")}),a.length===0)return;let n={children:a.map(l=>{let f=G.parseIdent(l.packageName);return{value:pe.tuple(pe.Type.RESOLUTION,{descriptor:G.makeDescriptor(f,l.tag),locator:G.makeLocator(f,l.version)}),children:{ID:{label:"ID",value:pe.tuple(pe.Type.CODE,l.id)},Staged:{label:"Staged on",value:pe.tuple(pe.Type.NO_HINT,l.createdAt)}}}})};bs.emitTree(n,{configuration:r,json:this.json,stdout:this.context.stdout,separators:1})}};async function b5t(t,e,r){let s=[],a=0,n=100;for(;;){let l={page:String(a),perPage:String(n)};r&&(l.package=r);let f=new URLSearchParams(l).toString(),h=await Jr.get(`/-/stage?${f}`,{configuration:t,registry:e,jsonResponse:!0,authType:Jr.AuthType.ALWAYS_AUTH});if(s.push(...h.items),s.length>=h.total||h.items.length<n)break;a++}return s}We();sr();ga();var $B=class extends mt{constructor(){super(...arguments);this.stageId=ye.String({validator:P0(_h(),[xp(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i)])});this.otp=ye.String("--otp",{description:"The OTP token to use with the command"})}static{this.paths=[["npm","stage","reject"]]}static{this.usage=At.Usage({category:"Npm-related commands",description:"reject a staged package version",details:"\n This command will reject a staged package version, permanently removing it from the registry staging area. This operation requires 2FA and will prompt for an OTP token if one is not provided via the `--otp` flag.\n ",examples:[["Reject a staged package","yarn npm stage reject 1de6f3db-2ed9-4d72-b3dd-8f0e2b474a2f"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s=_n.getDefaultRegistry({configuration:r,type:_n.RegistryType.PUBLISH_REGISTRY});return(await Wt.start({configuration:r,stdout:this.context.stdout},async n=>{let l=pe.pretty(r,this.stageId,pe.Type.CODE);n.reportInfo(0,`Rejecting staged package ${pe.pretty(r,l,pe.Type.CODE)}...`),n.reportSeparator(),await Jr.del(`/-/stage/${this.stageId}`,{configuration:r,registry:s,otp:this.otp,authType:Jr.AuthType.ALWAYS_AUTH}),n.reportInfo(0,`Staged package ${pe.pretty(r,l,pe.Type.CODE)} has been rejected.`)})).exitCode()}};We();sr();var JUe=st(Di());We();Mt();sr();var ev=class extends mt{constructor(){super(...arguments);this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ye.String({required:!1})}static{this.paths=[["npm","tag","list"]]}static{this.usage=At.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:`
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 execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=G.parseIdent(this.package);else{if(!a)throw new Dr(s.cwd,this.context.cwd);if(!a.manifest.name)throw new ht(`Missing 'name' field in ${me.fromPortablePath(Y.join(a.cwd,Or.manifest))}`);n=a.manifest.name}let l=await pR(n,r),h={children:Ye.sortMap(Object.entries(l),([A])=>A).map(([A,m])=>({value:pe.tuple(pe.Type.RESOLUTION,{descriptor:G.makeDescriptor(n,A),locator:G.makeLocator(n,m)})}))};return bs.emitTree(h,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function pR(t,e){let r=`/-/package${Jr.getIdentUrl(t)}/dist-tags`;return Jr.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Jr.customPackageError})}var tv=class extends mt{constructor(){super(...arguments);this.package=ye.String();this.tag=ye.String()}static{this.paths=[["npm","tag","add"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd);if(!a)throw new Dr(s.cwd,this.context.cwd);let n=G.parseDescriptor(this.package,!0),l=n.range;if(!JUe.default.valid(l))throw new ht(`The range ${pe.pretty(r,n.range,pe.Type.RANGE)} must be a valid semver version`);let f=_n.getPublishRegistry(a.manifest,{configuration:r}),h=pe.pretty(r,n,pe.Type.IDENT),A=pe.pretty(r,l,pe.Type.RANGE),m=pe.pretty(r,this.tag,pe.Type.CODE);return(await Wt.start({configuration:r,stdout:this.context.stdout},async v=>{let D=await pR(n,r);Object.hasOwn(D,this.tag)&&D[this.tag]===l&&v.reportWarning(0,`Tag ${m} is already set to version ${A}`);let I=`/-/package${Jr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Jr.put(I,l,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${m} added to version ${A} of package ${h}`)})).exitCode()}};We();sr();var rv=class extends mt{constructor(){super(...arguments);this.package=ye.String();this.tag=ye.String()}static{this.paths=[["npm","tag","remove"]]}static{this.usage=At.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"]]})}async execute(){if(this.tag==="latest")throw new ht("The 'latest' tag cannot be removed.");let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd);if(!a)throw new Dr(s.cwd,this.context.cwd);let n=G.parseIdent(this.package),l=_n.getPublishRegistry(a.manifest,{configuration:r}),f=pe.pretty(r,this.tag,pe.Type.CODE),h=pe.pretty(r,n,pe.Type.IDENT),A=await pR(n,r);if(!Object.hasOwn(A,this.tag))throw new ht(`${f} is not a tag of package ${h}`);return(await Wt.start({configuration:r,stdout:this.context.stdout},async w=>{let v=`/-/package${Jr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Jr.del(v,{configuration:r,registry:l,ident:n,jsonResponse:!0}),w.reportInfo(0,`Tag ${f} removed from package ${h}`)})).exitCode()}};We();We();sr();var nv=class extends mt{constructor(){super(...arguments);this.scope=ye.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=ye.Boolean("--publish",!1,{description:"Print username for the publish registry"})}static{this.paths=[["npm","whoami"]]}static{this.usage=At.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"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=_n.getScopeRegistry(this.scope,{configuration:r,type:_n.RegistryType.PUBLISH_REGISTRY}):this.scope?s=_n.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=_n.getPublishRegistry((await TC(r,this.context.cwd)).manifest,{configuration:r}):s=_n.getDefaultRegistry({configuration:r}),(await Wt.start({configuration:r,stdout:this.context.stdout},async n=>{let l;try{l=await Jr.get("/-/whoami",{configuration:r,registry:s,authType:Jr.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?G.makeIdent(this.scope,""):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw f}n.reportInfo(0,l.username)})).exitCode()}};var D5t={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmPublishProvenance:{description:"Whether to generate provenance for the published packages",type:"BOOLEAN",default:!1},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:[VB,WB,YB,zB,JB,ZB,XB,$B,tv,ev,rv,nv]},P5t=D5t;var Rie={};lr(Rie,{PatchCommand:()=>lv,PatchCommitCommand:()=>cv,PatchFetcher:()=>ER,PatchResolver:()=>IR,default:()=>Y5t,patchUtils:()=>dI});We();We();Mt();Kh();var dI={};lr(dI,{applyPatchFile:()=>k8,diffFolders:()=>xie,ensureUnpatchedDescriptor:()=>Sie,ensureUnpatchedLocator:()=>T8,extractPackageToDisk:()=>Pie,extractPatchFlags:()=>n8e,isParentRequired:()=>Die,isPatchDescriptor:()=>R8,isPatchLocator:()=>dm,loadPatchFiles:()=>yR,makeDescriptor:()=>Q8,makeLocator:()=>bie,makePatchHash:()=>kie,parseDescriptor:()=>gR,parseLocator:()=>mR,parsePatchFile:()=>dR,unpatchDescriptor:()=>G5t,unpatchLocator:()=>q5t});We();Mt();We();Mt();var x5t=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function iv(t){return Y.relative(Rt.root,Y.resolve(Rt.root,me.toPortablePath(t)))}function k5t(t){let e=t.trim().match(x5t);if(!e)throw new Error(`Bad header line: '${t}'`);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 R5t=420,T5t=493;var ZUe=()=>({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}),Q5t=t=>({header:k5t(t),parts:[]}),F5t={"@":"header","-":"deletion","+":"insertion"," ":"context","\\":"pragma",undefined:"context"};function NLine truncated
`)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":`
`):"";await e.mkdirpPromise(Y.dirname(a.path),{chmod:493,utimes:[Oi.SAFE_TIME,Oi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,Oi.SAFE_TIME,Oi.SAFE_TIME)}break;case"patch":await ov(e,a.path,async()=>{await U5t(a,{baseFs:e,dryRun:r})});break;case"mode change":{let l=(await e.statPromise(a.path)).mode;if(XUe(a.newMode)!==XUe(l))continue;await ov(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:Ye.assertNever(a);break}}function XUe(t){return(t&64)>0}function $Ue(t){return t.replace(/\s+$/,"")}function M5t(t,e){return $Ue(t)===$Ue(e)}async function U5t({hunks:t,path:e},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(e).mode,l=(await r.readFileSync(e,"utf8")).split(/\n/),f=[],h=0,A=0;for(let w of t){let v=Math.max(A,w.header.patched.start+h),D=Math.max(0,v-A),I=Math.max(0,l.length-v-w.header.original.length),R=Math.max(D,I),N=0,U=0,V=null;for(;N<=R;){if(N<=D&&(U=v-N,V=e8e(w,l,U),V!==null)){N=-N;break}if(N<=I&&(U=v+N,V=e8e(w,l,U),V!==null))break;N+=1}if(V===null)throw new sv(t.indexOf(w),w);f.push(V),h+=N,A=U+w.header.original.length}if(s)return;let m=0;for(let w of f)for(let v of w)switch(v.type){case"splice":{let D=v.index+m;l.splice(D,v.numToDelete,...v.linesToInsert),m+=v.linesToInsert.length-v.numToDelete}break;case"pop":l.pop();break;case"push":l.push(v.line);break;default:Ye.assertNever(v);break}await r.writeFilePromise(e,l.join(`
`),{mode:a})}function e8e(t,e,r){let s=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let l=e[r];if(l==null||!M5t(l,n))return null;r+=1}a.type==="deletion"&&(s.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:"push",line:""}))}break;case"insertion":s.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:"pop"});break;default:Ye.assertNever(a.type);break}return s}var j5t=/^builtin<([^>]+)>$/;function av(t,e){let{protocol:r,source:s,selector:a,params:n}=G.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(s===null)throw new Error("Patch locators must explicitly define their source");let l=a?a.split(/&/).map(m=>me.toPortablePath(m)):[],f=n&&typeof n.locator=="string"?G.parseLocator(n.locator):null,h=n&&typeof n.version=="string"?n.version:null,A=e(s);return{parentLocator:f,sourceItem:A,patchPaths:l,sourceVersion:h}}function R8(t){return t.range.startsWith("patch:")}function dm(t){return t.reference.startsWith("patch:")}function gR(t){let{sourceItem:e,...r}=av(t.range,G.parseDescriptor);return{...r,sourceDescriptor:e}}function mR(t){let{sourceItem:e,...r}=av(t.reference,G.parseLocator);return{...r,sourceLocator:e}}function G5t(t){let{sourceItem:e}=av(t.range,G.parseDescriptor);return e}function q5t(t){let{sourceItem:e}=av(t.reference,G.parseLocator);return e}function Sie(t){if(!R8(t))return t;let{sourceItem:e}=av(t.range,G.parseDescriptor);return e}function T8(t){if(!dm(t))return t;let{sourceItem:e}=av(t.reference,G.parseLocator);return e}function t8e({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:s,patchHash:a},n){let l=t!==null?{locator:G.stringifyLocator(t)}:{},f=typeof s<"u"?{version:s}:{},h=typeof a<"u"?{hash:a}:{};return G.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...f,...h,...l}})}function Q8(t,{parentLocator:e,sourceDescriptor:r,patchPaths:s}){return G.makeDescriptor(t,t8e({parentLocator:e,sourceItem:r,patchPaths:s},G.stringifyDescriptor))}function bie(t,{parentLocator:e,sourcePackage:r,patchPaths:s,patchHash:a}){return G.makeLocator(t,t8e({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},G.stringifyLocator))}function r8e({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let l=a.match(j5t);return l!==null?s(l[1]):a.startsWith("~/")?r(a.slice(2)):Y.isAbsolute(a)?t(a):e(a)}function n8e(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function Die(t){return r8e({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function yR(t,e,r){let s=t!==null?await r.fetcher.fetch(t,r):null,a=s&&s.localPath?{packageFs:new Jn(Rt.root),prefixPath:Y.relative(Rt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await Ye.releaseAfterUseAsync(async()=>await Promise.all(e.map(async l=>{let f=n8e(l),h=await r8e({onAbsolute:async A=>await fe.readFilePromise(A,"utf8"),onRelative:async A=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(Y.join(a.prefixPath,A),"utf8")},onProject:async A=>await fe.readFilePromise(Y.join(r.project.cwd,A),"utf8"),onBuiltin:async A=>await r.project.configuration.firstHook(m=>m.getBuiltinPatch,r.project,A)},l);return{...f,source:h}})));for(let l of n)typeof l.source=="string"&&(l.source=l.source.replace(/\r\n?/g,`
`));return n}async function Pie(t,{cache:e,project:r}){let s=r.storedPackages.get(t.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=T8(t),n=r.storedChecksums,l=new rs,f=await fe.mktempPromise(),h=Y.join(f,"source"),A=Y.join(f,"user"),m=Y.join(f,".yarn-patch.json"),w=r.configuration.makeFetcher(),v=[];try{let D,I;if(t.locatorHash===a.locatorHash){let R=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:l});v.push(()=>R.releaseFs?.()),D=R,I=R}else D=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:l}),v.push(()=>D.releaseFs?.()),I=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:l}),v.push(()=>I.releaseFs?.());await Promise.all([fe.copyPromise(h,D.prefixPath,{baseFs:D.packageFs}),fe.copyPromise(A,I.prefixPath,{baseFs:I.packageFs}),fe.writeJsonPromise(m,{locator:G.stringifyLocator(t),version:s.version})])}finally{for(let D of v)D()}return fe.detachTemp(f),A}async function xie(t,e){let r=me.fromPortablePath(t).replace(/\\/g,"/"),s=me.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await un.execvp("git",["-c","core.safecrlf=false","-c","core.quotePath=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,s],{cwd:me.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.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':
${n}`);let l=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${Ye.escapeRegExp(`/${l(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ye.escapeRegExp(`/${l(s)}/`)}`,"g"),"$1/").replace(new RegExp(Ye.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(Ye.escapeRegExp(`${s}/`),"g"),"")}function kie(t,e){let r=[];for(let{source:s}of t){if(s===null)continue;let a=dR(s);for(let n of a){let{semverExclusivity:l,...f}=n;l!==null&&e!==null&&!zr.satisfiesWithPrereleases(e,l)||r.push(JSON.stringify(f))}}return si.makeHash(`${3}`,...r).slice(0,6)}We();function i8e(t,{configuration:e,report:r}){for(let s of t.parts)for(let a of s.lines)switch(s.type){case"context":r.reportInfo(null,` ${pe.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${pe.pretty(e,a,pe.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${pe.pretty(e,a,pe.Type.ADDED)}`);break;default:Ye.assertNever(s.type)}}function V5t(t){return t instanceof Error&&"code"in t&&t.code==="ENOENT"}var ER=class{supports(e,r){return!!dm(e)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,l]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:l}}async patchPackage(e,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:l}=mR(e),f=await yR(s,l,r),h=await fe.mktempPromise(),A=Y.join(h,"current.zip"),m=await r.fetcher.fetch(a,r),w=G.getIdentVendorPath(e),v=new _s(A,{create:!0,level:r.project.configuration.get("compressionLevel")});await Ye.releaseAfterUseAsync(async()=>{await v.copyPromise(w,m.prefixPath,{baseFs:m.packageFs,stableSort:!0})},m.releaseFs),v.saveAndClose();for(let{source:D,optional:I}of f){if(D===null)continue;let R=new _s(A,{level:r.project.configuration.get("compressionLevel")}),N=new Jn(Y.resolve(Rt.root,w),{baseFs:R});try{await k8(dR(D),{baseFs:N,version:n})}catch(U){let V=U instanceof sv?U:null;if(!(V!==null||I&&V5t(U)))throw U;let te=r.project.configuration.get("enableInlineHunks"),ie=V!==null&&!te&&!I?" (set enableInlineHunks for details)":"",ae=`${G.prettyLocator(r.project.configuration,e)}: ${U.message}${ie}`,ge=de=>{V===null||!te||i8e(V.hunk,{configuration:r.project.configuration,report:de})};if(R.discardAndClose(),I){r.report.reportWarningOnce(66,ae,{reportExtra:ge});continue}else throw new Zt(66,ae,ge)}R.saveAndClose()}return new _s(A,{level:r.project.configuration.get("compressionLevel")})}};We();var IR=class{supportsDescriptor(e,r){return!!R8(e)}supportsLocator(e,r){return!!dm(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){let{patchPaths:a}=gR(e);return a.every(n=>!Die(n))?e:G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:s}=gR(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=gR(e),l=await yR(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let h=kie(l,f.version);return[bie(e,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:h})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(l=>l.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:s}=mR(e);return{...await r.resolver.resolve(s,r),...e}}};We();Mt();sr();var cv=class extends mt{constructor(){super(...arguments);this.save=ye.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=ye.String()}static{this.paths=[["patch-commit"]]}static{this.usage=At.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Yt.find(r,this.context.cwd);if(!a)throw new Dr(s.cwd,this.context.cwd);await s.restoreInstallState();let n=Y.Line truncated
${f.map(h=>`
- ${G.prettyLocator(r,h)}`).join("")}`);l=f[0]}if(!s.storedPackages.has(l.locatorHash))throw new ht("No package found in the project for the given locator");await Wt.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let h=T8(l),A=await Pie(l,{cache:n,project:s});f.reportJson({locator:G.stringifyLocator(h),path:me.fromPortablePath(A)});let m=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${G.prettyLocator(r,h)} got extracted with success${m}!`),f.reportInfo(0,`You can now edit the following folder: ${pe.pretty(r,me.fromPortablePath(A),"magenta")}`),f.reportInfo(0,`Once you are done run ${pe.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${me.fromPortablePath(A)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};var W5t={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:[cv,lv],fetchers:[ER],resolvers:[IR]},Y5t=W5t;var Fie={};lr(Fie,{PnpmLinker:()=>CR,default:()=>ejt});We();Mt();sr();var s8e=".package-map.json",CR=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new ht(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>"u")throw new ht(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new ht(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let h=a.locatorByPath.get(n[1]);if(h)return h}let l=e,f=e;do{f=l,l=Y.dirname(f);let h=a.locatorByPath.get(f);if(h)return h}while(l!==f);return null}makeInstaller(e){return new Tie(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},Tie=class{constructor(e){this.opts=e;this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.packageMapNodesByLocator=new Map;this.asyncActions=new Ye.AsyncActions(e.project.configuration.get("pnpmInstallConcurrency")),this.indexFolderPromise=gT(fe,{indexPath:Y.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}registerPackageMapNode(e,{packageLocation:r}){let s=l8e(r);this.packageMapNodesByLocator.has(e)||this.packageMapNodesByLocator.set(e,{packageLocation:s,dependencies:new Map})}registerPackageMapDependency(e,r,s){if(!this.packageMapNodesByLocator.has(s.locatorHash))throw new Error(`Assertion failed: Expected the package to have been registered (${G.stringifyLocator(s)})`);e.dependencies.set(r,s.locatorHash)}async installPackage(e,r,s){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,s);case"HARD":return this.installPackageHard(e,r,s)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,s){let a=Y.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?Y.join(a,Or.nodeModules):null,l={packageLocation:a,dependenciesLocation:n};return this.customData.pathsByLocator.set(e.locatorHash,l),this.registerPackageMapNode(e.locatorHash,l),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,s){let a=K5t(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,G.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),this.registerPackageMapNode(e.locatorHash,a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await fe.mkdirPromise(n,{recursive:!0}),await fe.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e,h={manifest:await nr.tryFind(r.prefixPath,{baseFs:r.packageFs})??new nr,misc:{hasBindingGyp:cA.hasBindingGyp(r)}},A=this.opts.project.getDependencyMeta(f,e.version),m=cA.extractBuildRequest(e,h,A,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:m}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!a8e(e,{project:this.opts.project}))return;let s=Line truncated
${rjt}
`,"--",...s],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(s=>me.fromPortablePath(s.path));await un.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var ajt=[h8e],uv=class extends mt{constructor(){super(...arguments);this.commit=ye.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=ye.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=ye.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=ye.Boolean("-u,--update",!1,{hidden:!0})}static{this.paths=[["stage"]]}static{this.usage=At.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]})}async execute(){let r=await $e.find(this.context.cwd,this.context.plugins),{project:s}=await Yt.find(r,this.context.cwd),{driver:a,root:n}=await cjt(s.cwd),l=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(w=>w.populateYarnPaths,s,w=>{l.push(w)});let f=new Set;for(let w of l)for(let v of ljt(n,w))f.add(v);let h=new Set([r.get("rcFilename"),Or.lockfile,Or.manifest]),A=await a.filterChanges(n,f,h),m=await a.genCommitMessage(n,A);if(this.dryRun)if(this.commit)this.context.stdout.write(`${m}
`);else for(let w of A)this.context.stdout.write(`${me.fromPortablePath(w.path)}
`);else if(this.reset){let w=await a.filterChanges(n,f,h,{staged:!0});w.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,w)}else A.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,A,m):(await a.makeStage(n,A),this.context.stdout.write(m))}};async function cjt(t){let e=null,r=null;for(let s of ajt)if((r=await s.findRoot(t))!==null){e=s;break}if(e===null||r===null)throw new ht("No stage driver has been found for your current project");return{driver:e,root:r}}function ljt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let s;try{s=fe.statSync(e)}catch{break}if(s.isSymbolicLink())e=Y.resolve(Y.dirname(e),fe.readlinkSync(e));else break}return r}var ujt={commands:[uv]},fjt=ujt;var jie={};lr(jie,{default:()=>Ejt});We();We();Mt();var d8e=st(Di());We();var A8e=st(iK()),hjt="e8e1bd300d860104bb8c58453ffa1eb4",Ajt="OFCNCOG2CU",p8e=async(t,e)=>{let r=G.stringifyIdent(t),a=pjt(e).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},pjt=t=>(0,A8e.default)(Ajt,hjt,{requester:{async send(r){try{let s=await Sn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var g8e=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,djt=async(t,e,r,s)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??(fe.existsSync(Y.join(t.cwd,"tsconfig.json"))||fe.existsSync(Y.join(a.cwd,"tsconfig.json")))))return;let f=n.makeResolver(),h={project:a,resolver:f,report:new rs};if(!await p8e(r,n))return;let m=g8e(r),w=G.parseRange(r.range).selector;if(!zr.validRange(w)){let N=n.normalizeDependency(r),U=await f.getCandidates(N,{},h);w=G.parseRange(U[0].reference).selector}let v=d8e.default.coerce(w);if(v===null)return;let D=`${jf.Modifier.CARET}${v.major}`,I=G.makeDescriptor(G.makeIdent("types",m),D),R=Ye.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,V=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&V!==r.descriptorHash)return Ye.mapAndFind.skip;let ee=[];for(let te of nr.allDependencies){let ie=N.manifest[te].get(I.identHash);typeof ie>"u"||ee.push([te,ie])}return ee.length===0?Ye.mapAndFind.skip:ee});if(typeof R<"u")for(let[N,U]of R)t.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(I);if((await f.getCandidates(N,{},h)).length===0)return}catch{return}t.manifest[jf.Target.DEVELOPMENT].set(I.identHash,I)}},gjt=async(t,e,r)=>{if(r.scope==="types")return;let{project:s}=t,{configuration:a}=s;if(!(a.get("tsEnableAutoTypes")??(fe.existsSync(Y.join(t.cwd,"tsconfig.json"))||fe.existsSync(Y.join(s.cwd,"tsconfig.json")))))return;let l=g8e(r),f=G.makeIdent("types",l);for(let h of nr.allDependencies)typeof t.manifest[h].get(f.identHash)>"u"||t.manifest[h].delete(f.identHash)},mjt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},yjt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:djt,afterWorkspaceDependencyRemoval:gjt,beforeWorkspacePacking:mjt}},Ejt=yjt;var Kie={};lr(Kie,{VersionApplyCommand:()=>fv,VersionCheckCommand:()=>dv,VersionCommand:()=>gv,default:()=>bjt,versionUtils:()=>vR});sr();var fv=class extends mt{constructor(){super(...arguments);this.all=ye.Boolean("--all",!1,{description:"Bump the version of all workspaces"});this.recursive=ye.Boolean("-R,--recursive",{description:"Bump the version of dependent workspaces as well"});this.exact=ye.Boolean("--exact",!1,{description:"When updating parent workspaces' dependencies, use exact versions of bumped workspaces, removing any range."});this.prerelease=ye.String("--prerelease",{description:"Specify a prerelease pattern to use when working with prerelease versions",tolerateBoolean:!0});this.dryRun=ye.Boolean("--dry-run",!1,{description:"Print version(s)/record(s) without actually bumping versions or recording deferred releases"});this.force=ye.Boolean("--force",!1,{description:"Bypass check for bumping to a lower version than the current/deferred one"});this.json=ye.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["version","apply"]]}static{this.usage=At.Usage({category:"Release-related commands",description:"apply deferred records to workspaces",details:`
This command will apply the deferred version changes to workspaces. The applied records are removed from the project.
For more information on the options, see the \`yarn version\` command. For more information on the deferred versioning workflow, see our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).
`,examples:[["Apply deferred records of current workspace","yarn version apply"],["Apply deferred records of all the workspaces in the local workspace","yarn version apply --all"]]})}async execute(){let r=["version","decline","--immediate"];return this.all&&r.push("--all"),this.recursive&&r.push("--recursive"),this.exact&&r.push("--exact"),this.prerelease===!0?r.push("--prerelease"):typeof this.prerelease=="string"&&r.push(`--prerelease=${this.prerelease}`),this.dryRun&&r.push("--dry-run"),this.force&&r.push("--force"),this.json&&r.push("--json"),await this.cli.run(r)}};We();Mt();sr();var Yie=st(Di());var vR={};lr(vR,{Decision:()=>Av,applyPrerelease:()=>m8e,applyReleases:()=>Wie,applyStrategy:()=>_8,clearVersionFiles:()=>qie,getUndecidedDependentWorkspaces:()=>BR,getUndecidedWorkspaces:()=>L8,openVersionFile:()=>pv,requireMoreDecisions:()=>Cjt,resolveVersionFiles:()=>Gie,suggestStrategy:()=>Bjt,updateVersionFiles:()=>Vie,validateReleaseDecision:()=>hv});We();Mt();au();sr();xl();var Oa=st(Di()),Ijt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,Av=(A=>(A.UNDECIDED="undecided",A.DECLINE="decline",A.MAJOR="major",A.MINOR="minor",A.PATCH="patch",A.PREMAJOR="premajor",A.PREMINOR="preminor",A.PREPATCH="prepatch",A.PRERELEASE="prerelease",A))(Av||{});function hv(t){let e=Oa.default.valid(t);if(e)return e;let r=Object.values(j5(Av,"UNDECIDED"));if(r.includes(t))return t;let s=Oa.default.valid(t,{loose:!0})?` Did you mean to use "${Oa.default.valid(t,{loose:!0})}"?`:"";throw new ht(`Invalid strategy: "${t}". Expected a valid semver or one of ${r.map(a=>JSON.stringify(a)).join(", ")}.${s}`)}function wjt(t){return t==="premajor"||t==="preminor"||t==="prepatch"||t==="prerelease"}async function Gie(t,{prerelease:e=null}={}){let r=new Map,s=t.configuration.get("deferredVersionFolder");if(!fe.existsSync(s))return r;let a=await fe.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let l=Y.join(s,n),f=await fe.readFilePromise(l,"utf8"),h=Fs(f);for(let[A,m]of Object.entries(h.releases||{})){if(m==="decline")continue;let w=G.parseIdent(A),v=t.tryWorkspaceByIdent(w);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${Y.basename(l)} references ${A})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${G.prettyLocator(t.configuration,v.anchoredLocator)})`);let D=r.get(v),I=_8(v.manifest.version,hv(m),e);if(I===null)throw new Error(`Assertion failed: Expected ${v.manifest.version} to support being bumped via strategy ${m}`);let R=typeof D<"u"?Oa.default.gt(I,D)?I:D:I;r.set(v,R)}}return r}async function qie(t){let e=t.configuration.get("deferredVersionFolder");fe.existsSync(e)&&await fe.removePromise(e)}async function Vie(t,e){let r=new Set(e),s=t.configuration.get("deferredVersionFolder");if(!fe.existsSync(s))return;let a=await fe.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let l=Y.join(s,n),f=await fe.readFilePromise(l,"utf8"),h=Fs(f),A=h?.releases;if(A){for(let m of Object.keys(A)){let w=G.parseIdent(m),v=t.tryWorkspaceByIdent(w);(v===null||r.has(v))&&delete h.releases[m]}Object.keys(h.releases).length>0?await fe.changeFilePromise(l,Uc(new Uc.PreserveOrdering(h))):await fe.unlinkPromise(l)}}}async function pv(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new ht("This command can only be run from within a Yarn project");let s=await fc.fetchRoot(r.projectCwd),a=s!==null?await fc.fetchBase(s,{baseRefs:r.get("changesetBaseRefs")}):null,n=s!==null?await fc.fetchChangedFiles(s,{base:a.hash,project:t}):[],l=r.get("deferredVersionFolder"),f=n.filter(D=>Y.contains(l,D)!==null);if(f.length>1)throw new ht(`Your current branch contains multiple versioning files; this isn't supported:
- ${f.map(D=>me.fromPortablePath(D)).join(`
- `)}`);let h=new Set(Ye.mapAndFilter(n,D=>{let I=t.tryWorkspaceByFilePath(D);return I===null?Ye.mapAndFilter.skip:I}));if(f.length===0&&h.size===0&&!e)return null;let A=f.length===1?f[0]:Y.join(l,`${si.makeHash(Math.random().toString()).slice(0,8)}.yml`),m=fe.existsSync(A)?await fe.readFilePromise(A,"utf8"):"{}",w=Fs(m),v=new Map;for(let D of w.declined||[]){let I=G.parseIdent(D),R=t.getWorkspaceByIdent(I);v.set(R,"decline")}for(let[D,I]of Object.entries(w.releases||{})){let R=G.parseIdent(D),N=t.getWorkspaceByIdent(R);v.set(N,hv(I))}return{project:t,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:h,releaseRoots:new Set([...h].filter(D=>D.manifest.version!==null)),releases:v,async saveAll(){let D={},I=[],R=[];for(let N of t.workspaces){if(N.manifest.version===null)continue;let U=G.stringifyIdent(N.anchoredLocator),V=v.get(N);V==="decline"?I.push(U):typeof V<"u"?D[U]=hv(V):h.has(N)&&R.push(U)}await fe.mkdirPromise(Y.dirname(A),{recursive:!0}),await fe.changeFilePromise(A,Uc(new Uc.PreserveOrdering({releases:Object.keys(D).length>0?D:void 0,declined:I.length>0?I:void 0,undecided:R.length>0?R:void 0})))}}}function Cjt(t){return L8(t).size>0||BR(t).length>0}function L8(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function BR(t,{include:e=new Set}={}){let r=[],s=new Map(Ye.mapAndFilter([...t.releases],([n,l])=>l==="decline"?Ye.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(Ye.mapAndFilter([...t.releases],([n,l])=>l!=="decline"?Ye.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let l of nr.hardDependencies)for(let f of n.manifest.getForScope(l).values()){let h=t.project.tryWorkspaceByDescriptor(f);h!==null&&s.has(h.anchoredLocator.locatorHash)&&r.push([n,h])}return r}function Bjt(t,e){let r=Oa.default.clean(e);for(let s of Object.values(Av))if(s!=="undecided"&&s!=="decline"&&Oa.default.inc(t,s)===r)return s;return null}function _8(t,e,r=null){if(Oa.default.valid(e))return e;if(t===null)throw new ht(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!Oa.default.valid(t))throw new ht(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);if(wjt(e)){let a=Oa.default.inc(t,e==="prerelease"?"patch":e.slice(3));if(a===null)throw new ht(`Cannot apply the release strategy "${e.slice(3)}" on the specified version (${t}) while trying to determine the base of the prerelease bump`);return r?m8e(a,{current:t,prerelease:r}):a===Oa.default.truncate(t,"patch")?Oa.default.inc(t,"prerelease"):`${a}-0`}let s=Oa.default.inc(t,e);if(s===null)throw new ht(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return s}function Wie(t,e,{report:r,exact:s}){let a=new Map;for(let n of t.workspaces)for(let l of nr.allDependencies)for(let f of n.manifest[l].values()){let h=t.tryWorkspaceByDescriptor(f);if(h===null||!e.has(h))continue;Ye.getArrayWithDefault(a,h).push([n,l,f.identHash])}for(let[n,l]of e){let f=n.manifest.version;n.manifest.version=l,delete n.manifest.raw.stableVersion;let h=n.manifest.name!==null?G.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${G.prettyLocator(t.configuration,n.anchoredLocator)}: Bumped to ${l}`),r.reportJson({cwd:me.fromPortablePath(n.cwd),ident:h,deferred:!1,oldVersion:f,newVersion:l});let A=a.get(n);if(!(typeof A>"u"))for(let[m,w,v]of A){let D=m.manifest[w].get(v);if(typeof D>"u")throw new Error("Assertion failed: The dependency should have existed");let I=D.range,R=!1;if(I.startsWith(Gi.protocol)&&(I=I.slice(Gi.protocol.length),R=!0,I===n.relativeCwd))continue;let N=I.match(Ijt);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${G.prettyLocator(t.configuration,m.anchoredLocator)})`);continue}let U=s?`${l}`:`${N[1]}${l}`;R&&(U=`${Gi.protocol}${U}`);let V=G.makeDescriptor(D,U);m.manifest[w].set(v,V)}}}var vjt=new Map([["%n",t=>t.length>0&&typeof t[0]=="number"?{increment:t.shift()+1,reset:1}:{increment:null,reset:1}]]);function m8e(t,{current:e,prerelease:r}){let s=new Oa.default.SemVer(e),a=Oa.default.truncate(t,"patch");if(a===null)throw new Error(`Assertion failed: Expected the version to be a valid semver version (${t})`);let n=s.prerelease.slice(),l=Oa.default.truncate(s,"patch")===a,f=[];for(let A of r.split(/\./g)){let m=vjt.get(A);if(typeof m>"u")f.push(A),n[0]===A?n.shift():l=!1;else{let w=m(n);l&&w.increment!==null?f.push(w):(f.push(w.reset),l=!1)}}l&&=n.length===0;let h=f.map(A=>typeof A=="object"?l?A.increment:A.reset:A);return`${a}-${h.join(".")}`}var dv=class extends mt{constructor(){super(...arguments);this.interactive=ye.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}static{this.paths=[["version","check"]]}static{this.usaLine truncated
`)},h=()=>{let we=this.from.map(d=>yv.default.matcher(d));return s.workspaces.filter(d=>{let be=G.stringifyIdent(d.anchoredLocator),Ce=d.relativeCwd;return we.some(Ee=>Ee(be)||Ee(Ce))})},A=[];if(this.since?(f("Option --since is set; selecting the changed workspaces as root for workspace selection"),A=Array.from(await fc.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f("Option --from is set; selecting the specified workspaces"),A=[...h()]):this.worktree?(f("Option --worktree is set; selecting the current workspace"),A=[a]):this.recursive?(f("Option --recursive is set; selecting the current workspace"),A=[a]):this.all&&(f("Option --all is set; selecting all workspaces"),A=[...s.workspaces]),this.dryRun&&!this.all){for(let we of A)f(`
- ${we.relativeCwd}
${G.prettyLocator(r,we.anchoredLocator)}`);A.length>0&&f("")}let m;if(this.recursive?this.since?(f("Option --recursive --since is set; recursively selecting all dependent workspaces"),m=new Set(A.map(we=>[...we.getRecursiveWorkspaceDependents()]).flat())):(f("Option --recursive is set; recursively selecting all transitive dependencies"),m=new Set(A.map(we=>[...we.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f("Option --worktree is set; recursively selecting all nested workspaces"),m=new Set(A.map(we=>[...we.getRecursiveWorkspaceChildren()]).flat())):m=null,m!==null&&(A=[...new Set([...A,...m])],this.dryRun))for(let we of m)f(`
- ${we.relativeCwd}
${G.prettyLocator(r,we.anchoredLocator)}`);let w=[],v=!1;if(l?.includes(":")){for(let we of s.workspaces)if(we.manifest.scripts.has(l)&&(v=!v,v===!1))break}for(let we of A){if(l&&!we.manifest.scripts.has(l)&&!v&&!(await qn.getWorkspaceAccessibleBinaries(we)).has(l)){f(`Excluding ${we.relativeCwd} because it doesn't have a "${l}" script`);continue}if(!(l===r.env.npm_lifecycle_event&&we.cwd===a.cwd)){if(this.include.length>0&&!yv.default.isMatch(G.stringifyIdent(we.anchoredLocator),this.include)&&!yv.default.isMatch(we.relativeCwd,this.include)){f(`Excluding ${we.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(yv.default.isMatch(G.stringifyIdent(we.anchoredLocator),this.exclude)||yv.default.isMatch(we.relativeCwd,this.exclude))){f(`Excluding ${we.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&we.manifest.private===!0){f(`Excluding ${we.relativeCwd} because it's a private workspace and --no-private was set`);continue}w.push(we)}}if(w.sort((we,d)=>G.stringifyIdent(we.anchoredLocator).localeCompare(G.stringifyIdent(d.anchoredLocator))),this.dryRun)return 0;let D=this.verbose??(this.context.stdout.isTTY?1/0:0),I=D>0,R=D>1,N=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(us.availableParallelism()/2):1,U=N===1?!1:this.parallel,V=U?this.interlaced:!0,ee=(0,E8e.default)(N),te=new Map,ie=new Set,ae=0,ge=null,de=!1,xe=await Wt.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async we=>{let d=async(be,{commandIndex:Ce})=>{if(de)return-1;!U&&R&&Ce>1&&we.reportSeparator();let Ee=Djt(be,{configuration:r,label:I,commandIndex:Ce}),[he,$]=y8e(we,{prefix:Ee,interlaced:V}),[De,Te]=y8e(we,{prefix:Ee,interlaced:V});try{R&&we.reportInfo(null,`${Ee?`${Ee} `:""}Process started`);let ot=Date.now(),j=await this.cli.run([this.commandName,...this.args],{cwd:be.cwd,stdout:he,stderr:De})||0;he.end(),De.end(),await $,await Te;let rt=Date.now();if(R){let Ne=r.get("enableTimers")?`, completed in ${pe.pretty(r,rt-ot,pe.Type.DURATION)}`:"";we.reportInfo(null,`${Ee?`${Ee} `:""}Process exited (exit code ${j})${Ne}`)}return j===130&&(de=!0,ge=j),j}catch(ot){throw he.end(),De.end(),await $,await Te,ot}};for(let be of w)te.set(be.anchoredLocator.locatorHash,be);for(;te.size>0&&!we.hasErrors();){let be=[];for(let[$,De]of te){if(ie.has(De.anchoredDescriptor.descriptorHash))continue;let Te=!0;if(this.topological||this.topologicalDev){let ot=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let j of ot.values()){let rt=s.tryWorkspaceByDescriptor(j);if(Te=rt===null||!te.has(rt.anchoredLocator.locatorHash),!Te)break}}if(Te&&(ie.add(De.anchoredDescriptor.descriptorHash),be.push(ee(async()=>{let ot=await d(De,{commandIndex:++ae});return te.delete($),ie.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:ot}})),!U))break}if(be.length===0){let $=Array.from(te.values()).map(De=>G.prettyLocator(r,De.anchoredLocator)).join(", ");we.reportError(3,`Dependency cycle detected (${$})`);return}let Ce=await Promise.all(be);Ce.forEach(({workspace:$,exitCode:De})=>{De!==0&&we.reportError(0,`The command failed in workspace ${G.prettyLocator(r,$.anchoredLocator)} with exit code ${De}`)});let he=Ce.map($=>$.exitCode).find($=>$!==0);(this.topological||this.topologicalDev)&&typeof he<"u"&&we.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return ge!==null?ge:xe.exitCode()}};function y8e(t,{prefix:e,interlaced:r}){let s=t.createStreamReporter(e),a=new Ye.DefaultStream;a.pipe(s,{end:!1}),a.on("finish",()=>{s.end()});let n=new Promise(f=>{s.on("finish",()=>{f(a.active)})});if(r)return[a,n];let l=new Ye.BufferStream;return l.pipe(a,{end:!1}),l.on("finish",()=>{a.end()}),[l,n]}function Djt(t,{configuration:e,commandIndex:r,label:s}){if(!s)return null;let n=`[${G.stringifyIdent(t.anchoredLocator)}]:`,l=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=l[r%l.length];return pe.pretty(e,n,f)}var Pjt={commands:[mv,Ev]},xjt=Pjt;var QC=()=>({modules:new Map([["@yarnpkg/cli",hD],["@yarnpkg/core",fD],["@yarnpkg/fslib",cS],["@yarnpkg/libzip",bb],["@yarnpkg/parsers",hS],["@yarnpkg/shell",Tb],["clipanion",BS],["semver",kjt],["typanion",ho],["@yarnpkg/plugin-essentials",nY],["@yarnpkg/plugin-catalog",aY],["@yarnpkg/plugin-compat",hY],["@yarnpkg/plugin-constraints",xY],["@yarnpkg/plugin-dlx",kY],["@yarnpkg/plugin-exec",QY],["@yarnpkg/plugin-file",NY],["@yarnpkg/plugin-git",rY],["@yarnpkg/plugin-github",_Y],["@yarnpkg/plugin-http",MY],["@yarnpkg/plugin-init",UY],["@yarnpkg/plugin-interactive-tools",Lz],["@yarnpkg/plugin-jsr",Mz],["@yarnpkg/plugin-link",Uz],["@yarnpkg/plugin-nm",PJ],["@yarnpkg/plugin-npm",pie],["@yarnpkg/plugin-npm-cli",vie],["@yarnpkg/plugin-pack",EZ],["@yarnpkg/plugin-patch",Rie],["@yarnpkg/plugin-pnp",dJ],["@yarnpkg/plugin-pnpm",Fie],["@yarnpkg/plugin-stage",Hie],["@yarnpkg/pLine truncated
Please report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once("beforeExit",n);try{process.exitCode=42,process.exitCode=await Njt(a,t,{selfPath:r,pluginConfiguration:s})}catch(l){ec.defaultContext.stdout.write(a.error(l)),process.exitCode=1}finally{process.off("beforeExit",n),await fe.rmtempPromise()}}_O(process.argv.slice(2),{cwd:Y.cwd(),selfPath:me.toPortablePath(me.resolve(process.argv[1])),pluginConfiguration:QC()});})();
/**
@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 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.
*/
/**
@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.
*/
/*! Bundled license information:
is-number/index.js:
(*!
* is-number <https://github.com/jonschlinkert/is-number>
*
* Copyright (c) 2014-present, Jon Schlinkert.
* Released under the MIT License.
*)
to-regex-range/index.js:
(*!
* to-regex-range <https://github.com/micromatch/to-regex-range>
*
* Copyright (c) 2015-present, Jon Schlinkert.
* Released under the MIT License.
*)
fill-range/index.js:
(*!
* fill-range <https://github.com/jonschlinkert/fill-range>
*
* Copyright (c) 2014-present, Jon Schlinkert.
* Licensed under the MIT License.
*)
is-extglob/index.js:
(*!
* is-extglob <https://github.com/jonschlinkert/is-extglob>
*
* Copyright (c) 2014-2016, Jon Schlinkert.
* Licensed under the MIT License.
*)
is-glob/index.js:
(*!
* is-glob <https://github.com/jonschlinkert/is-glob>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*)
queue-microtask/index.js:
(*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)
run-parallel/index.js:
(*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)
git-url-parse/lib/index.js:
(*!
* buildToken
* Builds OAuth token prefix (helper function)
*
* @name buildToken
* @function
* @param {GitUrl} obj The parsed Git url object.
* @return {String} token prefix
*)
object-assign/index.js:
(*
object-assign
(c) Sindre Sorhus
@license MIT
*)
react/cjs/react.production.min.js:
(** @license React v17.0.2
* 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.
*)
scheduler/cjs/scheduler.production.min.js:
(** @license React v0.20.2
* 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.
*)
react-reconciler/cjs/react-reconciler.production.min.js:
(** @license React v0.26.2
* 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.
*)
is-windows/index.js:
(*!
* is-windows <https://github.com/jonschlinkert/is-windows>
*
* Copyright © 2015-2018, Jon Schlinkert.
* Released under the MIT License.
*)
negotiator/index.js:
(*!
* negotiator
* Copyright(c) 2012 Federico Romero
* Copyright(c) 2012-2014 Isaac Z. Schlueter
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
imurmurhash/imurmurhash.js:
(**
* @preserve
* JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)
*
* @author <a href="mailto:[email protected]">Jens Taylor</a>
* @see http://github.com/homebrewing/brauhaus-diff
* @author <a href="mailto:[email protected]">Gary Court</a>
* @see http://github.com/garycourt/murmurhash-js
* @author <a href="mailto:[email protected]">Austin Appleby</a>
* @see http://sites.google.com/site/murmurhash/
*)
make-fetch-happen/lib/fetch.js:
(**
* @license
* Copyright (c) 2010-2012 Mikeal Rogers
* 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.
*)
*/
-16
View File
@@ -1,16 +0,0 @@
approvedGitRepositories:
- "**"
compressionLevel: mixed
defaultSemverRangePrefix: ""
enableGlobalCache: false
enableScripts: true
nodeLinker: node-modules
npmMinimalAgeGate: 3d
yarnPath: .yarn/releases/yarn-4.18.0.cjs
-63
View File
@@ -1,63 +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
yarn lint # ESLint + Prettier + TypeScript + Lit
yarn format # Auto-fix ESLint + Prettier
yarn lint:types # TypeScript compiler, run without file arguments
yarn test # Vitest
yarn dev # App dev server, supports --background/--status/--stop/--logs
yarn dev:serve # Local serving dev server, supports -c core URL, -p port, and dev flags
```
Never run `tsc` or `yarn lint:types` with file arguments. When `tsc` receives file arguments, it ignores `tsconfig.json` and can emit `.js` files into `src/`. Always run `yarn 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.
## Project Skills
Detailed guidance lives in project skills under `.agents/skills/`. Load the matching skill before detailed implementation or review:
- `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, review checklist, and recurring review issues.
- `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://developers.home-assistant.io/docs/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
+1
View File
@@ -1,4 +1,5 @@
include README.md
include LICENSE.md
graft hass_frontend
graft hass_frontend_es5
recursive-exclude * *.py[co]
+4 -5
View File
@@ -2,7 +2,7 @@
This is the repository for the official [Home Assistant](https://home-assistant.io) frontend.
[![Screenshot of the frontend](https://raw.githubusercontent.com/home-assistant/frontend/master/docs/screenshot.png)](https://demo.home-assistant.io/)
[![Screenshot of the frontend](https://raw.githubusercontent.com/home-assistant/home-assistant-polymer/master/docs/screenshot.png)](https://demo.home-assistant.io/)
- [View demo of Home Assistant](https://demo.home-assistant.io/)
- [More information about Home Assistant](https://home-assistant.io)
@@ -12,8 +12,9 @@ This is the repository for the official [Home Assistant](https://home-assistant.
- Initial setup: `script/setup`
- Development: [Instructions](https://developers.home-assistant.io/docs/frontend/development/)
- Production build: `yarn build`
- Production build: `script/build_frontend`
- Gallery: `cd gallery && script/develop_gallery`
- Hass.io: [Instructions](https://developers.home-assistant.io/docs/en/hassio_hass.html)
## Frontend development
@@ -25,6 +26,4 @@ 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/)
We use [BrowserStack](https://www.browserstack.com) to test Home Assistant on a large variation of devices.
+30
View File
@@ -0,0 +1,30 @@
# https://dev.azure.com/home-assistant
trigger: none
pr: none
schedules:
- cron: "0 0 * * *"
displayName: "build preview"
branches:
include:
- dev
always: true
variables:
- group: netlify
jobs:
- job: 'Netlify_preview'
pool:
vmImage: 'ubuntu-latest'
steps:
- script: |
# Cast
curl -X POST -d {} https://api.netlify.com/build_hooks/${NETLIFY_CAST}
# Demo
curl -X POST -d {} https://api.netlify.com/build_hooks/${NETLIFY_DEMO}
# Gallery
curl -X POST -d {} https://api.netlify.com/build_hooks/${NETLIFY_GALLERY}
displayName: 'Trigger netlify build preview'
+59
View File
@@ -0,0 +1,59 @@
# https://dev.azure.com/home-assistant
trigger:
batch: true
tags:
include:
- "*"
pr: none
variables:
- name: versionWheels
value: '1.10.1-3.7-alpine3.11'
- name: versionNode
value: '12.1'
- group: twine
resources:
repositories:
- repository: azure
type: github
name: 'home-assistant/ci-azure'
endpoint: 'home-assistant'
stages:
- stage: "Validate"
jobs:
- template: templates/azp-job-version.yaml@azure
- stage: "Build"
jobs:
- job: "ReleasePython"
pool:
vmImage: "ubuntu-latest"
steps:
- task: UsePythonVersion@0
displayName: "Use Python 3.7"
inputs:
versionSpec: "3.7"
- task: NodeTool@0
displayName: "Use Node $(versionNode)"
inputs:
versionSpec: "$(versionNode)"
- script: pip install twine wheel
displayName: "Install tools"
- script: |
export TWINE_USERNAME="$(twineUser)"
export TWINE_PASSWORD="$(twinePassword)"
script/release
displayName: "Build and release package"
- stage: "Wheels"
jobs:
- template: templates/azp-job-wheels.yaml@azure
parameters:
builderVersion: '$(versionWheels)'
wheelsRequirement: 'requirement.txt'
preBuild:
- script: |
sleep 240
echo "home-assistant-frontend==$(Build.SourceBranchName)" > requirement.txt
+70
View File
@@ -0,0 +1,70 @@
# https://dev.azure.com/home-assistant
trigger:
batch: true
branches:
include:
- dev
paths:
include:
- translations/en.json
pr: none
schedules:
- cron: "30 0 * * *"
displayName: "frontend translation update"
branches:
include:
- dev
always: true
variables:
- group: translation
resources:
repositories:
- repository: azure
type: github
name: 'home-assistant/ci-azure'
endpoint: 'home-assistant'
jobs:
- job: 'Upload'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
displayName: 'Use Node 12.x'
inputs:
versionSpec: '12.x'
- script: |
export LOKALISE_TOKEN="$(lokaliseToken)"
export AZURE_BRANCH="$(Build.SourceBranchName)"
./script/translations_upload_base
displayName: 'Upload Translation'
- job: 'Download'
dependsOn:
- 'Upload'
condition: or(eq(variables['Build.Reason'], 'Schedule'), eq(variables['Build.Reason'], 'Manual'))
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
displayName: 'Use Node 12.x'
inputs:
versionSpec: '12.x'
- template: templates/azp-step-git-init.yaml@azure
- script: |
export LOKALISE_TOKEN="$(lokaliseToken)"
export AZURE_BRANCH="$(Build.SourceBranchName)"
npm install
./script/translations_download
displayName: 'Download Translation'
- script: |
git checkout dev
git add translation
git commit -am "[ci skip] Translation update"
git push
displayName: 'Update translation'
+7
View File
@@ -0,0 +1,7 @@
{
"rules": {
"import/no-extraneous-dependencies": 0,
"no-restricted-syntax": 0,
"no-console": 0
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"extends": "../.eslintrc.json",
"rules": {
"import/no-extraneous-dependencies": 0,
"global-require": 0
}
}
-39
View File
@@ -1,39 +0,0 @@
# Bundling Home Assistant Frontend
The Home Assistant build pipeline contains various steps to prepare a build.
- Generating icon files to be included
- Generating translation files to be included
- Converting TypeScript, CSS and JSON files to JavaScript
- Bundling
- Minifying the files
- Generating the HTML entrypoint files
- Generating the service worker
- Compressing the files
## Converting files
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.
For development, bundling is optional. We just want to get the right files in the browser.
Responsibilities of the converter during development:
- Convert TypeScript to JavaScript
- Convert CSS to JavaScript that sets the content as the default export
- Convert JSON to JavaScript that sets the content as the default export
- Make sure import, dynamic import and web worker references work
- Add extensions where missing
- Resolve absolute package imports
- Filter out specific imports/packages
- Replace constants with values
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 ES5 compatible
Configuration for all these steps are specified in [bundle.js](bundle.js).
@@ -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;
},
};
}
);
@@ -1,168 +0,0 @@
const path = require("path");
// Currently only supports CommonJS modules, as require is synchronous. `import` would need babel running asynchronous.
module.exports = function inlineConstants(babel, options, cwd) {
const t = babel.types;
if (!Array.isArray(options.modules)) {
throw new TypeError(
"babel-plugin-inline-constants: expected a `modules` array to be passed"
);
}
if (options.resolveExtensions && !Array.isArray(options.resolveExtensions)) {
throw new TypeError(
"babel-plugin-inline-constants: expected `resolveExtensions` to be an array"
);
}
const ignoreModuleNotFound = options.ignoreModuleNotFound;
const resolveExtensions = options.resolveExtensions;
const hasRelativeModules = options.modules.some(
(module) => module.startsWith(".") || module.startsWith("/")
);
const modules = Object.fromEntries(
options.modules.map((module) => {
const absolute = module.startsWith(".")
? require.resolve(module, { paths: [cwd] })
: module;
return [absolute, require(absolute)];
})
);
const toLiteral = (value) => {
if (typeof value === "string") {
return t.stringLiteral(value);
}
if (typeof value === "number") {
return t.numericLiteral(value);
}
if (typeof value === "boolean") {
return t.booleanLiteral(value);
}
if (value === null) {
return t.nullLiteral();
}
throw new Error(
"babel-plugin-inline-constants: cannot handle non-literal `" + value + "`"
);
};
const resolveAbsolute = (value, state, resolveExtensionIndex) => {
if (!state.filename) {
throw new TypeError(
"babel-plugin-inline-constants: expected a `filename` to be set for files"
);
}
if (resolveExtensions && resolveExtensionIndex !== undefined) {
value += resolveExtensions[resolveExtensionIndex];
}
try {
return require.resolve(value, { paths: [path.dirname(state.filename)] });
} catch (error) {
if (
error.code === "MODULE_NOT_FOUND" &&
resolveExtensions &&
(resolveExtensionIndex === undefined ||
resolveExtensionIndex < resolveExtensions.length - 1)
) {
const resolveExtensionIdx = (resolveExtensionIndex || -1) + 1;
return resolveAbsolute(value, state, resolveExtensionIdx);
}
if (error.code === "MODULE_NOT_FOUND" && ignoreModuleNotFound) {
return undefined;
}
throw error;
}
};
const importDeclaration = (p, state) => {
if (p.node.type !== "ImportDeclaration") {
return;
}
const absolute =
hasRelativeModules && p.node.source.value.startsWith(".")
? resolveAbsolute(p.node.source.value, state)
: p.node.source.value;
if (!absolute || !(absolute in modules)) {
return;
}
const module = modules[absolute];
for (const specifier of p.node.specifiers) {
if (
specifier.type === "ImportDefaultSpecifier" &&
specifier.local &&
specifier.local.type === "Identifier"
) {
if (!("default" in module)) {
throw new Error(
"babel-plugin-inline-constants: cannot access default export from `" +
p.node.source.value +
"`"
);
}
const variableValue = toLiteral(module.default);
const variable = t.variableDeclarator(
t.identifier(specifier.local.name),
variableValue
);
p.insertBefore({
type: "VariableDeclaration",
kind: "const",
declarations: [variable],
});
} else if (
specifier.type === "ImportSpecifier" &&
specifier.imported &&
specifier.imported.type === "Identifier" &&
specifier.local &&
specifier.local.type === "Identifier"
) {
if (!(specifier.imported.name in module)) {
throw new Error(
"babel-plugin-inline-constants: cannot access `" +
specifier.imported.name +
"` from `" +
p.node.source.value +
"`"
);
}
const variableValue = toLiteral(module[specifier.imported.name]);
const variable = t.variableDeclarator(
t.identifier(specifier.local.name),
variableValue
);
p.insertBefore({
type: "VariableDeclaration",
kind: "const",
declarations: [variable],
});
} else {
throw new Error("Cannot handle specifier `" + specifier.type + "`");
}
}
p.remove();
};
return {
visitor: {
ImportDeclaration: importDeclaration,
},
};
};
-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: yarn build --stop\n" +
" Status: yarn build --status\n" +
" Logs: yarn 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"
? "yarn build --stop"
: owner?.kind === "dev"
? `yarn ${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: yarn ${command} --stop\n` +
` Status: yarn ${command} --status\n` +
` Logs: yarn ${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": 595204,
"core": 57741,
"authorize": 576928,
"onboarding": 685964
},
"frontend-legacy": {
"app": 861452,
"core": 258557,
"authorize": 834356,
"onboarding": 1001360
}
}
-336
View File
@@ -1,336 +0,0 @@
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
module.exports.sourceMapURL = () => {
const ref = env.version().endsWith("dev")
? process.env.GITHUB_SHA || "dev"
: env.version();
return `https://raw.githubusercontent.com/home-assistant/frontend/${ref}/`;
};
// Files from NPM Packages that should not be imported
module.exports.ignorePackages = () => [];
// Files from NPM packages that we should replace with empty file
module.exports.emptyPackages = ({ isLandingPageBuild }) =>
[
// Icons in landingpage conflict with icons in HA so we don't load.
isLandingPageBuild &&
require.resolve(
path.resolve(paths.root_dir, "src/components/ha-icon.ts")
),
isLandingPageBuild &&
require.resolve(
path.resolve(paths.root_dir, "src/components/ha-icon-picker.ts")
),
].filter(Boolean);
module.exports.definedVars = ({ isProdBuild, latestBuild, defineOverlay }) => ({
__DEV__: !isProdBuild,
__BUILD__: JSON.stringify(latestBuild ? "modern" : "legacy"),
__VERSION__: JSON.stringify(env.version()),
__DEMO__: false,
__BACKWARDS_COMPAT__: false,
__STATIC_PATH__: "/static/",
__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"
),
...defineOverlay,
});
module.exports.htmlMinifierOptions = {
caseSensitive: true,
collapseWhitespace: true,
conservativeCollapse: true,
decodeEntities: true,
removeComments: true,
removeRedundantAttributes: true,
minifyCSS: {
compatibility: "*,-properties.zeroUnits",
},
};
module.exports.terserOptions = ({ latestBuild, isTestBuild }) => ({
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 }) => ({
babelrc: false,
compact: false,
assumptions: {
privateFieldsAsProperties: true,
setPublicClassFields: true,
setSpreadProperties: true,
},
browserslistEnv: latestBuild ? "modern" : `legacy${sw ? "-sw" : ""}`,
presets: [
[
"@babel/preset-env",
{
shippedProposals: true,
},
],
],
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"),
{
modules: ["@mdi/js"],
ignoreModuleNotFound: true,
},
],
// Import helpers and regenerator 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`.
[
"@babel/plugin-transform-runtime",
{ version: dependencies["@babel/runtime"], moduleName: "@babel/runtime" },
],
"@babel/plugin-transform-class-properties",
"@babel/plugin-transform-private-methods",
].filter(Boolean),
exclude: [
// \\ for Windows, / for Mac OS and Linux
/node_modules[\\/]core-js/,
],
sourceMaps: !isTestBuild,
overrides: [
{
// Add plugin to inject various polyfills, excluding the polyfills
// themselves to prevent self-injection.
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",
"proxy-polyfill",
"unfetch",
].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}/`)),
},
],
});
const nameSuffix = (latestBuild) => (latestBuild ? "-modern" : "-legacy");
const outputPath = (outputRoot, latestBuild) =>
path.resolve(outputRoot, latestBuild ? "frontend_latest" : "frontend_es5");
const publicPath = (latestBuild, root = "") =>
latestBuild ? `${root}/frontend_latest/` : `${root}/frontend_es5/`;
/*
BundleConfig {
// Object with entrypoints that need to be bundled
entry: { [name: string]: pathToFile },
// Folder where bundled files need to be written
outputPath: string,
// absolute url-path where bundled files can be found
publicPath: string,
// extra definitions that we need to replace in source
defineOverlay: {[name: string]: value },
// if this is a production build
isProdBuild: boolean,
// If we're targeting latest browsers
latestBuild: boolean,
// If we're doing a stats build (create nice chunk names)
isStatsBuild: boolean,
// If it's just a test build in CI, skip time on source map generation
isTestBuild: boolean,
// Names of entrypoints that should not be hashed
dontHash: Set<string>
}
*/
module.exports.config = {
app({ isProdBuild, latestBuild, isStatsBuild, isTestBuild, isWDS }) {
return {
name: "frontend" + nameSuffix(latestBuild),
entry: {
"service-worker": !latestBuild
? {
import: "./src/entrypoints/service-worker.ts",
layer: "sw",
}
: "./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",
},
outputPath: outputPath(paths.app_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
isStatsBuild,
isTestBuild,
isWDS,
};
},
demo({ isProdBuild, latestBuild, isStatsBuild, isTestBuild }) {
return {
name: "demo" + nameSuffix(latestBuild),
entry: {
main: path.resolve(paths.demo_dir, "src/entrypoint.ts"),
},
outputPath: outputPath(paths.demo_output_root, latestBuild),
publicPath: publicPath(latestBuild),
defineOverlay: {
__VERSION__: JSON.stringify(`DEMO-${env.version()}`),
__DEMO__: true,
},
isProdBuild,
latestBuild,
isStatsBuild,
isTestBuild,
};
},
cast({ isProdBuild, latestBuild }) {
const entry = {
launcher: path.resolve(paths.cast_dir, "src/launcher/entrypoint.ts"),
media: path.resolve(paths.cast_dir, "src/media/entrypoint.ts"),
};
if (latestBuild) {
entry.receiver = path.resolve(
paths.cast_dir,
"src/receiver/entrypoint.ts"
);
}
return {
name: "cast" + nameSuffix(latestBuild),
entry,
outputPath: outputPath(paths.cast_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
defineOverlay: {
__BACKWARDS_COMPAT__: true,
},
};
},
gallery({ isProdBuild, latestBuild }) {
return {
name: "gallery" + nameSuffix(latestBuild),
entry: {
entrypoint: path.resolve(paths.gallery_dir, "src/entrypoint.js"),
},
outputPath: outputPath(paths.gallery_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
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"
),
},
outputPath: outputPath(paths.e2eTestApp_output_root, latestBuild),
publicPath: publicPath(latestBuild),
defineOverlay: {
__VERSION__: JSON.stringify(`E2E-TEST-${env.version()}`),
__DEMO__: true,
},
isProdBuild,
latestBuild,
isStatsBuild,
isTestBuild,
};
},
};
+196
View File
@@ -0,0 +1,196 @@
const path = require("path");
const env = require("./env.js");
const paths = require("./paths.js");
// Files from NPM Packages that should not be imported
module.exports.ignorePackages = ({ latestBuild }) => [
// Bloats bundle and it's not used.
path.resolve(require.resolve("moment"), "../locale"),
// 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 = ({ latestBuild }) =>
[
// 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/font-roboto.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.polymer_dir, "src/resources/compatibility.ts")
),
// This polyfill is loaded in workers to support ES5, filter it out.
latestBuild && require.resolve("proxy-polyfill/src/index.js"),
].filter(Boolean);
module.exports.definedVars = ({ isProdBuild, latestBuild, defineOverlay }) => ({
__DEV__: !isProdBuild,
__BUILD__: JSON.stringify(latestBuild ? "latest" : "es5"),
__VERSION__: JSON.stringify(env.version()),
__DEMO__: false,
__BACKWARDS_COMPAT__: false,
__STATIC_PATH__: "/static/",
"process.env.NODE_ENV": JSON.stringify(
isProdBuild ? "production" : "development"
),
...defineOverlay,
});
module.exports.terserOptions = (latestBuild) => ({
safari10: true,
ecma: latestBuild ? undefined : 5,
output: { comments: false },
});
module.exports.babelOptions = ({ latestBuild }) => ({
babelrc: false,
presets: [
!latestBuild && [require("@babel/preset-env").default, { modules: false }],
require("@babel/preset-typescript").default,
].filter(Boolean),
plugins: [
// Part of ES2018. Converts {...a, b: 2} to Object.assign({}, a, {b: 2})
[
"@babel/plugin-proposal-object-rest-spread",
{ loose: true, useBuiltIns: true },
],
// Only support the syntax, Webpack will handle it.
"@babel/syntax-dynamic-import",
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-proposal-nullish-coalescing-operator",
[
require("@babel/plugin-proposal-decorators").default,
{ decoratorsBeforeExport: true },
],
[
require("@babel/plugin-proposal-class-properties").default,
{ loose: true },
],
],
});
// Are already ES5, cause warnings when babelified.
module.exports.babelExclude = () => [
require.resolve("@mdi/js/mdi.js"),
require.resolve("hls.js"),
];
const outputPath = (outputRoot, latestBuild) =>
path.resolve(outputRoot, latestBuild ? "frontend_latest" : "frontend_es5");
const publicPath = (latestBuild, root = "") =>
latestBuild ? `${root}/frontend_latest/` : `${root}/frontend_es5/`;
/*
BundleConfig {
// Object with entrypoints that need to be bundled
entry: { [name: string]: pathToFile },
// Folder where bundled files need to be written
outputPath: string,
// absolute url-path where bundled files can be found
publicPath: string,
// extra definitions that we need to replace in source
defineOverlay: {[name: string]: value },
// if this is a production build
isProdBuild: boolean,
// If we're targeting latest browsers
latestBuild: boolean,
// If we're doing a stats build (create nice chunk names)
isStatsBuild: boolean,
// Names of entrypoints that should not be hashed
dontHash: Set<string>
}
*/
module.exports.config = {
app({ isProdBuild, latestBuild, isStatsBuild }) {
return {
entry: {
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",
},
outputPath: outputPath(paths.app_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
isStatsBuild,
};
},
demo({ isProdBuild, latestBuild, isStatsBuild }) {
return {
entry: {
main: path.resolve(paths.demo_dir, "src/entrypoint.ts"),
},
outputPath: outputPath(paths.demo_output_root, latestBuild),
publicPath: publicPath(latestBuild),
defineOverlay: {
__VERSION__: JSON.stringify(`DEMO-${env.version()}`),
__DEMO__: true,
},
isProdBuild,
latestBuild,
isStatsBuild,
};
},
cast({ isProdBuild, latestBuild }) {
const entry = {
launcher: path.resolve(paths.cast_dir, "src/launcher/entrypoint.ts"),
};
if (latestBuild) {
entry.receiver = path.resolve(
paths.cast_dir,
"src/receiver/entrypoint.ts"
);
}
return {
entry,
outputPath: outputPath(paths.cast_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
defineOverlay: {
__BACKWARDS_COMPAT__: true,
},
};
},
hassio({ isProdBuild, latestBuild }) {
return {
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,
dontHash: new Set(["entrypoint"]),
};
},
gallery({ isProdBuild, latestBuild }) {
return {
entry: {
entrypoint: path.resolve(paths.gallery_dir, "src/entrypoint.js"),
},
outputPath: outputPath(paths.gallery_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
};
},
};
-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 (yarn dev) and app-serve (yarn dev:serve): plain yarn 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 yarn 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 = `yarn ${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 yarn 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"
? "yarn build --stop"
: owner?.kind === "dev"
? `yarn ${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);
-34
View File
@@ -1,34 +0,0 @@
const fs = require("fs");
const path = require("path");
const paths = require("./paths.cjs");
const isTrue = (value) => value === "1" || value?.toLowerCase() === "true";
module.exports = {
isProdBuild() {
return (
process.env.NODE_ENV === "production" || module.exports.isStatsBuild()
);
},
isStatsBuild() {
return isTrue(process.env.STATS);
},
isTestBuild() {
return isTrue(process.env.IS_TEST);
},
isNetlify() {
return isTrue(process.env.NETLIFY);
},
version() {
const version = fs
.readFileSync(path.resolve(paths.root_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);
},
};
+32
View File
@@ -0,0 +1,32 @@
const fs = require("fs");
const path = require("path");
const paths = require("./paths.js");
module.exports = {
useRollup() {
return process.env.ROLLUP === "1";
},
isProdBuild() {
return (
process.env.NODE_ENV === "production" || module.exports.isStatsBuild()
);
},
isStatsBuild() {
return process.env.STATS === "1";
},
isTest() {
return process.env.IS_TEST === "true";
},
isNetlify() {
return process.env.NETLIFY === "true";
},
version() {
const version = fs
.readFileSync(path.resolve(paths.polymer_dir, "setup.py"), "utf8")
.match(/\d{8}\.\d+/);
if (!version) {
throw Error("Version not found");
}
return version[0];
},
};
-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",
},
});
Loaded 100 of 3939 files, more files were not shown because too many files have changed in this diff. Show more