From e114fdf52f1448332e9d6c2ccc87e40c406eb892 Mon Sep 17 00:00:00 2001 From: ameerabuf Date: Wed, 13 May 2026 20:25:48 +0300 Subject: [PATCH 01/18] rewritten simpler more structured plan --- .../context_ssot_restructure_c6889ec0.plan.md | 658 ++++++++++++++++++ 1 file changed, 658 insertions(+) create mode 100644 .cursor/plans/context_ssot_restructure_c6889ec0.plan.md diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md new file mode 100644 index 00000000..730d7e81 --- /dev/null +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -0,0 +1,658 @@ +--- +name: Context SSOT Restructure +overview: "Restructure the rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a single-source-of-truth system where structured data (params, defaults, types, term definitions) lives in YAML glossary files, and final markdown outputs are assembled by a lightweight build script. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets." +todos: + - id: phase-0-schema + content: Design YAML glossary schema and marker syntax for templates + status: pending + - id: phase-0-build + content: Build scripts/build-context.js (YAML + templates -> rules/ and docs/ markdown) + status: pending + - id: phase-0-validate + content: Build scripts/validate-context.js (check glossary data against TypeScript source) + status: pending + - id: phase-1-audit + content: "Interact: Audit and verify all ground truth claims via ad-hoc Vitest tests" + status: pending + - id: phase-1-glossary + content: "Interact: Create context/glossary.yaml with all verified terms, params, defaults" + status: pending + - id: phase-1-rules-templates + content: "Interact: Create rules template files (overview, config, triggers, effects, pitfalls)" + status: pending + - id: phase-1-docs-templates + content: "Interact: Create docs template files (guides, api, integration, examples)" + status: pending + - id: phase-1-build-validate + content: "Interact: Run build + validate, iterate until output is correct and readable" + status: pending + - id: phase-1-replace + content: "Interact: Replace old rules/ and docs/ with generated output, verify all builds pass" + status: pending + - id: phase-2-audit + content: "Motion: Audit and verify ground truth (API signatures, return types, scroll/pointer)" + status: pending + - id: phase-2-migrate + content: "Motion: Create glossary, templates, build, and replace (add new rules/ dir)" + status: pending + - id: phase-3-audit + content: "Motion-Presets: Audit all 74 presets params/defaults against source" + status: pending + - id: phase-3-migrate + content: "Motion-Presets: Create glossary, templates, build, and replace" + status: pending + - id: phase-3-cross-validate + content: "Cross-package validation: verify shared concepts are consistent across all three packages" + status: pending +isProject: false +--- + +# Context SSOT Restructure + +## Motivation and Idea + +### The problem + +This monorepo publishes three packages (`@wix/interact`, `@wix/motion`, `@wix/motion-presets`) alongside context files designed for two audiences: **LLM-facing rules** (so AI agents can correctly integrate the packages) and **human-facing docs** (for developer onboarding and reference). Today these context files suffer from five interconnected problems: + +1. **Multiple contradicting sources of truth.** The same concept is described in different files with different phrasing, different defaults, and sometimes outright conflicting claims. For example, `allowA11yTriggers` defaults to `false` in one file and `true` in another; `ParallaxScroll` accepts a `speed` param in docs but the code uses `parallaxFactor`; trigger counts vary between 7, 8, and 9 depending on which file you read. A deep audit found **8 critical discrepancies** where docs would cause broken integrations, and **10 more significant ones**. +2. **No common structure.** Each package organizes its context differently. Interact has flat trigger-specific rule files plus two overlapping hub files; Motion has no rules at all; Motion-Presets has YAML-frontmatter rule files split by category. The docs folders vary in depth, naming, and section layout. There is no template or convention that applies across packages. +3. **Stale or incorrect information.** Defaults, param names, return types, and API signatures in the context files do not match the current implementation. There is no mechanism to detect this drift. +4. **Heavy repetition.** FOUC prevention is explained in 6 different files; element resolution order appears in 4; entry-point setup is repeated across every package's getting-started material. Each copy drifts independently. +5. **Broken links and scaffolding.** Over 36 internal links point to files that do not exist. Multiple sections are marked "TBD". README index pages link to planned-but-never-written guides. This erodes trust in the documentation for both humans and LLMs. + +Together, these create a **continuous development problem**: making any change to the context requires touching many files across multiple directories, producing large PRs that are hard to review and prone to introducing new inconsistencies. The cost of keeping context accurate compounds over time. + +### The idea + +Replace the current ad-hoc markdown files with a **structured, build-based system** where: + +- **Each piece of information is defined once** in a YAML glossary file (one per package). The glossary holds the data that is most prone to going stale: parameter names and types, default values, API signatures, term definitions (with separate LLM and human phrasings), and known caveats. +- **Markdown template files** provide the document structure and prose. They contain markers (e.g., `{{term:trigger-viewEnter.params-table}}`) where glossary data should be injected. Templates are authored separately for rules (compact, LLM-optimized) and docs (narrative, human-friendly). +- **A lightweight build script** reads the glossary and templates, performs marker replacement, and writes the final `rules/` and `docs/` output files. +- **A validation script** checks glossary entries against TypeScript source code, catching drift before it reaches the published context. + +This means: + +- Changing a default value or param name is a **one-line YAML edit** that propagates everywhere. +- Rules and docs always agree because they draw from the same data. +- The validation script catches code-vs-context drift in CI. +- Each package follows the same structure, making the system predictable and reviewable. + +### Why YAML for the glossary + +The glossary contains prose-heavy entries (descriptions, caveats) that humans will frequently hand-edit. YAML supports multi-line strings and inline comments natively, which makes authoring and PR review substantially easier than JSON. The motion-presets rules already use YAML frontmatter, so the pattern is familiar in this repo. Since the build script parses YAML into a plain JS object, switching to JSON later would be a trivial change. + +### Sequencing + +The migration is designed to proceed **one package at a time** (Interact, then Motion, then Motion-Presets), with each package's old context files replaced only after the new mechanism is fully built, validated, and reviewed. This keeps PRs scoped and reviewable, and ensures no package is left in a half-migrated state. + +--- + +## Audit Findings (Baseline) + +This section captures the findings from the deep analysis of all 72 context files across the three packages and their comparison against source code. These findings serve as the ground truth for the migration. + +### Current State Inventory + +**File counts:** + + +| Package | `rules/` files | `docs/` files | Total | +| -------------------------------------- | -------------- | ------------- | ------ | +| Interact (`@wix/interact`) | 7 | 26 | 33 | +| Motion (`@wix/motion`) | 0 | 20 | 20 | +| Motion-Presets (`@wix/motion-presets`) | 5 | 14 | 19 | +| **Total** | **12** | **60** | **72** | + + +**Structural asymmetry:** + +- **Interact** has both `rules/` (flat trigger-focused files: `click.md`, `hover.md`, `viewenter.md`, `viewprogress.md`, `pointermove.md`, plus two hub files `full-lean.md` at 692 lines and `integration.md` at 329 lines) and `docs/` (nested into `guides/`, `api/`, `examples/`, `integration/`, `advanced/`). +- **Motion** has only `docs/` (nested into `api/`, `categories/`, `guides/`, `examples/`) plus a stale internal `PLAN_DOCS.md`. No `rules/` directory exists at all. +- **Motion-Presets** has both `rules/` (5 files under `presets/` with YAML frontmatter, split by category) and `docs/` (14 files nested per category with individual preset pages). + +**Existing patterns for selective LLM reading:** + +- Interact rules: `## Table of Contents` with `#anchor` links; `---` thematic breaks between sections; no YAML frontmatter. +- Motion-Presets rules: YAML frontmatter with `name`/`description` (agent-loading hints); per-file TOCs down to per-preset anchors. +- Typical file sizes: 190-280 lines for single-trigger interact docs, 330 lines for integration hub, 690 lines for `full-lean`, 210-398 lines for presets rule files. + +### Discrepancies: Docs/Rules vs Code + +#### Critical (would cause broken integrations if an LLM follows the docs) + + +| # | Topic | What docs/rules say | What the code does | Source files | +| --- | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | +| 1 | `allowA11yTriggers` default | `rules/integration.md`: **false**; `docs/api/types.md`: **true** | Code: **true** -- `click` auto-maps to `activate`, `hover` to `interest` | `src/handlers/index.ts` | +| 2 | `ParallaxScroll` param name | All docs consistently use `**speed`** | Code: `**parallaxFactor`** (default `0.5`) | `motion-presets/src/library/scroll/ParallaxScroll.ts`, `types.ts` | +| 3 | `Pulse` intensity default | `docs/ongoing/pulse.md`: **1.0** | Code: **0** | `motion-presets/src/library/ongoing/Pulse.ts` | +| 4 | `ArcIn` default direction | `docs/entrance/arc-in.md`: `**'bottom'`** | Code: `**'right'`** | `motion-presets/src/library/entrance/ArcIn.ts` | +| 5 | `namedEffect` shape | Many docs use bare string: `namedEffect: 'FadeIn'` | Code requires object: `namedEffect: { type: 'FadeIn' }` | `motion/src/api/common.ts` `getNamedEffect` | +| 6 | `getCSSAnimation` return type | `api/core-functions.md`, `performance.md`: **string** | Code: **array of objects** `({ target, animation, keyframes, ... })` | `motion/src/api/cssAnimations.ts` | +| 7 | `AnimationEndParams.effectId` | Typed and documented as wiring mechanism | Handler **ignores it** (`__` param) | `interact/src/handlers/animationEnd.ts` | +| 8 | `viewProgress` params | `api/types.md` maps `viewProgress: ViewEnterParams` | Handler ignores those params; scroll options come from `Interact.setup({ scrollOptionsGetter })` | `interact/src/handlers/viewProgress.ts` | + + +#### Significant (causes confusion, may lead to subtle bugs) + + +| # | Topic | Discrepancy | +| --- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| 9 | Sticky/tall-wrapper ViewTimeline source | `viewprogress.md` Rule 3: `key` on tall wrapper = source. `full-lean.md`: sticky child = source. Contradicts itself. | +| 10 | Trigger count | `guides/README.md` says 7; `understanding-triggers.md` says 9; actual `TriggerType` union: **9** members | +| 11 | `pageVisible` trigger | Omitted from most trigger tables; only in `api/types.md`. Actually exists in code, uses viewEnter's IntersectionObserver handler | +| 12 | Mouse preset count | Rules: 9; `mouse/README.md`: 12; barrel export: **11** (plus CustomMouse = 12 total) | +| 13 | Ongoing preset count | `presets-main.md`: 14; `ongoing/README.md`: 16; barrel exports: **13**; DVD is not exported | +| 14 | Total preset count | Docs: "82+"; rules enumerate 61; barrel exports: **19 + 19 + 13 + 12 + 12 = 75** | +| 15 | Angle convention | `presets-main.md`: 0 = right; `_template.md`: 0 = up. Code: **0 = right** in most presets | +| 16 | `customEffect` signature | Varies: 2-arg in rules, 3-arg in some docs. Actual depends on context (time: `progress` number; pointer: `Progress { x, y, v, active }`) | +| 17 | `TurnScroll.rotation` param | Typed in `types.ts` but **ignored** in implementation (fixed +/-45deg) | +| 18 | `ParallaxScroll.range` param | Typed but **unused** in `ParallaxScroll.ts` implementation | + + +#### Minor (quality / completeness) + + +| # | Topic | +| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 19 | **36+ broken internal links** across all packages: references to nonexistent files like `testing.md`, `performance.md`, `playground/`, `scroll-animations.md`, etc. | +| 20 | **5+ TBD placeholder sections** in interact docs (`configuration-structure`, `effects-and-animations`, `state-management`, `lists`, `custom-elements`) | +| 21 | **Code typos in docs**: `sytle`, `hitAea`, `docuement`, `getScrgetWebAnimationubScene`, truncated/invalid snippets | +| 22 | `**unit` vs `type` for length objects**: rules use both `{ value, type: 'px' }` and `{ value, unit: 'px' }` interchangeably | +| 23 | `**Interact.getElement`** referenced in docs but does not exist as a public API | + + +### Repetition Analysis + +The same information is repeated across multiple files with inconsistent phrasing: + + +| Concept | Files that describe it | Copies | +| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | +| FOUC prevention (`generate` + `initial`) | `rules/integration.md`, `rules/viewenter.md`, `rules/full-lean.md`, `docs/api/functions.md`, `docs/examples/entrance-animations.md`, `docs/guides/getting-started.md` | 6 | +| Element resolution order | `rules/integration.md`, `rules/full-lean.md`, `docs/api/element-selection.md`, `docs/guides/configuration-structure.md` | 4 | +| Entry-point setup | `rules/integration.md`, `docs/README.md`, `docs/guides/getting-started.md`, `docs/integration/react.md` | 4 | +| Trigger inventory table | `rules/full-lean.md`, `rules/integration.md`, `docs/guides/understanding-triggers.md`, `docs/api/types.md` | 4 (with different counts) | +| `registerEffects` usage | motion `docs/getting-started.md`, interact `rules/integration.md`, presets `docs/presets/README.md`, presets `rules/presets-main.md` | 4 | +| Scroll range semantics | interact `rules/viewprogress.md`, presets `rules/scroll-presets.md`, motion `docs/core-concepts.md`, presets `docs/scroll/README.md` | 4 | +| Stagger/sequence formula | motion `docs/core-concepts.md`, `docs/api/sequence.md`, `docs/api/get-sequence.md`, interact `docs/guides/sequences.md` | 4 | +| Reduced motion / a11y | Described independently across ~8 files in all three packages | ~8 | + + +### Verified Ground Truth: What Each Package Actually Contains + +#### `@wix/interact` -- Declarative Interaction Layer + +**Entry points:** `@wix/interact` (vanilla), `@wix/interact/react`, `@wix/interact/web` + +**Exports:** + +- `Interact` class (static + instance API) +- Functions: `add`, `remove`, `generate` +- React: `Interaction` component, `createInteractRef` +- Web: `InteractElement` custom element (registered via `Interact.defineInteractElement`) + +**Config schema (`InteractConfig`):** `{ effects: Record, interactions: Interaction[], sequences?: Record, conditions?: Record }` + +**9 trigger types (from `TriggerType` union):** `hover`, `click`, `viewEnter`, `viewProgress`, `pointerMove`, `activate`, `interest`, `animationEnd`, `pageVisible` + +**Handler mappings (from `handlers/index.ts`):** + +- `viewEnter`, `pageVisible` -> IntersectionObserver handler +- `hover` -> `mouseenter`/`mouseleave` (or `interest` preset if `allowA11yTriggers`) +- `click` -> `['click']` (or `activate` preset if `allowA11yTriggers`) +- `activate` -> `['click', 'keydown']` +- `interest` -> enter: `mouseenter`+`focusin`, leave: `mouseleave`+`focusout` +- `animationEnd` -> listens on source `animationend`, plays on target +- `viewProgress` -> ViewTimeline scrub or `getScrubScene` fallback +- `pointerMove` -> `getScrubScene` + pointer library + +**3 effect types:** `TimeEffect` (has `duration`), `ScrubEffect` (has `rangeStart`/`rangeEnd`), `StateEffect` (has `transition`/`transitionProperties`) + +`**triggerType` values:** `'once' | 'repeat' | 'alternate' | 'state'`; defaults: `'once'` for viewEnter/pageVisible/animationEnd, `'alternate'` for hover/click/activate/interest + +`**stateAction` values:** `'add' | 'remove' | 'toggle' | 'clear'`; default: `'toggle'` + +**Condition types:** `'media' | 'container' | 'selector'` only (no `'custom'`) + +**Key param defaults:** + +- `ViewEnterParams.threshold`: `0.2` +- `PointerMoveParams.axis`: `'y'` +- `PointerMoveParams.hitArea`: undefined (covers document body) + +#### `@wix/motion` -- Core Animation Engine + +**Exported functions:** `getWebAnimation`, `getScrubScene`, `getCSSAnimation`, `prepareAnimation`, `getElementCSSAnimation`, `getElementAnimation`, `getSequence`, `createAnimationGroups`, `registerEffects` + +**Exported utilities:** `getCssUnits`, `getEasing`, `getJsEasing`, all Penner-style easings + `jsEasings`/`cssEasings` maps + +**Type-only exports (not constructable):** `AnimationGroup`, `Sequence` + +**Key behaviors:** + +- `getAnimation` (internal, used by interact): chooses CSS path (if preset has `style`) or WAAPI path (`getWebAnimation`) +- `getCSSAnimation` returns array of CSS rule descriptor objects, not a string +- ViewTimeline: native (`window.ViewTimeline`) with `duration: 'auto'`; fallback: `duration: 99.99` with manual scrub via `getScrubScene` +- Pointer: without keyframes uses factory `MouseAnimationInstance`; with keyframes uses `AnimationGroup.progress()` +- `registerEffects(effects)` merges into internal registry; presets resolve by `namedEffect.type` string +- `fastdom` used for DOM batching (measure/mutate), not re-exported + +`**AnimationGroup` API:** `play`, `pause`, `reverse`, `cancel`, `progress(p)`, `setPlaybackRate`, `getProgress`, `onFinish`, `ready`, `finished`, `playState` + +`**Sequence`:** extends `AnimationGroup`; stagger formula: `offset[i] = easing(i / last) * last * offsetMs` (integer-truncated); supports `addGroups`/`removeGroups` + +`**RangeOffset` names:** `'entry' | 'exit' | 'contain' | 'cover' | 'entry-crossing' | 'exit-crossing'` + +#### `@wix/motion-presets` -- Ready-Made Effects + +**5 categories, 75 exported presets (from barrel):** + +- **Entrance (19):** ArcIn, BlurIn, BounceIn, CurveIn, DropIn, ExpandIn, FadeIn, FlipIn, FloatIn, FoldIn, GlideIn, RevealIn, ShapeIn, ShuttersIn, SlideIn, SpinIn, TiltIn, TurnIn, WinkIn +- **Scroll (19):** ArcScroll, BlurScroll, FadeScroll, FlipScroll, GrowScroll, MoveScroll, PanScroll, ParallaxScroll, RevealScroll, ShapeScroll, ShuttersScroll, ShrinkScroll, SkewPanScroll, SlideScroll, Spin3dScroll, SpinScroll, StretchScroll, TiltScroll, TurnScroll +- **Ongoing (13):** Bounce, Breathe, Cross, Flash, Flip, Fold, Jello, Poke, Pulse, Rubber, Spin, Swing, Wiggle (DVD exists but is NOT barrel-exported) +- **Mouse (12):** AiryMouse, BlobMouse, BlurMouse, BounceMouse, CustomMouse, ScaleMouse, SkewMouse, SpinMouse, SwivelMouse, Tilt3DMouse, Track3DMouse, TrackMouse +- **Background Scroll (12):** BgCloseUp, BgFade, BgFadeBack, BgFake3D, BgPan, BgParallax, BgPullBack, BgReveal, BgRotate, BgSkew, BgZoom, ImageParallax + +**Registration:** `registerEffects` is in `@wix/motion`, not in this package. Presets are plain modules keyed by `namedEffect.type`. Typical usage: `registerEffects({ FadeIn, ParallaxScroll, ... })`. + +**Preset module shapes:** namespace with `web`/`style`/`getNames` (most), mouse presets export `create` factories, some presets have `prepare` (background-scroll). + +**Shared params:** All mouse presets share `inverted?: boolean` (default `false`). Scroll presets support `range?: 'in' | 'out' | 'continuous'` (default varies per preset). Ongoing presets support `iterationDelay?: number` (default `0`). + +**Angle convention in code:** 0 = right, counterclockwise increases (90 = top). + +**Known type-vs-implementation mismatches in presets:** + +- `TurnScroll.rotation`: typed but ignored (fixed +/-45deg) +- `ParallaxScroll.range`: typed but unused +- `DVD`: typed and implemented but not barrel-exported + +### Cross-Package Shared Concepts (need SSOT) + + +| Concept | Owner (should be SSOT) | Referenced by | +| ------------------------------------------------------ | ---------------------- | ----------------- | +| `registerEffects` API | motion | interact, presets | +| `AnimationGroup` / `Sequence` types | motion | interact | +| `namedEffect` shape (`{ type: '...' }`) | motion | interact, presets | +| Scroll ranges (`RangeOffset`, range names) | motion | interact, presets | +| Pointer progress (`Progress { x, y, v, active }`) | motion | interact, presets | +| `EffectScrollRange` (`in`/`out`/`continuous`) | presets | presets only | +| Direction type families (`EffectFourDirections`, etc.) | presets | presets only | +| Easing values (CSS + JS) | motion | interact, presets | +| `prefers-reduced-motion` pattern | interact | motion, presets | +| Length/unit convention (`{ value, type }`) | motion | presets | + + +### Build and Test Infrastructure (Existing) + +- **Monorepo:** Yarn 4 workspaces, no Turbo/Nx +- **Build:** Vite for library bundles, `tsc` for types +- **Unit tests:** Vitest in all three packages (`jsdom` environment for interact) +- **E2E:** Playwright exists for `@wix/motion` only (`packages/motion/e2e/`). Interact has a CI workflow referencing Playwright but no actual Playwright config or tests. +- **Docs deployment:** `apps/docs` copies `packages/interact/docs` into Vite dist via `scripts/copy-docs.js`. Rules are served raw from the docs app under `/rules/`. +- **No existing codegen, templating, or doc validation tooling** in the repo. + +--- + +## Recommendation: Glossary Format + +Use **YAML data files for structured/verifiable data** (parameter tables, defaults, type signatures, term definitions) combined with **markdown template files for prose and document structure**. A lightweight Node.js build script assembles the final rules/ and docs/ output. + +Why this over pure-markdown-with-frontmatter: + +- YAML is machine-parseable, so defaults and params can be **validated against TypeScript source** automatically +- The current rules already contain substantial structured data (param tables, trigger maps, preset catalogs) that maps naturally to YAML +- Prose stays in markdown where it belongs -- the YAML only holds the data that is prone to going stale +- motion-presets rules already use YAML frontmatter, so the pattern is familiar + +Why not a heavier templating system: + +- No existing codegen tooling in the repo; adding Handlebars/Nunjucks/etc. is overhead +- A simple marker-replacement script (find `{{glossary:term-id.field}}` in markdown, inject from YAML) is sufficient and easy to maintain + +--- + +## Directory Structure (per package) + +``` +packages// + context/ # NEW - single source of truth + glossary.yaml # All terms, params, defaults, descriptions + templates/ + rules/ # Markdown templates for LLM-facing output + overview.md # Template with {{markers}} for glossary data + ...per-package files... + docs/ # Markdown templates for human-facing output + README.md + guides/ + api/ + ... + rules/ # OUTPUT (generated, gitignored during dev) + docs/ # OUTPUT (generated, gitignored during dev) +``` + +A shared build script lives at the monorepo root: + +``` +scripts/ + build-context.js # Reads glossary YAML + templates, writes rules/ + docs/ + validate-context.js # Checks glossary data against TS source code +``` + +> **Open question for implementation:** Whether `rules/` and `docs/` should be gitignored (generated on CI) or committed (generated locally and checked in). The current `package.json` `"files"` field includes `"rules"` and `"docs"`, meaning they are published to npm. The simplest path is to **commit the generated output** and have CI verify it matches the source, similar to how lockfiles work. This avoids needing a pre-publish build step. Final decision deferred to implementation. + +--- + +## Glossary YAML Schema + +Each `glossary.yaml` contains entries like: + +```yaml +terms: + - id: trigger-viewEnter + name: viewEnter + category: trigger # trigger | effect-type | config | api | concept | preset + llm: "Fires when element crosses viewport threshold via IntersectionObserver." + human: "Triggers an animation when an element scrolls into the visible area of the page." + params: + - name: threshold + type: number + default: 0.2 + description: "Fraction of element that must be visible" + - name: inset + type: string + default: null + description: "Mapped to IntersectionObserver rootMargin" + caveats: + - "Same source+target: only triggerType 'once' is reliable" + sourceFile: src/types/triggers.ts # for validation + related: [trigger-pageVisible, concept-fouc] +``` + +Presets get a `presets` section (motion-presets only) with the same structure but preset-specific fields (`category: entrance|scroll|ongoing|mouse|backgroundScroll`, `triggerBinding`, etc.). + +> **Implementation note:** The exact YAML schema should be finalized during the Interact package phase after the full audit confirms which fields are actually needed. The schema above is a starting point. + +--- + +## Build Script Behavior + +`scripts/build-context.js`: + +1. For a given package, reads `context/glossary.yaml` +2. Reads each template file in `context/templates/rules/` and `context/templates/docs/` +3. Replaces markers like `{{term:trigger-viewEnter.params-table}}` with formatted markdown (table for params, inline text for descriptions, etc.) +4. Also supports `{{include:path/to/fragment.md}}` for shared prose blocks within the same package +5. Writes output to `rules/` and `docs/` + +`scripts/validate-context.js`: + +1. Reads `context/glossary.yaml` for a package +2. For each entry with a `sourceFile`, parses the TypeScript source (using regex or ts-morph -- to be decided during implementation) to extract: + - Type definitions (verify param names and types match) + - Default values in destructuring patterns (verify defaults match) +3. Reports mismatches as errors + +> **Scope constraint:** The build script should be simple -- under 300 lines. If the templating needs grow beyond simple marker replacement, reconsider the approach before adding complexity. + +--- + +## Phase 0: Infrastructure Setup + +Before any package migration, set up the shared tooling. + +### 0.1 Design the YAML glossary schema + +- Draft the schema based on the Interact package audit (from the previous conversation's findings) +- Decide on the marker syntax for templates (e.g., `{{term:id.field}}`, `{{table:id.params}}`) +- Decide on the set of "field renderers" needed (param-table, description, caveats-list, code-example) + +### 0.2 Build the context build script + +- `scripts/build-context.js` -- reads YAML, processes templates, writes output +- Must support running per-package: `node scripts/build-context.js --package interact` +- Add a `build:context` script to root `package.json` + +### 0.3 Build the validation script + +- `scripts/validate-context.js` -- reads YAML, checks against source +- Strategy for extracting ground truth from TS: Start with regex-based extraction of type members and destructuring defaults. If that proves brittle, evaluate [ts-morph](https://ts-morph.com/) (adds a devDep but is reliable). Decision deferred to implementation. +- Add a `validate:context` script to root `package.json` + +### 0.4 Decide on gitignore strategy + +- Test both approaches (committed vs generated) during Interact migration +- If committed: add a CI check that runs `build-context` and `git diff --exit-code` on the output + +--- + +## Phase 1: Interact Package (`@wix/interact`) + +### 1.1 Audit and verify ground truth + +Before writing any glossary entries, verify every claim in the current rules against the actual code. This is critical because the previous analysis found **8 critical discrepancies** and **10 significant ones**. + +**Verification approach:** Write ad-hoc Vitest tests (in a temporary test file, e.g., `packages/interact/test/context-audit.spec.ts`) that import source modules and assert the documented behavior. These tests serve as one-time verification and can be kept as regression tests afterward. + +Items to verify (from discrepancy list): + + +| # | What to verify | How | +| --- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| 1 | `allowA11yTriggers` default is `true` | Check `Interact` class static field and handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | +| 2 | `namedEffect` requires object `{ type: '...' }`, not bare string | Test that `getRegisteredEffect` resolves `{ type: 'FadeIn' }` but not `'FadeIn'` | +| 3 | All 9 trigger types exist in `TriggerType` union | Import and enumerate from [types/triggers.ts](packages/interact/src/types/triggers.ts) | +| 4 | `pageVisible` uses same handler as `viewEnter` | Check handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | +| 5 | `AnimationEndParams.effectId` is unused at runtime | Read [handlers/animationEnd.ts](packages/interact/src/handlers/animationEnd.ts) and verify the param is ignored | +| 6 | `viewProgress` handler ignores `ViewEnterParams` | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) | +| 7 | `triggerType` defaults: `'once'` for viewEnter, `'alternate'` for event triggers | Check [core/resolvers.ts](packages/interact/src/core/resolvers.ts) and handler code | +| 8 | `stateAction` default is `'toggle'` | Check [handlers/effectHandlers.ts](packages/interact/src/handlers/effectHandlers.ts) `createTransitionHandler` | +| 9 | `Condition.type` accepts only `'media' | 'container' | +| 10 | Sticky/tall-wrapper ViewTimeline: which element is the source | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) to determine actual behavior | +| 11 | Element resolution order (key cascade) | Read [core/Interact.ts](packages/interact/src/core/Interact.ts) `parseConfig` and [core/add.ts](packages/interact/src/core/add.ts) | +| 12 | `generate()` signature and return type | Import from [core/css.ts](packages/interact/src/core/css.ts) | + + +### 1.2 Create the Interact glossary + +Based on verified ground truth, populate `packages/interact/context/glossary.yaml` with entries for: + +**Categories and approximate entry counts:** + +- **Triggers** (9 entries): hover, click, viewEnter, viewProgress, pointerMove, activate, interest, animationEnd, pageVisible -- each with params, defaults, caveats +- **Effect types** (3 entries): TimeEffect, ScrubEffect, StateEffect -- each with all typed fields and defaults +- **Config types** (5-6 entries): InteractConfig, Interaction, Effect/EffectRef, SequenceConfig, Condition -- schema shapes +- **API** (8-10 entries): Interact.create, Interact.destroy, Interact.setup, add, remove, generate, Interact.registerEffects, Interact.getSequence, etc. -- signatures and behavior +- **Concepts** (5-6 entries): FOUC prevention, element resolution, a11y trigger mapping, conditions cascading, custom elements lifecycle +- **Enums/unions** (4-5 entries): triggerType (once/repeat/alternate/state), stateAction, Fill, CompositeOperation + +### 1.3 Design the Interact rules templates + +The current rules have two overlapping "hub" files (`full-lean.md` at 692 lines, `integration.md` at 329 lines) plus 5 trigger-specific files. The new structure should eliminate the overlap. + +**Proposed rules/ file set for Interact:** + + +| File | Purpose | Approx. lines | +| ------------- | ----------------------------------------------------------------------------------------- | ------------- | +| `overview.md` | Package purpose, entry points, imports, quick-start snippet | 60-80 | +| `config.md` | InteractConfig schema, Interaction shape, Effect/EffectRef, sequences, conditions | 150-200 | +| `triggers.md` | All 9 triggers: params, defaults, behavior, per-trigger caveats | 200-250 | +| `effects.md` | TimeEffect, ScrubEffect, StateEffect: fields, defaults, triggerType/stateAction semantics | 150-200 | +| `pitfalls.md` | FOUC, overflow:clip, same-element source+target, hit-area jitter, a11y mapping | 80-100 | + + +Each file gets: + +- YAML frontmatter (`name`, `description`) for agent-loading hints (matches existing presets pattern) +- A `## Table of Contents` with `#anchor` links for selective section reading +- `{{term:...}}` markers where glossary data should be injected + +**Key structural rule for LLM readability:** + +- Each file must be self-contained for its topic (no "see other file for the rest of this table") +- Cross-references between files use relative links but only for "related reading", never for completing a thought +- Param tables are compact: `| name | type | default | notes |` -- one row per param, no verbose descriptions +- Code examples are minimal (3-8 lines) and correct + +### 1.4 Design the Interact docs templates + +The current docs have 26 files but many are scaffolding (broken links, TBD sections, placeholder READMEs linking to nonexistent files). The new structure should contain only files with actual content. + +**Proposed docs/ file set for Interact:** + + +| File | Purpose | +| --------------------------- | ------------------------------------------------------- | +| `README.md` | Getting started, install, entry points, navigation | +| `guides/configuration.md` | Config structure explained for humans | +| `guides/triggers.md` | Trigger concepts, choosing triggers, combining triggers | +| `guides/effects.md` | Effect types explained, when to use which | +| `guides/sequences.md` | Sequence math, staggering, list integration | +| `guides/conditions.md` | Media queries, container queries, selector conditions | +| `guides/fouc.md` | FOUC prevention guide (generate + initial) | +| `guides/custom-elements.md` | `` usage and lifecycle | +| `api/README.md` | API overview and imports | +| `api/interact-class.md` | Static + instance methods | +| `api/functions.md` | add, remove, generate | +| `api/types.md` | Type reference | +| `integration/react.md` | React-specific guide | +| `examples/entrance.md` | Entrance animation recipes | +| `examples/hover-click.md` | Hover and click interaction recipes | + + +All other current files (broken-link READMEs, TBD placeholders, the nonexistent targets) are **dropped**. Content from `full-lean.md` that overlaps with docs is reconciled -- the rules version becomes the SSOT; the docs version becomes a prose rewrite of the same data. + +### 1.5 Build and validate + +1. Run `node scripts/build-context.js --package interact` to generate `rules/` and `docs/` +2. Run `node scripts/validate-context.js --package interact` to verify glossary against source +3. Manually review generated rules for LLM readability: + - Are tables compact and scannable? + - Can an LLM read just `triggers.md` and get everything it needs about triggers? + - Is the TOC + anchor pattern working for selective section reading? +4. Run the existing `apps/docs` build to verify docs still copy correctly + +### 1.6 Replace and verify + +1. Back up current `rules/` and `docs/` (they are in git, so this is just a safety step) +2. Replace with generated output +3. Run existing Vitest tests (`yarn workspace @wix/interact test`) to ensure nothing depends on specific rules/docs file paths internally +4. Verify `apps/docs` build still works (it copies from `packages/interact/docs`) +5. Verify the docs app `copy-docs.js` script handles the new file structure +6. Keep the `context-audit.spec.ts` tests as ongoing regression + +--- + +## Phase 2: Motion Package (`@wix/motion`) + +### 2.1 Audit and verify ground truth + +Motion currently has **no rules/** directory. Its docs have significant issues: `getCSSAnimation` return type is wrong in multiple files, `TriggerVariant` shape differs between tutorial and type docs, preset counts don't match, and several linked files don't exist. + +**Key items to verify:** + + +| # | What to verify | +| --- | -------------------------------------------------------------------------- | +| 1 | `getCSSAnimation` return type (array of objects, not string) | +| 2 | `AnimationGroup` is type-only export (not constructable by consumers) | +| 3 | `getWebAnimation` signature and return type union | +| 4 | `getScrubScene` signature, scroll vs pointer branches | +| 5 | `TriggerVariant` actual shape (`id`, `trigger`, `componentId`, `element?`) | +| 6 | `Sequence` stagger formula | +| 7 | `RangeOffset` range name enum | +| 8 | `prepareAnimation` behavior and `DomApi` contract | +| 9 | `CustomAnimation` rAF loop behavior for `customEffect` | +| 10 | ViewTimeline detection and fallback path | + + +### 2.2 Create glossary, templates, build, replace + +Same pattern as Interact: + +- `packages/motion/context/glossary.yaml` -- API functions, animation types, scroll/pointer concepts, `AnimationGroup`/`Sequence` APIs +- **New `rules/` directory** (Motion currently lacks one): `overview.md`, `api.md`, `animation-types.md`, `pitfalls.md` +- Restructured `docs/` -- drop `PLAN_DOCS.md`, fix or remove broken links, remove nonexistent targets, consolidate category docs that overlap with motion-presets docs + +**Important:** Motion's `docs/categories/` files (entrance-animations.md, scroll-animations.md, etc.) overlap heavily with motion-presets docs. These should be **removed or reduced to pointers** -- the preset details belong in motion-presets. Motion docs should cover the **engine API**, not preset catalogs. + +--- + +## Phase 3: Motion-Presets Package (`@wix/motion-presets`) + +### 3.1 Audit and verify ground truth + +Motion-presets rules are the most structured of the three (YAML frontmatter, per-category files), but have known data errors. + +**Key items to verify:** + + +| # | What to verify | +| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | All preset names match barrel exports (currently 19+19+13+11+12 = 74) | +| 2 | Per-preset params and defaults match implementation (ParallaxScroll `parallaxFactor` not `speed`, ArcIn default `'right'` not `'bottom'`, Pulse intensity default `0` not `1.0`) | +| 3 | Mouse preset count (11 exported, not 9 or 12) | +| 4 | DVD is NOT exported from barrel | +| 5 | Angle convention is 0 = right (not up) | +| 6 | `range` param on ParallaxScroll is typed but unused | +| 7 | `TurnScroll.rotation` is typed but unused | +| 8 | Background-scroll `data-motion-part` values and targeting | + + +**Verification approach:** For presets, the most effective verification is a script that: + +- Imports all barrel exports from `@wix/motion-presets` +- For each, checks it matches the glossary entry (name, category) +- For param defaults, reads the source destructuring patterns + +This can be a Vitest test file that programmatically checks all presets. + +### 3.2 Create glossary, templates, build, replace + +- `packages/motion-presets/context/glossary.yaml` -- includes a `presets` section with every preset's params and defaults +- **Rules:** Keep the current split-by-category approach (it works well) but generate tables from glossary: `overview.md`, `entrance.md`, `scroll.md`, `ongoing.md`, `mouse.md`, `background-scroll.md` +- **Docs:** Per-preset pages only for presets that warrant detailed explanation (not all 74 need a dedicated page). Category READMEs with param tables generated from glossary. Drop broken-link placeholder pages. + +### 3.3 Cross-package validation + +After all three packages are migrated: + +- Verify cross-package references (interact rules referencing motion concepts, presets referencing motion API) +- Ensure `registerEffects` is described consistently: defined in motion glossary, referenced in interact and presets +- Ensure shared concepts (scroll ranges, pointer progress, namedEffect shape) use the same terminology everywhere + +--- + +## Sequencing and Safety + +```mermaid +flowchart TD + P0[Phase 0: Build tooling] --> P1A[1.1: Audit Interact ground truth] + P1A --> P1B[1.2: Create Interact glossary] + P1B --> P1C[1.3-1.4: Create templates] + P1C --> P1D[1.5: Build and validate] + P1D --> P1E{Output matches expectations?} + P1E -->|No| P1C + P1E -->|Yes| P1F[1.6: Replace Interact rules+docs] + P1F --> P2A[2.1: Audit Motion ground truth] + P2A --> P2B[2.2: Create Motion glossary + templates + replace] + P2B --> P3A[3.1: Audit Presets ground truth] + P3A --> P3B[3.2: Create Presets glossary + templates + replace] + P3B --> P3C[3.3: Cross-package validation] +``` + + + +**Safety rule:** The old `rules/` and `docs/` files for a package are only deleted/replaced after: + +1. The new glossary is validated against source code +2. The build script produces output that passes manual review +3. Existing tests still pass +4. The docs app build still works (for interact) + +Each phase is a separate PR (or set of PRs) that can be reviewed independently. \ No newline at end of file From 9f8e67fe3dd6c8949d1f62d2578993cfc3cc2540 Mon Sep 17 00:00:00 2001 From: ameerabuf Date: Wed, 13 May 2026 20:30:28 +0300 Subject: [PATCH 02/18] spec for phase 0 - infra --- .../context_ssot_restructure_c6889ec0.plan.md | 2 +- context_ssot_spec.md | 978 ++++++++++++++++++ 2 files changed, 979 insertions(+), 1 deletion(-) create mode 100644 context_ssot_spec.md diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md index 730d7e81..eb4afd6d 100644 --- a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -4,7 +4,7 @@ overview: "Restructure the rules/ and docs/ across all three packages (@wix/inte todos: - id: phase-0-schema content: Design YAML glossary schema and marker syntax for templates - status: pending + status: completed - id: phase-0-build content: Build scripts/build-context.js (YAML + templates -> rules/ and docs/ markdown) status: pending diff --git a/context_ssot_spec.md b/context_ssot_spec.md new file mode 100644 index 00000000..f8d2cb51 --- /dev/null +++ b/context_ssot_spec.md @@ -0,0 +1,978 @@ +# Phase 0 Specification: Context SSOT Infrastructure + +This document is the detailed implementation spec for **Phase 0** of the [Context SSOT Restructure plan](.cursor/plans/context_ssot_restructure_c6889ec0.plan.md). Phase 0 delivers the shared tooling (YAML schema, marker syntax, build script, validation script) that all subsequent per-package phases depend on. + +--- + +## Table of Contents + +- [1. YAML Glossary Schema](#1-yaml-glossary-schema) + - [1.1 Top-Level Structure](#11-top-level-structure) + - [1.2 Term Entry Schema](#12-term-entry-schema) + - [1.3 Param Schema](#13-param-schema) + - [1.4 Field Schema (for config/type categories)](#14-field-schema-for-configtype-categories) + - [1.5 Value Schema (for enum categories)](#15-value-schema-for-enum-categories) + - [1.6 Category Taxonomy](#16-category-taxonomy) + - [1.7 ID Convention](#17-id-convention) + - [1.8 Validation Constraints](#18-validation-constraints) + - [1.9 Annotated Example: Interact glossary excerpt](#19-annotated-example-interact-glossary-excerpt) +- [2. Template Marker Syntax](#2-template-marker-syntax) + - [2.1 Marker Format](#21-marker-format) + - [2.2 Text Renderers](#22-text-renderers) + - [2.3 Formatted Renderers](#23-formatted-renderers) + - [2.4 Structural Markers](#24-structural-markers) + - [2.5 Escaping and Edge Cases](#25-escaping-and-edge-cases) + - [2.6 Renderer Output Formats](#26-renderer-output-formats) +- [3. Build Script (`scripts/build-context.js`)](#3-build-script-scriptsbuild-contextjs) + - [3.1 CLI Interface](#31-cli-interface) + - [3.2 Algorithm](#32-algorithm) + - [3.3 Error Handling](#33-error-handling) + - [3.4 Output File Rules](#34-output-file-rules) + - [3.5 Generated File Header](#35-generated-file-header) +- [4. Validation Script (`scripts/validate-context.js`)](#4-validation-script-scriptsvalidate-contextjs) + - [4.1 CLI Interface](#41-cli-interface) + - [4.2 Extraction Strategy](#42-extraction-strategy) + - [4.3 What Gets Validated](#43-what-gets-validated) + - [4.4 Report Format](#44-report-format) + - [4.5 Limitations and Future Considerations](#45-limitations-and-future-considerations) +- [5. Directory Layout](#5-directory-layout) +- [6. Gitignore and CI Strategy](#6-gitignore-and-ci-strategy) +- [7. Root `package.json` Changes](#7-root-packagejson-changes) +- [8. Dependencies](#8-dependencies) +- [9. Template File Conventions](#9-template-file-conventions) + - [9.1 Rules Templates](#91-rules-templates) + - [9.2 Docs Templates](#92-docs-templates) +- [10. Acceptance Criteria](#10-acceptance-criteria) + +--- + +## 1. YAML Glossary Schema + +### 1.1 Top-Level Structure + +Each package gets one `context/glossary.yaml`. The file has two top-level keys: + +```yaml +meta: + package: "@wix/interact" + version: "2.2.2" # tracks which package version was audited + lastAudit: "2026-05-13" # ISO date of last source-code verification + +terms: + - id: trigger-viewEnter + # ... term fields ... + - id: effect-type-time + # ... +``` + +| Key | Type | Required | Description | +| ------ | -------- | -------- | --------------------------------------------------- | +| `meta` | object | yes | Package identity and audit provenance | +| `terms`| array | yes | All glossary entries (triggers, types, API, etc.) | + +`meta` fields: + +| Field | Type | Required | Description | +| ----------- | ------ | -------- | ------------------------------------------------- | +| `package` | string | yes | npm package name | +| `version` | string | yes | Package version at last audit | +| `lastAudit` | string | yes | ISO date of last manual source-code verification | + +### 1.2 Term Entry Schema + +Every entry in `terms` has these fields: + +| Field | Type | Required | Description | +| ------------ | ------------- | -------- | ------------------------------------------------------------------------ | +| `id` | string | yes | Unique identifier. See [ID convention](#17-id-convention). | +| `name` | string | yes | Display name (e.g., `viewEnter`, `TimeEffect`, `Interact.create`). | +| `category` | enum string | yes | One of the [category values](#16-category-taxonomy). | +| `llm` | string | yes | Compact LLM-facing description (1-2 sentences). | +| `human` | string | yes | Narrative human-facing description (1-3 sentences). | +| `params` | array | no | Parameter definitions. See [1.3](#13-param-schema). | +| `fields` | array | no | Object field definitions. See [1.4](#14-field-schema-for-configtype-categories). | +| `values` | array | no | Enum member definitions. See [1.5](#15-value-schema-for-enum-categories).| +| `signature` | string | no | TypeScript function signature (for `api` category entries). | +| `returns` | string | no | Return type description (for `api` category entries). | +| `caveats` | array[string] | no | Known gotchas, pitfalls, or non-obvious behaviors. | +| `code` | string | no | Canonical code example (fenced as TypeScript by the renderer). | +| `sourceFile` | string | no | Relative path to the TS source file (for validation). | +| `sourceName` | string | no | Exported symbol name in `sourceFile` (for validation). | +| `related` | array[string] | no | IDs of related terms (used for cross-reference links). | + +**Exactly one of `params`, `fields`, or `values` should be present** when the term describes a structured type. Plain concepts and API entries may have none. A term may have both `params` and `caveats`, or `fields` and `code`, etc. + +### 1.3 Param Schema + +Used for triggers, effect types, API function options, and preset parameters. + +| Field | Type | Required | Description | +| ------------- | ------------------------ | -------- | -------------------------------------------------------- | +| `name` | string | yes | Parameter name as it appears in TypeScript | +| `type` | string | yes | TypeScript type (e.g., `number`, `'x' \| 'y'`, `string`) | +| `default` | string \| number \| null | yes | Default value. Use `null` for "no default" (required param), use the string `"undefined"` for optional with no default. | +| `description` | string | yes | One-line description | +| `required` | boolean | no | Defaults to `false`. Set `true` for non-optional params. | + +Example: + +```yaml +params: + - name: threshold + type: number + default: 0.2 + description: "Fraction of element that must be visible (0–1)" + - name: inset + type: string + default: "undefined" + description: "Mapped to IntersectionObserver rootMargin" + - name: effectId + type: string + default: null + required: true + description: "ID of the preceding effect to chain after" +``` + +### 1.4 Field Schema (for config/type categories) + +Used for config shapes like `InteractConfig`, `Interaction`, `Condition`, etc. + +| Field | Type | Required | Description | +| ------------- | ------------------------ | -------- | ----------------------------------------------- | +| `name` | string | yes | Field name | +| `type` | string | yes | TypeScript type | +| `required` | boolean | yes | Whether the field is required | +| `description` | string | yes | One-line description | + +Example: + +```yaml +fields: + - name: effects + type: "Record" + required: true + description: "Reusable effect definitions keyed by effectId" + - name: interactions + type: "Interaction[]" + required: true + description: "Array of trigger-to-effect bindings" + - name: sequences + type: "Record" + required: false + description: "Reusable sequence definitions keyed by sequenceId" + - name: conditions + type: "Record" + required: false + description: "Named conditions referenced by interactions and effects" +``` + +### 1.5 Value Schema (for enum categories) + +Used for union types like `TriggerType`, `TimeAnimationTriggerType`, `StateAction`, `Fill`. + +| Field | Type | Required | Description | +| ------------- | ------ | -------- | --------------------------------- | +| `value` | string | yes | The literal string value | +| `description` | string | yes | What this value means | + +Example: + +```yaml +values: + - value: "once" + description: "Fires once then stops. Default for viewEnter, pageVisible, animationEnd." + - value: "repeat" + description: "Fires every time the trigger activates." + - value: "alternate" + description: "Alternates between forward and reverse. Default for hover, click, activate, interest." + - value: "state" + description: "Applies a CSS state change via stateAction." +``` + +### 1.6 Category Taxonomy + +The `category` field uses one of these values: + +| Category | For | Example entries | +| ------------- | -------------------------------------------------- | ------------------------------------------------ | +| `trigger` | Trigger types that initiate interactions | `viewEnter`, `hover`, `click`, `pointerMove` | +| `effect-type` | Discriminated effect shapes | `TimeEffect`, `ScrubEffect`, `StateEffect` | +| `config` | Configuration object shapes and their fields | `InteractConfig`, `Interaction`, `Condition` | +| `api` | Exported functions and class methods | `Interact.create`, `add`, `remove`, `generate` | +| `concept` | Cross-cutting ideas explained in prose | FOUC prevention, element resolution, a11y mapping | +| `enum` | Union/literal types with enumerable values | `TriggerType`, `StateAction`, `Fill` | +| `preset` | Named effect presets (motion-presets package only) | `FadeIn`, `ParallaxScroll`, `Tilt3DMouse` | + +### 1.7 ID Convention + +IDs are kebab-case, prefixed with the category: + +``` +{category}-{name} +``` + +Examples: +- `trigger-viewEnter` +- `trigger-hover` +- `effect-type-time` +- `effect-type-scrub` +- `config-InteractConfig` +- `config-Interaction` +- `config-Condition` +- `api-Interact.create` +- `api-generate` +- `concept-fouc` +- `concept-element-resolution` +- `enum-TriggerType` +- `enum-TimeAnimationTriggerType` +- `enum-StateAction` +- `preset-FadeIn` (motion-presets only) + +**Rules:** +- IDs are globally unique within a glossary file. +- The `name` portion preserves the original casing of the TypeScript identifier (e.g., `viewEnter`, not `view-enter`). +- Cross-package `related` references use the format `@package/term-id` (e.g., `@motion/api-registerEffects`). Within the same package, use bare IDs. + +### 1.8 Validation Constraints + +The build script validates these constraints before producing output: + +| Constraint | Error Level | Description | +| --------------------------------- | ----------- | ------------------------------------------------------------ | +| Unique IDs | error | No duplicate `id` values within a glossary | +| Required fields present | error | Every term has `id`, `name`, `category`, `llm`, `human` | +| Valid category | error | `category` is one of the enumerated values | +| Params have required fields | error | Each param has `name`, `type`, `default`, `description` | +| Fields have required fields | error | Each field has `name`, `type`, `required`, `description` | +| Values have required fields | error | Each value has `value`, `description` | +| No orphan related refs | warning | Every ID in `related` exists in the same glossary or uses `@package/` prefix | +| `sourceFile` path exists | warning | The referenced file exists on disk | + +### 1.9 Annotated Example: Interact glossary excerpt + +This is a representative sample showing how the Interact package glossary will look. It covers one entry from each category to demonstrate the schema in practice. + +```yaml +meta: + package: "@wix/interact" + version: "2.2.2" + lastAudit: "2026-05-13" + +terms: + # --- Trigger --- + - id: trigger-viewEnter + name: viewEnter + category: trigger + llm: >- + Fires when element crosses viewport threshold via IntersectionObserver. + pageVisible uses the same handler. + human: >- + Triggers an animation when an element scrolls into the visible area + of the page. Uses IntersectionObserver under the hood, so it works + even for elements that are already in the viewport on page load. + params: + - name: threshold + type: number + default: 0.2 + description: "Fraction of element that must be visible (0–1)" + - name: inset + type: string + default: "undefined" + description: "Mapped to IntersectionObserver rootMargin" + - name: useSafeViewEnter + type: boolean + default: false + description: "Use fallback observer strategy for edge cases" + caveats: + - >- + When source and target are the same element, only triggerType 'once' + is reliable. Other types cause the animation to shift the element + out of the viewport, triggering rapid re-fires. + sourceFile: src/types/triggers.ts + sourceName: ViewEnterParams + related: + - trigger-pageVisible + - concept-fouc + - enum-TimeAnimationTriggerType + + # --- Effect type --- + - id: effect-type-time + name: TimeEffect + category: effect-type + llm: >- + Time-based effect with explicit duration. Used with hover, click, + viewEnter, animationEnd, activate, interest triggers. + human: >- + An effect that runs over a fixed duration in milliseconds. This is + the most common effect type, used for entrance animations, hover + responses, and click interactions. + params: + - name: duration + type: number + default: null + required: true + description: "Animation duration in milliseconds" + - name: easing + type: string + default: "undefined" + description: "CSS easing function string" + - name: iterations + type: number + default: "undefined" + description: "Number of iterations" + - name: alternate + type: boolean + default: "undefined" + description: "Alternate direction on each iteration" + - name: fill + type: Fill + default: "undefined" + description: "Animation fill mode" + - name: reversed + type: boolean + default: "undefined" + description: "Reverse the animation direction" + - name: delay + type: number + default: "undefined" + description: "Delay before animation starts in ms" + - name: triggerType + type: TimeAnimationTriggerType + default: "undefined" + description: "How the trigger repeats. Per-trigger defaults apply." + - name: composite + type: CompositeOperation + default: "undefined" + description: "WAAPI composite operation" + caveats: + - >- + Must also include exactly one effect property: namedEffect, + keyframeEffect, or customEffect. + sourceFile: src/types/effects.ts + sourceName: TimeEffect + related: + - effect-type-scrub + - effect-type-state + - enum-TimeAnimationTriggerType + + # --- Config --- + - id: config-InteractConfig + name: InteractConfig + category: config + llm: >- + Top-level configuration object passed to Interact.create(). + effects is required (not optional despite some docs claiming otherwise). + human: >- + The root configuration object that defines all interactions for a + page or component. Contains effect definitions, interaction bindings, + and optional sequences and conditions. + fields: + - name: effects + type: "Record" + required: true + description: "Reusable effect definitions keyed by effectId" + - name: interactions + type: "Interaction[]" + required: true + description: "Array of trigger-to-effect bindings" + - name: sequences + type: "Record" + required: false + description: "Reusable sequence definitions keyed by sequenceId" + - name: conditions + type: "Record" + required: false + description: "Named conditions referenced by interactions and effects" + caveats: + - >- + effects is REQUIRED in the TypeScript type despite some + current docs/rules describing it as optional. + sourceFile: src/types/config.ts + sourceName: InteractConfig + related: + - config-Interaction + - config-Condition + + # --- API --- + - id: api-Interact.create + name: Interact.create + category: api + llm: >- + Creates a new Interact instance from config. Multiple calls create + independent instances. Returns the instance. + human: >- + Initializes the interaction system with a configuration object. + Call this once per logical scope (page, component, lazy section). + Returns an instance you can use to add elements or destroy later. + signature: "static create(config: InteractConfig, options?: { useCustomElement?: boolean }): Interact" + returns: "Interact instance" + code: | + const instance = Interact.create(config); + sourceFile: src/core/Interact.ts + sourceName: create + related: + - api-Interact.destroy + - config-InteractConfig + + # --- Concept --- + - id: concept-fouc + name: FOUC Prevention + category: concept + llm: >- + Requires BOTH generate(config) to produce critical CSS AND + data-interact-initial="true" on elements. Using only one has no effect. + human: >- + Flash of Un-animated Content (FOUC) occurs when entrance-animated + elements briefly show their final state before the animation runs. + Preventing it requires two coordinated steps: generating critical CSS + that hides elements in their pre-animation state, and marking those + elements so the runtime knows to apply the hiding styles. + caveats: + - "Only valid for viewEnter + triggerType 'once' where source and target are the same element." + - "generate() should run server-side or at build time." + code: | + import { generate } from '@wix/interact/web'; + const css = generate(config); + // Inject into : + // Mark elements: data-interact-initial="true" + related: + - api-generate + - trigger-viewEnter + + # --- Enum --- + - id: enum-TimeAnimationTriggerType + name: TimeAnimationTriggerType + category: enum + llm: >- + Controls repeat behavior: 'once' (default for viewEnter/pageVisible/animationEnd), + 'repeat', 'alternate' (default for hover/click/activate/interest), 'state'. + human: >- + Determines how an effect responds when its trigger fires multiple + times. The default depends on the trigger type. + values: + - value: "once" + description: "Fires once then stops. Default for viewEnter, pageVisible, animationEnd." + - value: "repeat" + description: "Fires every time the trigger activates." + - value: "alternate" + description: "Alternates forward/reverse. Default for hover, click, activate, interest." + - value: "state" + description: "Applies CSS state via stateAction instead of running an animation." + sourceFile: src/types/effects.ts + sourceName: TimeAnimationTriggerType + related: + - effect-type-time + - enum-StateAction +``` + +--- + +## 2. Template Marker Syntax + +### 2.1 Marker Format + +All markers use double-brace delimiters: + +``` +{{type:argument}} +``` + +There are two families of markers: + +1. **Term markers** — reference glossary data: `{{term:id.renderer}}` +2. **Structural markers** — control document assembly: `{{include:path}}` + +### 2.2 Text Renderers + +These inject a glossary field value as plain text (no formatting added): + +| Marker | Output | +| ------------------------- | ---------------------------------------- | +| `{{term:id.name}}` | The `name` field | +| `{{term:id.llm}}` | The `llm` description | +| `{{term:id.human}}` | The `human` description | +| `{{term:id.signature}}` | The `signature` field (inline code) | +| `{{term:id.returns}}` | The `returns` field | + +`signature` is wrapped in backtick fences when rendered: + +```markdown +`static create(config: InteractConfig, options?: { useCustomElement?: boolean }): Interact` +``` + +### 2.3 Formatted Renderers + +These generate structured markdown from array fields: + +| Marker | Source Field | Output Format | +| ---------------------------- | ------------ | ------------------------------ | +| `{{term:id.params-table}}` | `params` | Markdown table | +| `{{term:id.fields-table}}` | `fields` | Markdown table | +| `{{term:id.values-table}}` | `values` | Markdown table | +| `{{term:id.caveats-list}}` | `caveats` | Bullet list | +| `{{term:id.code}}` | `code` | Fenced TypeScript code block | + +### 2.4 Structural Markers + +| Marker | Behavior | +| ------------------------------- | -------------------------------------------------------------- | +| `{{include:path/to/fragment.md}}` | Replaced with the contents of the referenced file. Path is relative to the package's `context/templates/` directory. Included files are also processed for markers (single level of nesting; includes within includes are not resolved). | + +### 2.5 Escaping and Edge Cases + +| Scenario | Behavior | +| ---------------------------------- | ------------------------------------------------------------- | +| Marker inside fenced code block | **Not replaced.** The build script skips markers that appear between `` ``` `` fences. This allows documenting the marker syntax itself. | +| Marker with unknown term ID | **Build error.** The script exits with code 1 and reports the file, line number, and unresolved marker. | +| Marker with unknown renderer | **Build error.** Same as above. | +| Term exists but requested field is empty/missing | **Build error** for required renderers (`llm`, `human`, `name`). **Renders as empty string** for optional fields (`code`, `caveats`, `signature`). When `params`, `fields`, or `values` is missing and a table renderer is called, renders the string `*No parameters.*`, `*No fields.*`, or `*No values.*` respectively. | +| `{{include:...}}` target not found | **Build error.** Reports the missing file path. | +| Literal `{{` in output | Use `\{{` to produce a literal `{{` in the rendered output. | + +### 2.6 Renderer Output Formats + +**`params-table`** produces: + +```markdown +| Param | Type | Default | Description | +| ----- | ---- | ------- | ----------- | +| `threshold` | `number` | `0.2` | Fraction of element that must be visible (0–1) | +| `inset` | `string` | — | Mapped to IntersectionObserver rootMargin | +``` + +Rules: +- Param names and types are wrapped in backticks. +- `default: null` (required param) renders as `**required**`. +- `default: "undefined"` (optional, no default) renders as `—`. +- All other defaults are wrapped in backticks. +- If `required: true`, a bold `**required**` is used in the Default column regardless of the `default` value. + +**`fields-table`** produces: + +```markdown +| Field | Type | Required | Description | +| ----- | ---- | -------- | ----------- | +| `effects` | `Record` | yes | Reusable effect definitions keyed by effectId | +| `interactions` | `Interaction[]` | yes | Array of trigger-to-effect bindings | +| `sequences` | `Record` | no | Reusable sequence definitions keyed by sequenceId | +``` + +**`values-table`** produces: + +```markdown +| Value | Description | +| ----- | ----------- | +| `'once'` | Fires once then stops. Default for viewEnter, pageVisible, animationEnd. | +| `'repeat'` | Fires every time the trigger activates. | +``` + +Values are wrapped in single quotes inside backticks. + +**`caveats-list`** produces: + +```markdown +- ⚠️ When source and target are the same element, only triggerType 'once' is reliable. +- ⚠️ generate() should run server-side or at build time. +``` + +Each caveat gets a `⚠️` prefix for visual scanning. + +**`code`** produces: + +````markdown +```typescript +const instance = Interact.create(config); +``` +```` + +The `code` field value is wrapped in a TypeScript fenced block. + +--- + +## 3. Build Script (`scripts/build-context.js`) + +### 3.1 CLI Interface + +```bash +node scripts/build-context.js --package [--package ] [--all] [--dry-run] [--verbose] +``` + +| Flag | Description | +| ------------ | ------------------------------------------------------------- | +| `--package` | Package directory name (e.g., `interact`, `motion`, `motion-presets`). Repeatable. | +| `--all` | Process all packages that have a `context/` directory. | +| `--dry-run` | Validate and report what would be written, without writing. | +| `--verbose` | Print each marker resolution to stdout. | + +**Exit codes:** +- `0` — success, all files written. +- `1` — one or more errors (unresolved markers, missing terms, schema violations). No files are written on error. + +### 3.2 Algorithm + +For each package: + +1. **Read glossary.** Parse `packages//context/glossary.yaml` using the `yaml` npm package. Validate against the schema constraints in [1.8](#18-validation-constraints). Abort on error. + +2. **Index terms.** Build a `Map` for O(1) lookups. + +3. **Discover templates.** Recursively glob `packages//context/templates/rules/**/*.md` and `packages//context/templates/docs/**/*.md`. + +4. **Process each template.** + - Read the file contents. + - Identify fenced code blocks (``` regions) and mark their line ranges as "skip zones." + - For each line outside skip zones, find all `{{...}}` markers using regex: `/(? + +``` + +This prevents accidental edits to generated files and points to the source. + +--- + +## 4. Validation Script (`scripts/validate-context.js`) + +### 4.1 CLI Interface + +```bash +node scripts/validate-context.js --package [--all] [--fix] [--json] +``` + +| Flag | Description | +| ----------- | -------------------------------------------------------------- | +| `--package` | Package directory name. Repeatable. | +| `--all` | Validate all packages with a `context/` directory. | +| `--fix` | Write corrected values back to glossary (future; not in v1). | +| `--json` | Output report as JSON instead of human-readable text. | + +**Exit codes:** +- `0` — all checks pass. +- `1` — one or more validation errors. + +### 4.2 Extraction Strategy + +**Phase 0 uses regex-based extraction.** No additional dependencies. + +The script extracts ground truth from TypeScript source using these patterns: + +**Type member extraction** (for verifying param/field names and types): + +```javascript +// Match: name?: type; or name: type; +/^\s*(\w+)(\?)?:\s*(.+?);/gm +``` + +Applied to the content of the type block identified by `sourceName` in the file at `sourceFile`. + +**Type block identification:** + +```javascript +// Match: export type Name = { ... } (handles multi-line) +/export\s+type\s+NAME\s*=\s*\{([^}]*(?:\{[^}]*\}[^}]*)*)\}/s +``` + +Where `NAME` is the `sourceName` from the glossary entry. + +**Destructuring default extraction** (for verifying default values): + +```javascript +// Match: name = defaultValue in destructuring patterns +/(\w+)\s*=\s*([^,}\n]+)/g +``` + +**Enum/union extraction** (for verifying enum values): + +```javascript +// Match: | 'value' in union types +/'\s*([^']+)\s*'/g +``` + +**Fallback plan:** If regex extraction proves unreliable for a specific pattern (e.g., complex generic types, conditional types), the validation script should: +1. Log a warning that the entry could not be automatically verified. +2. Continue without failing the build. +3. The entry gets flagged for manual review. + +If more than 30% of entries cannot be automatically verified, evaluate adding `ts-morph` as a devDependency. This decision is deferred to implementation. + +### 4.3 What Gets Validated + +For each glossary entry that has both `sourceFile` and `sourceName`: + +| Check | What it does | Severity | +| ---------------------- | -------------------------------------------------------------------------------- | -------- | +| File exists | `sourceFile` resolves to an existing `.ts` file | error | +| Symbol exists | `sourceName` appears as an exported type/const/function in the file | error | +| Param names match | Every `params[].name` exists as a member of the source type | error | +| Param types match | Each param's `type` matches the source type annotation (normalized, see below) | warning | +| Field names match | Every `fields[].name` exists as a member of the source type | error | +| Value members match | Every `values[].value` appears in the source union type | error | +| No missing members | Source type has no members missing from the glossary params/fields | warning | +| Export still exists | For `api` entries, the symbol is still exported from the package entry point | warning | + +**Type normalization:** Before comparing types, both the glossary type and the source type are normalized: whitespace is collapsed, `readonly` is stripped, import-path qualifiers are removed. This prevents false positives from formatting differences. + +### 4.4 Report Format + +**Human-readable (default):** + +``` +Validating @wix/interact glossary (42 terms, 28 with sourceFile)... + +✓ trigger-viewEnter — ViewEnterParams in src/types/triggers.ts — 3/3 params match +✗ trigger-hover — no sourceFile (skipped) +✗ config-InteractConfig — InteractConfig in src/types/config.ts + ERROR: param "effects" marked required=false in glossary but is required in source + WARNING: source has member "interactions" not listed in glossary fields + +Summary: 26 passed, 1 error, 2 warnings, 14 skipped (no sourceFile) +``` + +**JSON (with `--json`):** + +```json +{ + "package": "@wix/interact", + "totalTerms": 42, + "validated": 28, + "skipped": 14, + "errors": [ + { + "termId": "config-InteractConfig", + "check": "field-required", + "message": "param 'effects' marked required=false in glossary but is required in source", + "sourceFile": "src/types/config.ts", + "sourceName": "InteractConfig" + } + ], + "warnings": [] +} +``` + +### 4.5 Limitations and Future Considerations + +- **Default values from destructuring** can only be verified when the handler code uses destructuring with defaults (e.g., `{ threshold = 0.2 }`). Many defaults are applied elsewhere in the logic (e.g., in handler initialization). The script does not trace runtime logic — it only checks static destructuring patterns. +- **Cross-file type resolution** is not supported. If a type extends or intersects another type from a different file, only the direct members are checked. Inherited members require manual review. +- **Generic types** like `Record` are compared as opaque strings after normalization. The script does not resolve generic parameters. +- If the regex strategy proves insufficient, `ts-morph` can be added later. The validation script's internal architecture uses an `Extractor` interface (`extractTypeMembers(file, name) → Member[]`) that can be swapped without changing the rest of the script. + +--- + +## 5. Directory Layout + +After Phase 0, the repo will have these new files: + +``` +interact/ # monorepo root +├── scripts/ +│ ├── build-context.js # NEW — glossary + templates → rules/ + docs/ +│ └── validate-context.js # NEW — glossary vs TS source checker +├── packages/ +│ ├── interact/ +│ │ ├── context/ # NEW — SSOT source +│ │ │ ├── glossary.yaml +│ │ │ └── templates/ +│ │ │ ├── rules/ +│ │ │ │ ├── overview.md +│ │ │ │ ├── config.md +│ │ │ │ ├── triggers.md +│ │ │ │ ├── effects.md +│ │ │ │ └── pitfalls.md +│ │ │ └── docs/ +│ │ │ ├── README.md +│ │ │ ├── guides/ +│ │ │ │ └── ... +│ │ │ ├── api/ +│ │ │ │ └── ... +│ │ │ └── ... +│ │ ├── rules/ # OUTPUT (generated) +│ │ │ ├── overview.md +│ │ │ └── ... +│ │ └── docs/ # OUTPUT (generated) +│ │ └── ... +│ ├── motion/ +│ │ └── context/ # Created in Phase 2 +│ └── motion-presets/ +│ └── context/ # Created in Phase 3 +``` + +Phase 0 delivers only `scripts/build-context.js` and `scripts/validate-context.js`. The `context/` directories are created during each package's phase, not during Phase 0. However, a minimal test fixture is created to verify the scripts work (see [Acceptance Criteria](#10-acceptance-criteria)). + +--- + +## 6. Gitignore and CI Strategy + +**Decision: Commit generated output.** + +Rationale: +- `packages/interact/package.json` includes `"rules"` and `"docs"` in its `"files"` array, meaning they are published to npm. If these were gitignored, a pre-publish build step would be required — adding complexity and a new failure mode. +- The `apps/docs` dev server mounts `packages/interact/rules/` and `packages/interact/docs/` directly via Vite aliases. Gitignoring them would require running the build script before `dev:docs` works. +- Committing generated output follows the same pattern as lockfiles: the source of truth is the input (glossary + templates), and CI verifies the output is in sync. + +**CI verification step** (added to the existing CI workflow): + +```yaml +- name: Verify context output is up to date + run: | + node scripts/build-context.js --all + git diff --exit-code rules/ docs/ +``` + +If someone edits the glossary or templates but forgets to re-run the build, CI catches it. + +**No `.gitignore` changes needed** — `rules/` and `docs/` remain tracked. + +**Generated file header** (from [3.5](#35-generated-file-header)) serves as the safety mechanism against accidental direct edits during development. + +--- + +## 7. Root `package.json` Changes + +Add two new scripts to the root `package.json`: + +```json +{ + "scripts": { + "build:context": "node scripts/build-context.js --all", + "validate:context": "node scripts/validate-context.js --all" + } +} +``` + +These sit alongside the existing `build`, `lint`, `test` scripts. They are not wired into the main `build` command — context building is a separate concern that runs less frequently than code builds. + +Per-package `package.json` files are **not modified**. The context scripts are monorepo-level tooling. + +--- + +## 8. Dependencies + +| Dependency | Purpose | Type | Notes | +| ---------- | ------------------------------ | ---------- | --------------------------------- | +| `yaml` | Parse YAML glossary files | devDep | Standard YAML parser; ~50KB | + +No other new dependencies. The scripts use: +- `node:fs` / `node:path` / `node:process` — built-in +- `node:url` — for `import.meta.url` resolution +- Regex — for TypeScript source extraction (no ts-morph in v1) + +**The `yaml` package is added to the root `package.json` devDependencies**, not to individual packages. + +--- + +## 9. Template File Conventions + +### 9.1 Rules Templates + +Rules templates target LLM consumers. Conventions: + +**Frontmatter:** Every rules template starts with YAML frontmatter matching the existing motion-presets pattern: + +```yaml +--- +name: interact-triggers +description: >- + Complete trigger reference for @wix/interact. Read when configuring + viewEnter, hover, click, pointerMove, viewProgress, or other triggers. +--- +``` + +| Field | Required | Purpose | +| ------------- | -------- | ------------------------------------------------------- | +| `name` | yes | Kebab-case identifier for this rule file | +| `description` | yes | Agent-facing routing hint (when to load this file) | + +The build script **preserves frontmatter as-is** in the output. It does not process markers inside frontmatter. + +**Table of Contents:** After frontmatter, include a `## Table of Contents` section with anchor links to all `##`/`###` headings. This supports LLM selective reading. + +**Section separators:** Use `---` between major sections. + +**Param tables:** Use `{{term:id.params-table}}` markers. Do not hand-write param tables. + +**Code examples:** Keep examples minimal (3-8 lines). Use `{{term:id.code}}` when the glossary has a canonical example, or write inline examples in the template for context-specific usage. + +**Cross-references:** Use relative links to sibling rule files: `[triggers](./triggers.md)`. Never reference docs from rules (different audience). + +### 9.2 Docs Templates + +Docs templates target human developers. Conventions: + +**No frontmatter.** Docs files use standard markdown. The `## Table of Contents` pattern is optional (docs may use auto-generated TOCs from the docs app). + +**Narrative style.** Docs explain "why" and "when", not just "what". Use `{{term:id.human}}` for descriptions, not `{{term:id.llm}}`. + +**Same param tables.** Use the same `{{term:id.params-table}}` markers as rules. The tables are identical — only the surrounding prose differs. + +**Longer code examples.** Docs may include multi-step examples that combine multiple concepts. These are written directly in the template, not pulled from the glossary. + +--- + +## 10. Acceptance Criteria + +Phase 0 is complete when: + +1. **`scripts/build-context.js` exists** and can: + - Parse a `glossary.yaml` file + - Process template files with all marker types (text renderers, formatted renderers, includes) + - Write output files preserving directory structure + - Fail with clear errors on unknown terms, missing fields, or broken includes + - Skip markers inside fenced code blocks + +2. **`scripts/validate-context.js` exists** and can: + - Parse a `glossary.yaml` file + - For each term with `sourceFile`/`sourceName`, extract type members via regex + - Report mismatches between glossary entries and source code + - Exit 0 on success, 1 on errors + +3. **Test fixture passes.** A minimal test glossary and template set (can live in `scripts/test-fixtures/` or be inline in the test) exercises: + - All six renderers (name, llm, human, params-table, fields-table, values-table, caveats-list, code, signature, returns) + - The `{{include:...}}` marker + - Error cases: unknown term, missing field, include-not-found + - Fenced-code-block skipping + +4. **Root `package.json`** has `build:context` and `validate:context` scripts. + +5. **`yaml` devDependency** is installed at the root. + +6. **No existing tests break.** Running `yarn test` at the root still passes. + +7. **No existing builds break.** Running `yarn build` and `yarn workspace @wix/interact-docs run build` still pass (the scripts don't modify any existing files). From 89df7b9f1fa58bc7fef9d0613a6dce4f045bfa30 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Mon, 18 May 2026 18:36:18 +0300 Subject: [PATCH 03/18] first implementation - phase 0 --- .yarnrc.yml | 2 +- context_ssot_spec.md | 153 +- package.json | 6 +- scripts/build-context.js | 151 + scripts/build-context.test.js | 512 +++ scripts/context/cli-helpers.js | 16 + scripts/context/glossary-loader.js | 22 + scripts/context/glossary-schema.js | 138 + scripts/context/renderers.js | 107 + scripts/context/template-processor.js | 115 + scripts/context/ts-extractor.js | 130 + scripts/package.json | 15 + scripts/test-fixtures/glossary.yaml | 114 + scripts/test-fixtures/source/types.ts | 13 + .../test-fixtures/templates/docs/README.md | 11 + .../templates/fragments/intro.md | 3 + .../templates/rules/code-block-skip.md | 10 + .../test-fixtures/templates/rules/config.md | 19 + .../test-fixtures/templates/rules/errors.md | 5 + .../test-fixtures/templates/rules/escaped.md | 5 + .../test-fixtures/templates/rules/triggers.md | 23 + .../templates/rules/with-include.md | 9 + scripts/validate-context.js | 131 + scripts/vitest.config.js | 8 + yarn.lock | 2821 ++++++++++------- 25 files changed, 3247 insertions(+), 1292 deletions(-) create mode 100644 scripts/build-context.js create mode 100644 scripts/build-context.test.js create mode 100644 scripts/context/cli-helpers.js create mode 100644 scripts/context/glossary-loader.js create mode 100644 scripts/context/glossary-schema.js create mode 100644 scripts/context/renderers.js create mode 100644 scripts/context/template-processor.js create mode 100644 scripts/context/ts-extractor.js create mode 100644 scripts/package.json create mode 100644 scripts/test-fixtures/glossary.yaml create mode 100644 scripts/test-fixtures/source/types.ts create mode 100644 scripts/test-fixtures/templates/docs/README.md create mode 100644 scripts/test-fixtures/templates/fragments/intro.md create mode 100644 scripts/test-fixtures/templates/rules/code-block-skip.md create mode 100644 scripts/test-fixtures/templates/rules/config.md create mode 100644 scripts/test-fixtures/templates/rules/errors.md create mode 100644 scripts/test-fixtures/templates/rules/escaped.md create mode 100644 scripts/test-fixtures/templates/rules/triggers.md create mode 100644 scripts/test-fixtures/templates/rules/with-include.md create mode 100644 scripts/validate-context.js create mode 100644 scripts/vitest.config.js diff --git a/.yarnrc.yml b/.yarnrc.yml index d06c71c9..be098390 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -11,4 +11,4 @@ npmMinimalAgeGate: 14d npmPreapprovedPackages: - "@wix/*" -npmRegistryServer: "https://registry.npmjs.org/" +npmRegistryServer: "https://npm.dev.wixpress.com/" diff --git a/context_ssot_spec.md b/context_ssot_spec.md index f8d2cb51..30af2adc 100644 --- a/context_ssot_spec.md +++ b/context_ssot_spec.md @@ -31,10 +31,9 @@ This document is the detailed implementation spec for **Phase 0** of the [Contex - [3.5 Generated File Header](#35-generated-file-header) - [4. Validation Script (`scripts/validate-context.js`)](#4-validation-script-scriptsvalidate-contextjs) - [4.1 CLI Interface](#41-cli-interface) - - [4.2 Extraction Strategy](#42-extraction-strategy) + - [4.2 Extraction Strategy (ts-morph)](#42-extraction-strategy-ts-morph) - [4.3 What Gets Validated](#43-what-gets-validated) - [4.4 Report Format](#44-report-format) - - [4.5 Limitations and Future Considerations](#45-limitations-and-future-considerations) - [5. Directory Layout](#5-directory-layout) - [6. Gitignore and CI Strategy](#6-gitignore-and-ci-strategy) - [7. Root `package.json` Changes](#7-root-packagejson-changes) @@ -241,7 +240,7 @@ The build script validates these constraints before producing output: | --------------------------------- | ----------- | ------------------------------------------------------------ | | Unique IDs | error | No duplicate `id` values within a glossary | | Required fields present | error | Every term has `id`, `name`, `category`, `llm`, `human` | -| Valid category | error | `category` is one of the enumerated values | +| Valid category | error | `category` is one of the enumerated values | | Params have required fields | error | Each param has `name`, `type`, `default`, `description` | | Fields have required fields | error | Each field has `name`, `type`, `required`, `description` | | Values have required fields | error | Each value has `value`, `description` | @@ -522,8 +521,8 @@ These generate structured markdown from array fields: | Scenario | Behavior | | ---------------------------------- | ------------------------------------------------------------- | -| Marker inside fenced code block | **Not replaced.** The build script skips markers that appear between `` ``` `` fences. This allows documenting the marker syntax itself. | -| Marker with unknown term ID | **Build error.** The script exits with code 1 and reports the file, line number, and unresolved marker. | +| Marker inside fenced code block | **Not replaced.** The build script uses a simple toggle (flip state on lines starting with `` ``` `` or `~~~`) to detect code regions. | +| Marker with unknown term ID | **Build error.** The script exits with code 1 and reports the file and unresolved marker. | | Marker with unknown renderer | **Build error.** Same as above. | | Term exists but requested field is empty/missing | **Build error** for required renderers (`llm`, `human`, `name`). **Renders as empty string** for optional fields (`code`, `caveats`, `signature`). When `params`, `fields`, or `values` is missing and a table renderer is called, renders the string `*No parameters.*`, `*No fields.*`, or `*No values.*` respectively. | | `{{include:...}}` target not found | **Build error.** Reports the missing file path. | @@ -619,9 +618,9 @@ For each package: 3. **Discover templates.** Recursively glob `packages//context/templates/rules/**/*.md` and `packages//context/templates/docs/**/*.md`. 4. **Process each template.** - - Read the file contents. - - Identify fenced code blocks (``` regions) and mark their line ranges as "skip zones." - - For each line outside skip zones, find all `{{...}}` markers using regex: `/(? [--all] [--fix] [--json] +node scripts/validate-context.js --package [--all] [--json] ``` | Flag | Description | | ----------- | -------------------------------------------------------------- | | `--package` | Package directory name. Repeatable. | | `--all` | Validate all packages with a `context/` directory. | -| `--fix` | Write corrected values back to glossary (future; not in v1). | | `--json` | Output report as JSON instead of human-readable text. | **Exit codes:** - `0` — all checks pass. - `1` — one or more validation errors. -### 4.2 Extraction Strategy +### 4.2 Extraction Strategy (ts-morph) -**Phase 0 uses regex-based extraction.** No additional dependencies. +**Phase 0 uses `ts-morph` for TypeScript source analysis.** This replaces fragile regex-based parsing that would need to handle multi-line types, generics, union types, intersections, and conditional types — all patterns present in this codebase. -The script extracts ground truth from TypeScript source using these patterns: +`ts-morph` wraps the TypeScript compiler API in a high-level interface. It leverages the same `typescript` package already in the monorepo's devDependencies, so there is no version conflict or duplicate. It provides: -**Type member extraction** (for verifying param/field names and types): +- Reliable type/interface member enumeration (names, optionality) +- Union type literal extraction (for enum validation) +- Export symbol discovery (for API validation) +- Proper resolution of type aliases, intersections, and re-exports -```javascript -// Match: name?: type; or name: type; -/^\s*(\w+)(\?)?:\s*(.+?);/gm -``` - -Applied to the content of the type block identified by `sourceName` in the file at `sourceFile`. - -**Type block identification:** - -```javascript -// Match: export type Name = { ... } (handles multi-line) -/export\s+type\s+NAME\s*=\s*\{([^}]*(?:\{[^}]*\}[^}]*)*)\}/s -``` - -Where `NAME` is the `sourceName` from the glossary entry. - -**Destructuring default extraction** (for verifying default values): +**How it's used:** ```javascript -// Match: name = defaultValue in destructuring patterns -/(\w+)\s*=\s*([^,}\n]+)/g -``` - -**Enum/union extraction** (for verifying enum values): +import { Project } from 'ts-morph'; + +const project = new Project({ + tsConfigFilePath: `packages/${pkg}/tsconfig.json`, + skipAddingFilesFromTsConfig: true, +}); + +project.addSourceFileAtPath(sourceFilePath); +const sourceFile = project.getSourceFileOrThrow(sourceFilePath); + +// For type aliases: get properties +const typeAlias = sourceFile.getTypeAlias(sourceName); +const type = typeAlias.getType(); +const properties = type.getProperties(); +for (const prop of properties) { + const name = prop.getName(); + const isOptional = prop.isOptional(); +} -```javascript -// Match: | 'value' in union types -/'\s*([^']+)\s*'/g +// For union types: get literal values +if (type.isUnion()) { + const literals = type.getUnionTypes() + .filter(t => t.isStringLiteral()) + .map(t => t.getLiteralValue()); +} ``` -**Fallback plan:** If regex extraction proves unreliable for a specific pattern (e.g., complex generic types, conditional types), the validation script should: -1. Log a warning that the entry could not be automatically verified. -2. Continue without failing the build. -3. The entry gets flagged for manual review. - -If more than 30% of entries cannot be automatically verified, evaluate adding `ts-morph` as a devDependency. This decision is deferred to implementation. +This approach is deterministic — no string parsing, no whitespace sensitivity, no false positives from formatting differences. ### 4.3 What Gets Validated @@ -740,15 +736,19 @@ For each glossary entry that has both `sourceFile` and `sourceName`: | Check | What it does | Severity | | ---------------------- | -------------------------------------------------------------------------------- | -------- | | File exists | `sourceFile` resolves to an existing `.ts` file | error | -| Symbol exists | `sourceName` appears as an exported type/const/function in the file | error | -| Param names match | Every `params[].name` exists as a member of the source type | error | -| Param types match | Each param's `type` matches the source type annotation (normalized, see below) | warning | -| Field names match | Every `fields[].name` exists as a member of the source type | error | -| Value members match | Every `values[].value` appears in the source union type | error | -| No missing members | Source type has no members missing from the glossary params/fields | warning | +| Symbol exists | `sourceName` is found as an exported type/interface/const/function | error | +| Param names match | Every `params[].name` exists as a property of the source type | error | +| Param optionality | Each param's `required` matches whether the source property has `?` | warning | +| Field names match | Every `fields[].name` exists as a property of the source type | error | +| Value members match | Every `values[].value` appears as a string literal in the source union type | error | +| No missing members | Source type has no properties missing from the glossary params/fields | warning | | Export still exists | For `api` entries, the symbol is still exported from the package entry point | warning | -**Type normalization:** Before comparing types, both the glossary type and the source type are normalized: whitespace is collapsed, `readonly` is stripped, import-path qualifiers are removed. This prevents false positives from formatting differences. +**What is NOT validated** (to keep things reliable and avoid false positives): + +- **Type text matching** — The `type` field in the glossary is for human/LLM display, not a contract. ts-morph resolves to fully-qualified types that may differ in formatting from what we write in the glossary (e.g., `Fill` vs the resolved `"forwards" | "backwards" | "both" | "none"`). Comparing these would produce noise. +- **Default values** — Defaults live in runtime code (destructuring, handler initialization), not in type definitions. Verifying them would require tracing control flow. Defaults are verified manually during the audit phase (Phase 1). +- **Cross-file inherited members** — If a type extends another from a different file, only direct properties are checked. Inherited members require manual review. ### 4.4 Report Format @@ -758,10 +758,10 @@ For each glossary entry that has both `sourceFile` and `sourceName`: Validating @wix/interact glossary (42 terms, 28 with sourceFile)... ✓ trigger-viewEnter — ViewEnterParams in src/types/triggers.ts — 3/3 params match -✗ trigger-hover — no sourceFile (skipped) +- trigger-hover — no sourceFile (skipped) ✗ config-InteractConfig — InteractConfig in src/types/config.ts - ERROR: param "effects" marked required=false in glossary but is required in source - WARNING: source has member "interactions" not listed in glossary fields + ERROR: glossary field "effects" marked required=false but source property is required + WARNING: source has property "interactions" not listed in glossary fields Summary: 26 passed, 1 error, 2 warnings, 14 skipped (no sourceFile) ``` @@ -778,7 +778,7 @@ Summary: 26 passed, 1 error, 2 warnings, 14 skipped (no sourceFile) { "termId": "config-InteractConfig", "check": "field-required", - "message": "param 'effects' marked required=false in glossary but is required in source", + "message": "glossary field 'effects' marked required=false but source property is required", "sourceFile": "src/types/config.ts", "sourceName": "InteractConfig" } @@ -787,13 +787,6 @@ Summary: 26 passed, 1 error, 2 warnings, 14 skipped (no sourceFile) } ``` -### 4.5 Limitations and Future Considerations - -- **Default values from destructuring** can only be verified when the handler code uses destructuring with defaults (e.g., `{ threshold = 0.2 }`). Many defaults are applied elsewhere in the logic (e.g., in handler initialization). The script does not trace runtime logic — it only checks static destructuring patterns. -- **Cross-file type resolution** is not supported. If a type extends or intersects another type from a different file, only the direct members are checked. Inherited members require manual review. -- **Generic types** like `Record` are compared as opaque strings after normalization. The script does not resolve generic parameters. -- If the regex strategy proves insufficient, `ts-morph` can be added later. The validation script's internal architecture uses an `Extractor` interface (`extractTypeMembers(file, name) → Member[]`) that can be swapped without changing the rest of the script. - --- ## 5. Directory Layout @@ -853,7 +846,7 @@ Rationale: - name: Verify context output is up to date run: | node scripts/build-context.js --all - git diff --exit-code rules/ docs/ + git diff --exit-code packages/*/rules/ packages/*/docs/ ``` If someone edits the glossary or templates but forgets to re-run the build, CI catches it. @@ -885,16 +878,17 @@ Per-package `package.json` files are **not modified**. The context scripts are m ## 8. Dependencies -| Dependency | Purpose | Type | Notes | -| ---------- | ------------------------------ | ---------- | --------------------------------- | -| `yaml` | Parse YAML glossary files | devDep | Standard YAML parser; ~50KB | +| Dependency | Purpose | Type | Notes | +| ---------- | ------------------------------------ | ------ | ---------------------------------------------- | +| `yaml` | Parse YAML glossary files | devDep | Standard YAML parser; ~50KB | +| `ts-morph` | TypeScript AST analysis (validation) | devDep | Wraps the TS compiler API; uses existing `typescript` devDep | -No other new dependencies. The scripts use: +The scripts also use: - `node:fs` / `node:path` / `node:process` — built-in - `node:url` — for `import.meta.url` resolution -- Regex — for TypeScript source extraction (no ts-morph in v1) +- `node:util` — for `parseArgs` (built-in since Node 18.3, available in this repo's Node 22) -**The `yaml` package is added to the root `package.json` devDependencies**, not to individual packages. +**Both packages are added to the root `package.json` devDependencies**, not to individual packages. --- @@ -959,19 +953,20 @@ Phase 0 is complete when: 2. **`scripts/validate-context.js` exists** and can: - Parse a `glossary.yaml` file - - For each term with `sourceFile`/`sourceName`, extract type members via regex - - Report mismatches between glossary entries and source code + - For each term with `sourceFile`/`sourceName`, use ts-morph to extract type properties + - Report mismatches between glossary entries and source code (missing/extra members, optionality) - Exit 0 on success, 1 on errors -3. **Test fixture passes.** A minimal test glossary and template set (can live in `scripts/test-fixtures/` or be inline in the test) exercises: - - All six renderers (name, llm, human, params-table, fields-table, values-table, caveats-list, code, signature, returns) +3. **Test fixture passes.** A Vitest test file (`scripts/build-context.test.js`) exercises: + - All renderers (name, llm, human, params-table, fields-table, values-table, caveats-list, code, signature, returns) - The `{{include:...}}` marker - Error cases: unknown term, missing field, include-not-found - Fenced-code-block skipping + - Test fixtures live in `scripts/test-fixtures/` 4. **Root `package.json`** has `build:context` and `validate:context` scripts. -5. **`yaml` devDependency** is installed at the root. +5. **`yaml` and `ts-morph` devDependencies** are installed at the root. 6. **No existing tests break.** Running `yarn test` at the root still passes. diff --git a/package.json b/package.json index 70889503..70548ed5 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,9 @@ "dev:demo": "yarn workspace @wix/interact-demo run dev", "format": "prettier . --write", "format:check": "prettier . --check", + "build:context": "yarn workspace @wix/context-scripts run build", + "validate:context": "yarn workspace @wix/context-scripts run validate", + "test:context": "yarn workspace @wix/context-scripts run test", "serve": "npx serve apps/website -l 3000", "serve:public": "npx serve apps/website -l tcp://0.0.0.0:3000" }, @@ -44,7 +47,8 @@ "homepage": "https://github.com/wix/interact#readme", "workspaces": [ "packages/*", - "apps/*" + "apps/*", + "scripts" ], "engines": { "node": ">=18" diff --git a/scripts/build-context.js b/scripts/build-context.js new file mode 100644 index 00000000..9ba32fbb --- /dev/null +++ b/scripts/build-context.js @@ -0,0 +1,151 @@ +import { parseArgs } from 'node:util'; +import { readFileSync, writeFileSync, mkdirSync, readdirSync, existsSync } from 'node:fs'; +import { resolve, join, relative, dirname } from 'node:path'; +import { loadAndValidateGlossary, buildTermIndex } from './context/glossary-loader.js'; +import { processTemplate } from './context/template-processor.js'; +import { discoverPackages } from './context/cli-helpers.js'; + +const { values: flags } = parseArgs({ + options: { + package: { type: 'string', multiple: true }, + all: { type: 'boolean', default: false }, + 'dry-run': { type: 'boolean', default: false }, + verbose: { type: 'boolean', default: false }, + }, + strict: true, +}); + +const REPO_ROOT = resolve(import.meta.dirname, '..'); +const PACKAGES_DIR = join(REPO_ROOT, 'packages'); + +const packages = discoverPackages(flags); + +const OUTPUT_SUBDIRS = ['rules', 'docs']; + +function discoverTemplates(templatesDir) { + const files = []; + if (!existsSync(templatesDir)) return files; + + function walk(dir) { + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const fullPath = join(dir, entry.name); + if (entry.isDirectory()) { + walk(fullPath); + } else if (entry.name.endsWith('.md')) { + files.push(fullPath); + } + } + } + + for (const subdir of OUTPUT_SUBDIRS) { + const dir = join(templatesDir, subdir); + if (existsSync(dir)) walk(dir); + } + + return files; +} + +function generateHeader(templateRelPath) { + return [ + '', + ``, + '', + ].join('\n'); +} + +function buildPackage(pkgName) { + const pkgDir = join(PACKAGES_DIR, pkgName); + const glossaryPath = join(pkgDir, 'context', 'glossary.yaml'); + const templatesDir = join(pkgDir, 'context', 'templates'); + + if (!existsSync(glossaryPath)) { + return { errors: [`Glossary not found: ${glossaryPath}`], warnings: [], filesWritten: 0 }; + } + + const { data, errors: schemaErrors, warnings: schemaWarnings } = loadAndValidateGlossary(glossaryPath); + + if (schemaErrors.length > 0) { + return { errors: schemaErrors, warnings: schemaWarnings, filesWritten: 0 }; + } + + const termIndex = buildTermIndex(data.terms); + const templateFiles = discoverTemplates(templatesDir); + const allErrors = []; + const allWarnings = [...schemaWarnings]; + const outputs = []; + + for (const templatePath of templateFiles) { + const templateRelPath = relative(templatesDir, templatePath); + const content = readFileSync(templatePath, 'utf-8'); + const { output, errors } = processTemplate(content, termIndex, templatesDir, { verbose: flags.verbose }); + + if (errors.length > 0) { + allErrors.push(`ERROR in context/templates/${templateRelPath}:`); + for (const err of errors) { + allErrors.push(` ${err}`); + } + } + + const normalizedRelPath = templateRelPath.split(process.platform === 'win32' ? '\\' : '/'); + const outputSubdir = normalizedRelPath[0]; + const outputRelPath = normalizedRelPath.slice(1).join('/'); + const outputPath = join(pkgDir, outputSubdir, outputRelPath); + const headerPath = `${outputSubdir}/${outputRelPath}`; + const finalContent = generateHeader(headerPath) + output; + outputs.push({ path: outputPath, content: finalContent, relPath: headerPath }); + } + + if (allErrors.length > 0) { + return { errors: allErrors, warnings: allWarnings, filesWritten: 0 }; + } + + let filesWritten = 0; + for (const { path: outputPath, content, relPath } of outputs) { + if (flags['dry-run']) { + console.log(` [dry-run] Would write: ${relPath}`); + } else { + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync(outputPath, content, 'utf-8'); + if (flags.verbose) { + console.log(` Written: ${relPath}`); + } + } + filesWritten++; + } + + return { errors: [], warnings: allWarnings, filesWritten }; +} + +if (packages.length === 0) { + console.error('No packages specified. Use --package or --all.'); + process.exit(1); +} + +let totalErrors = 0; +let totalFiles = 0; + +for (const pkgName of packages) { + console.log(`\nBuilding context for: ${pkgName}`); + const { errors, warnings, filesWritten } = buildPackage(pkgName); + + for (const w of warnings) { + console.log(` WARNING: ${w}`); + } + + if (errors.length > 0) { + for (const e of errors) { + console.error(` ${e}`); + } + totalErrors += errors.length; + } else { + totalFiles += filesWritten; + console.log(` ${filesWritten} file(s) ${flags['dry-run'] ? 'would be written' : 'written'}.`); + } +} + +if (totalErrors > 0) { + console.error(`\nBuild failed: ${totalErrors} error(s).`); + process.exit(1); +} else { + console.log(`\nBuild succeeded: ${totalFiles} file(s) ${flags['dry-run'] ? 'would be written' : 'written'}.`); +} diff --git a/scripts/build-context.test.js b/scripts/build-context.test.js new file mode 100644 index 00000000..e66a1fc2 --- /dev/null +++ b/scripts/build-context.test.js @@ -0,0 +1,512 @@ +import { describe, it, expect, beforeAll } from 'vitest'; +import { resolve, join } from 'node:path'; +import { readFileSync } from 'node:fs'; +import { validateGlossary, VALID_CATEGORIES } from './context/glossary-schema.js'; +import { buildTermIndex, loadGlossaryFromFile } from './context/glossary-loader.js'; +import { + renderParamsTable, + renderFieldsTable, + renderValuesTable, + renderCaveatsList, + renderCode, + renderSignature, + resolveRenderer, +} from './context/renderers.js'; +import { processTemplate } from './context/template-processor.js'; +import { createProject, validateTermAgainstSource } from './context/ts-extractor.js'; + +const FIXTURES_DIR = resolve(import.meta.dirname, 'test-fixtures'); +const TEMPLATES_DIR = join(FIXTURES_DIR, 'templates'); + +function loadFixtureGlossary() { + return loadGlossaryFromFile(join(FIXTURES_DIR, 'glossary.yaml')); +} + +describe('glossary-schema', () => { + it('validates a correct glossary without errors', () => { + const data = loadFixtureGlossary(); + const { errors } = validateGlossary(data); + expect(errors).toHaveLength(0); + }); + + it('reports missing meta fields', () => { + const { errors } = validateGlossary({ terms: [] }); + expect(errors.some((e) => e.includes('meta'))).toBe(true); + }); + + it('reports missing required term fields', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [{ id: 'test-one' }], + }; + const { errors } = validateGlossary(data); + expect(errors.some((e) => e.includes('name'))).toBe(true); + expect(errors.some((e) => e.includes('category'))).toBe(true); + }); + + it('reports invalid category', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [{ id: 'x', name: 'x', category: 'invalid', llm: 'x', human: 'x' }], + }; + const { errors } = validateGlossary(data); + expect(errors.some((e) => e.includes('category'))).toBe(true); + }); + + it('reports duplicate IDs', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [ + { id: 'dup', name: 'a', category: 'trigger', llm: 'x', human: 'x' }, + { id: 'dup', name: 'b', category: 'trigger', llm: 'x', human: 'x' }, + ], + }; + const { errors } = validateGlossary(data); + expect(errors.some((e) => e.includes('Duplicate'))).toBe(true); + }); + + it('reports invalid param entries', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [{ id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', params: [{ name: 'p' }] }], + }; + const { errors } = validateGlossary(data); + expect(errors.some((e) => e.includes('type'))).toBe(true); + }); + + it('warns on orphan related refs', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [{ id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', related: ['nonexistent'] }], + }; + const { warnings } = validateGlossary(data); + expect(warnings.some((w) => w.includes('nonexistent'))).toBe(true); + }); + + it('does not warn on cross-package related refs', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [{ id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', related: ['@motion/api-registerEffects'] }], + }; + const { warnings } = validateGlossary(data); + expect(warnings.some((w) => w.includes('@motion/api-registerEffects'))).toBe(false); + }); + + it('exports VALID_CATEGORIES', () => { + expect(VALID_CATEGORIES).toContain('trigger'); + expect(VALID_CATEGORIES).toContain('preset'); + expect(VALID_CATEGORIES).toHaveLength(7); + }); +}); + +describe('renderers', () => { + describe('renderParamsTable', () => { + it('renders a params table', () => { + const params = [ + { name: 'threshold', type: 'number', default: 0.2, description: 'Visibility fraction' }, + { name: 'inset', type: 'string', default: 'undefined', description: 'Root margin' }, + { name: 'id', type: 'string', default: null, required: true, description: 'Required ID' }, + ]; + const result = renderParamsTable(params); + expect(result).toContain('| Param | Type | Default | Description |'); + expect(result).toContain('`threshold`'); + expect(result).toContain('`0.2`'); + expect(result).toContain('—'); + expect(result).toContain('**required**'); + }); + + it('returns fallback for empty params', () => { + expect(renderParamsTable(undefined)).toBe('*No parameters.*'); + expect(renderParamsTable([])).toBe('*No parameters.*'); + }); + + it('uses **required** when required: true regardless of default', () => { + const params = [{ name: 'x', type: 'string', default: 'foo', required: true, description: 'desc' }]; + const result = renderParamsTable(params); + expect(result).toContain('**required**'); + expect(result).not.toContain('`foo`'); + }); + + it('escapes pipe characters in type and description', () => { + const params = [{ name: 'axis', type: "'x' | 'y'", default: "'x'", description: "Axis: x | y" }]; + const result = renderParamsTable(params); + expect(result).toContain("`'x' \\| 'y'`"); + expect(result).toContain('Axis: x \\| y'); + expect(result).not.toMatch(/\| x \| y \|/); + }); + }); + + describe('renderFieldsTable', () => { + it('renders a fields table', () => { + const fields = [ + { name: 'effects', type: 'Record', required: true, description: 'Effect defs' }, + { name: 'sequences', type: 'Record', required: false, description: 'Seq defs' }, + ]; + const result = renderFieldsTable(fields); + expect(result).toContain('| Field | Type | Required | Description |'); + expect(result).toContain('`effects`'); + expect(result).toContain('yes'); + expect(result).toContain('no'); + }); + + it('returns fallback for empty fields', () => { + expect(renderFieldsTable(undefined)).toBe('*No fields.*'); + }); + }); + + describe('renderValuesTable', () => { + it('renders a values table with single-quoted backtick values', () => { + const values = [ + { value: 'once', description: 'Fires once.' }, + { value: 'repeat', description: 'Fires every time.' }, + ]; + const result = renderValuesTable(values); + expect(result).toContain('| Value | Description |'); + expect(result).toContain("`'once'`"); + expect(result).toContain("`'repeat'`"); + }); + + it('returns fallback for empty values', () => { + expect(renderValuesTable(undefined)).toBe('*No values.*'); + }); + }); + + describe('renderCaveatsList', () => { + it('renders a bullet list with warning emoji', () => { + const caveats = ['First caveat.', 'Second caveat.']; + const result = renderCaveatsList(caveats); + expect(result).toContain('- ⚠️ First caveat.'); + expect(result).toContain('- ⚠️ Second caveat.'); + }); + + it('returns empty string for no caveats', () => { + expect(renderCaveatsList(undefined)).toBe(''); + expect(renderCaveatsList([])).toBe(''); + }); + }); + + describe('renderCode', () => { + it('wraps code in typescript fenced block', () => { + const result = renderCode('const x = 1;'); + expect(result).toBe('```typescript\nconst x = 1;\n```'); + }); + + it('returns empty for no code', () => { + expect(renderCode(undefined)).toBe(''); + }); + + it('trims trailing newlines', () => { + const result = renderCode('const x = 1;\n\n'); + expect(result).toBe('```typescript\nconst x = 1;\n```'); + }); + }); + + describe('renderSignature', () => { + it('wraps signature in backticks', () => { + expect(renderSignature('static create(): Interact')).toBe('`static create(): Interact`'); + }); + + it('returns empty for no signature', () => { + expect(renderSignature(undefined)).toBe(''); + }); + }); + + describe('resolveRenderer', () => { + const term = { + id: 'test-id', + name: 'TestTerm', + llm: 'LLM desc', + human: 'Human desc', + signature: 'fn(): void', + returns: 'void', + params: [{ name: 'x', type: 'number', default: 1, description: 'desc' }], + code: 'const x = 1;', + caveats: ['Watch out.'], + }; + + it('resolves name renderer', () => { + expect(resolveRenderer(term, 'name')).toEqual({ value: 'TestTerm' }); + }); + + it('resolves llm renderer', () => { + expect(resolveRenderer(term, 'llm')).toEqual({ value: 'LLM desc' }); + }); + + it('resolves params-table renderer', () => { + const result = resolveRenderer(term, 'params-table'); + expect(result.value).toContain('| Param |'); + }); + + it('returns error for unknown renderer', () => { + const result = resolveRenderer(term, 'nonexistent'); + expect(result.error).toContain('Unknown renderer'); + }); + + it('returns error for missing required field', () => { + const result = resolveRenderer({ id: 'no-name' }, 'name'); + expect(result.error).toContain('no "name" field'); + }); + }); +}); + +describe('template-processor', () => { + let termIndex; + + beforeAll(() => { + const glossary = loadFixtureGlossary(); + termIndex = buildTermIndex(glossary.terms); + }); + + it('processes text markers', () => { + const content = 'Hello {{term:trigger-hover.name}} world'; + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('Hello hover world'); + }); + + it('processes table markers', () => { + const content = '{{term:trigger-viewEnter.params-table}}'; + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('| Param |'); + expect(output).toContain('`threshold`'); + }); + + it('skips markers inside fenced code blocks', () => { + const content = readFileSync(join(TEMPLATES_DIR, 'rules/code-block-skip.md'), 'utf-8'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('Normal marker: hover'); + expect(output).toContain('{{term:trigger-viewEnter.name}}'); + expect(output).toContain('After code block: Fires on mouseenter/mouseleave events.'); + }); + + it('handles escaped markers', () => { + const content = readFileSync(join(TEMPLATES_DIR, 'rules/escaped.md'), 'utf-8'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('This is a literal: {{term:trigger-viewEnter.name}}'); + expect(output).toContain('This is real: hover'); + }); + + it('processes include markers', () => { + const content = readFileSync(join(TEMPLATES_DIR, 'rules/with-include.md'), 'utf-8'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('This is the **introduction** fragment.'); + expect(output).toContain('Requires BOTH generate(config)'); + }); + + it('reports errors for unknown term IDs', () => { + const content = '{{term:nonexistent-term.llm}}'; + const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors.length).toBeGreaterThan(0); + expect(errors[0]).toContain('nonexistent-term'); + }); + + it('reports errors for unknown renderers', () => { + const content = '{{term:trigger-viewEnter.bad-renderer}}'; + const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors.length).toBeGreaterThan(0); + expect(errors[0]).toContain('bad-renderer'); + }); + + it('reports errors for missing include files', () => { + const content = '{{include:fragments/does-not-exist.md}}'; + const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors.length).toBeGreaterThan(0); + expect(errors[0]).toContain('does-not-exist.md'); + }); + + it('preserves frontmatter without processing', () => { + const content = '---\nname: test\ndescription: "Has {{term:trigger-hover.name}} marker"\n---\n\n# Title\n\n{{term:trigger-hover.name}}'; + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('description: "Has {{term:trigger-hover.name}} marker"'); + expect(output).toContain('# Title\n\nhover'); + }); + + it('processes a full rules template', () => { + const content = readFileSync(join(TEMPLATES_DIR, 'rules/triggers.md'), 'utf-8'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('Triggers an animation'); + expect(output).toContain('| Param |'); + expect(output).toContain('⚠️'); + expect(output).toContain('Fires on mouseenter'); + }); + + it('processes a docs template', () => { + const content = readFileSync(join(TEMPLATES_DIR, 'docs/README.md'), 'utf-8'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('Initializes the interaction system'); + expect(output).toContain('```typescript'); + expect(output).toContain('Interact instance'); + }); + + it('collects multiple errors from one file', () => { + const content = readFileSync(join(TEMPLATES_DIR, 'rules/errors.md'), 'utf-8'); + const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors.length).toBe(2); + }); + + it('reports unterminated code fence', () => { + const content = '# Title\n\n```typescript\nconst x = 1;\n'; + const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors.some((e) => e.includes('Unterminated code fence'))).toBe(true); + }); + + it('preserves failed include marker in output', () => { + const content = 'Before {{include:fragments/does-not-exist.md}} After'; + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors.length).toBeGreaterThan(0); + expect(output).toContain('{{include:fragments/does-not-exist.md}}'); + }); +}); + +describe('ts-extractor', () => { + const SOURCE_DIR = join(FIXTURES_DIR, 'source'); + let project; + + beforeAll(() => { + project = createProject(SOURCE_DIR); + }); + + it('validates matching params successfully', () => { + const term = { + id: 'trigger-viewEnter', + sourceFile: 'types.ts', + sourceName: 'ViewEnterParams', + params: [ + { name: 'threshold', type: 'number', default: 0.2, description: 'desc' }, + { name: 'inset', type: 'string', default: 'undefined', description: 'desc' }, + { name: 'effectId', type: 'string', default: null, required: true, description: 'desc' }, + ], + }; + const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(errors).toHaveLength(0); + }); + + it('reports error for param not in source', () => { + const term = { + id: 'test', + sourceFile: 'types.ts', + sourceName: 'ViewEnterParams', + params: [ + { name: 'nonexistent', type: 'string', default: null, description: 'desc' }, + ], + }; + const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(errors.some((e) => e.message.includes('nonexistent'))).toBe(true); + expect(errors[0].check).toBe('param-exists'); + }); + + it('warns on source property missing from glossary', () => { + const term = { + id: 'test', + sourceFile: 'types.ts', + sourceName: 'ViewEnterParams', + params: [ + { name: 'threshold', type: 'number', default: 0.2, description: 'desc' }, + ], + }; + const { warnings } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(warnings.some((w) => w.message.includes('not listed in glossary'))).toBe(true); + expect(warnings[0].check).toBe('missing-member'); + }); + + it('validates enum values against source union', () => { + const term = { + id: 'test', + sourceFile: 'types.ts', + sourceName: 'TriggerType', + values: [ + { value: 'once', description: 'desc' }, + { value: 'repeat', description: 'desc' }, + { value: 'alternate', description: 'desc' }, + { value: 'state', description: 'desc' }, + ], + }; + const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(errors).toHaveLength(0); + }); + + it('reports error for value not in source union', () => { + const term = { + id: 'test', + sourceFile: 'types.ts', + sourceName: 'TriggerType', + values: [ + { value: 'nonexistent', description: 'desc' }, + ], + }; + const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(errors.some((e) => e.message.includes('nonexistent'))).toBe(true); + expect(errors[0].check).toBe('value-exists'); + }); + + it('reports error for missing source file', () => { + const term = { + id: 'test', + sourceFile: 'does-not-exist.ts', + sourceName: 'Foo', + }; + const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(errors.some((e) => e.message.includes('not found'))).toBe(true); + expect(errors[0].check).toBe('file-exists'); + }); + + it('reports error for missing symbol', () => { + const term = { + id: 'test', + sourceFile: 'types.ts', + sourceName: 'NonexistentType', + }; + const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(errors.some((e) => e.message.includes('NonexistentType'))).toBe(true); + expect(errors[0].check).toBe('symbol-exists'); + }); + + it('warns on optionality mismatch', () => { + const term = { + id: 'test', + sourceFile: 'types.ts', + sourceName: 'ViewEnterParams', + params: [ + { name: 'inset', type: 'string', default: null, required: true, description: 'desc' }, + ], + }; + const { warnings } = validateTermAgainstSource(term, project, SOURCE_DIR); + expect(warnings.some((w) => w.message.includes('optional in source'))).toBe(true); + expect(warnings[0].check).toBe('param-optionality'); + }); +}); + +describe('integration — build pipeline', () => { + let termIndex; + + beforeAll(() => { + const glossary = loadFixtureGlossary(); + termIndex = buildTermIndex(glossary.terms); + }); + + it('processes all fixture templates without errors', () => { + const templateFiles = ['rules/triggers.md', 'rules/config.md', 'rules/code-block-skip.md', 'docs/README.md']; + for (const file of templateFiles) { + const content = readFileSync(join(TEMPLATES_DIR, file), 'utf-8'); + const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors, `Errors in ${file}`).toHaveLength(0); + } + }); + + it('config template renders fields-table and values-table', () => { + const content = readFileSync(join(TEMPLATES_DIR, 'rules/config.md'), 'utf-8'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('| Field | Type | Required | Description |'); + expect(output).toContain('`effects`'); + expect(output).toContain("| Value | Description |"); + expect(output).toContain("`'once'`"); + }); +}); diff --git a/scripts/context/cli-helpers.js b/scripts/context/cli-helpers.js new file mode 100644 index 00000000..d08a6573 --- /dev/null +++ b/scripts/context/cli-helpers.js @@ -0,0 +1,16 @@ +import { readdirSync, statSync, existsSync } from 'node:fs'; +import { resolve, join } from 'node:path'; + +const REPO_ROOT = resolve(import.meta.dirname, '..', '..'); +const PACKAGES_DIR = join(REPO_ROOT, 'packages'); + +export function discoverPackages(flags) { + if (flags.all) { + return readdirSync(PACKAGES_DIR) + .filter((name) => { + const contextDir = join(PACKAGES_DIR, name, 'context'); + return existsSync(contextDir) && statSync(contextDir).isDirectory(); + }); + } + return flags.package || []; +} diff --git a/scripts/context/glossary-loader.js b/scripts/context/glossary-loader.js new file mode 100644 index 00000000..dcec3b9c --- /dev/null +++ b/scripts/context/glossary-loader.js @@ -0,0 +1,22 @@ +import { readFileSync } from 'node:fs'; +import { parse } from 'yaml'; +import { validateGlossary } from './glossary-schema.js'; + +export function buildTermIndex(terms) { + const index = new Map(); + for (const term of terms) { + index.set(term.id, term); + } + return index; +} + +export function loadGlossaryFromFile(filePath) { + const raw = readFileSync(filePath, 'utf-8'); + return parse(raw); +} + +export function loadAndValidateGlossary(filePath) { + const data = loadGlossaryFromFile(filePath); + const { errors, warnings } = validateGlossary(data); + return { data, errors, warnings }; +} diff --git a/scripts/context/glossary-schema.js b/scripts/context/glossary-schema.js new file mode 100644 index 00000000..6b6ccebe --- /dev/null +++ b/scripts/context/glossary-schema.js @@ -0,0 +1,138 @@ +export const VALID_CATEGORIES = [ + 'trigger', + 'effect-type', + 'config', + 'api', + 'concept', + 'enum', + 'preset', +]; + +const REQUIRED_TERM_FIELDS = ['id', 'name', 'category', 'llm', 'human']; +const REQUIRED_PARAM_FIELDS = ['name', 'type', 'default', 'description']; +const REQUIRED_FIELD_FIELDS = ['name', 'type', 'required', 'description']; +const REQUIRED_VALUE_FIELDS = ['value', 'description']; +const REQUIRED_META_FIELDS = ['package', 'version', 'lastAudit']; + +function checkRequiredKeys(obj, requiredKeys, label) { + const missing = requiredKeys.filter((k) => !(k in obj)); + if (missing.length > 0) { + return `${label}: missing required fields: ${missing.join(', ')}`; + } + return null; +} + +function validateMeta(meta, errors) { + if (!meta || typeof meta !== 'object') { + errors.push('Missing or invalid top-level "meta" object'); + return; + } + const err = checkRequiredKeys(meta, REQUIRED_META_FIELDS, 'meta'); + if (err) errors.push(err); +} + +function validateTermParams(params, termId, errors) { + params.forEach((param, i) => { + const err = checkRequiredKeys( + param, + REQUIRED_PARAM_FIELDS, + `term "${termId}" params[${i}]`, + ); + if (err) errors.push(err); + }); +} + +function validateTermFields(fields, termId, errors) { + fields.forEach((field, i) => { + const err = checkRequiredKeys( + field, + REQUIRED_FIELD_FIELDS, + `term "${termId}" fields[${i}]`, + ); + if (err) errors.push(err); + }); +} + +function validateTermValues(values, termId, errors) { + values.forEach((val, i) => { + const err = checkRequiredKeys( + val, + REQUIRED_VALUE_FIELDS, + `term "${termId}" values[${i}]`, + ); + if (err) errors.push(err); + }); +} + +function validateTerms(terms, errors, warnings) { + if (!Array.isArray(terms)) { + errors.push('Missing or invalid top-level "terms" array'); + return; + } + + const seenIds = new Set(); + + terms.forEach((term, i) => { + const termLabel = term.id ? `term "${term.id}"` : `terms[${i}]`; + + const missingErr = checkRequiredKeys( + term, + REQUIRED_TERM_FIELDS, + termLabel, + ); + if (missingErr) errors.push(missingErr); + + if (term.category && !VALID_CATEGORIES.includes(term.category)) { + errors.push( + `${termLabel}: invalid category "${term.category}" (valid: ${VALID_CATEGORIES.join(', ')})`, + ); + } + + if (term.id) { + if (seenIds.has(term.id)) { + errors.push(`Duplicate term ID: "${term.id}"`); + } + seenIds.add(term.id); + } + + if (term.params && Array.isArray(term.params)) { + validateTermParams(term.params, term.id ?? i, errors); + } + + if (term.fields && Array.isArray(term.fields)) { + validateTermFields(term.fields, term.id ?? i, errors); + } + + if (term.values && Array.isArray(term.values)) { + validateTermValues(term.values, term.id ?? i, errors); + } + + }); + + const allIds = new Set(terms.filter((t) => t.id).map((t) => t.id)); + terms.forEach((term, i) => { + if (!Array.isArray(term.related)) return; + const termLabel = term.id ? `term "${term.id}"` : `terms[${i}]`; + term.related.forEach((ref) => { + if (!ref.startsWith('@') && !allIds.has(ref)) { + warnings.push( + `${termLabel}: related ref "${ref}" not found in glossary`, + ); + } + }); + }); +} + +export function validateGlossary(data) { + const errors = []; + const warnings = []; + + if (!data || typeof data !== 'object') { + return { errors: ['Glossary data must be a non-null object'], warnings }; + } + + validateMeta(data.meta, errors); + validateTerms(data.terms, errors, warnings); + + return { errors, warnings }; +} diff --git a/scripts/context/renderers.js b/scripts/context/renderers.js new file mode 100644 index 00000000..f9d22c6f --- /dev/null +++ b/scripts/context/renderers.js @@ -0,0 +1,107 @@ +function escapeCell(text) { + return String(text).replace(/\|/g, '\\|'); +} + +export function renderParamsTable(params) { + if (!params || params.length === 0) return '*No parameters.*'; + + const rows = params.map((p) => { + const name = `\`${p.name}\``; + const type = `\`${escapeCell(p.type)}\``; + let def; + if (p.required === true || p.default === null) { + def = '**required**'; + } else if (p.default === 'undefined') { + def = '—'; + } else { + def = `\`${escapeCell(p.default)}\``; + } + return `| ${name} | ${type} | ${def} | ${escapeCell(p.description)} |`; + }); + + return [ + '| Param | Type | Default | Description |', + '| ----- | ---- | ------- | ----------- |', + ...rows, + ].join('\n'); +} + +export function renderFieldsTable(fields) { + if (!fields || fields.length === 0) return '*No fields.*'; + + const rows = fields.map((f) => { + const name = `\`${f.name}\``; + const type = `\`${escapeCell(f.type)}\``; + const required = f.required ? 'yes' : 'no'; + return `| ${name} | ${type} | ${required} | ${escapeCell(f.description)} |`; + }); + + return [ + '| Field | Type | Required | Description |', + '| ----- | ---- | -------- | ----------- |', + ...rows, + ].join('\n'); +} + +export function renderValuesTable(values) { + if (!values || values.length === 0) return '*No values.*'; + + const rows = values.map( + (v) => `| \`'${v.value}'\` | ${escapeCell(v.description)} |`, + ); + + return [ + '| Value | Description |', + '| ----- | ----------- |', + ...rows, + ].join('\n'); +} + +export function renderCaveatsList(caveats) { + if (!caveats || caveats.length === 0) return ''; + return caveats.map((c) => `- ⚠️ ${c}`).join('\n'); +} + +export function renderCode(code) { + if (!code) return ''; + return `\`\`\`typescript\n${code.trimEnd()}\n\`\`\``; +} + +export function renderSignature(signature) { + if (!signature) return ''; + return `\`${signature}\``; +} + +const TEXT_RENDERERS = { + name: { field: 'name', required: true }, + llm: { field: 'llm', required: true }, + human: { field: 'human', required: true }, + returns: { field: 'returns', required: false }, +}; + +// Computed renderers return fallback text (e.g. "*No parameters.*") when the field is absent, +// rather than erroring — this allows templates to use table renderers on any term safely. +const COMPUTED_RENDERERS = { + signature: (term) => ({ value: renderSignature(term.signature) }), + 'params-table': (term) => ({ value: renderParamsTable(term.params) }), + 'fields-table': (term) => ({ value: renderFieldsTable(term.fields) }), + 'values-table': (term) => ({ value: renderValuesTable(term.values) }), + 'caveats-list': (term) => ({ value: renderCaveatsList(term.caveats) }), + code: (term) => ({ value: renderCode(term.code) }), +}; + +export function resolveRenderer(term, rendererName) { + const textDef = TEXT_RENDERERS[rendererName]; + if (textDef) { + const value = term[textDef.field]; + if (textDef.required && !value) { + return { error: `Term "${term.id}" has no "${textDef.field}" field` }; + } + return { value: value || '' }; + } + + const computed = COMPUTED_RENDERERS[rendererName]; + if (computed) return computed(term); + + return { error: `Unknown renderer "${rendererName}"` }; +} diff --git a/scripts/context/template-processor.js b/scripts/context/template-processor.js new file mode 100644 index 00000000..91f5bd22 --- /dev/null +++ b/scripts/context/template-processor.js @@ -0,0 +1,115 @@ +import { readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { resolveRenderer } from './renderers.js'; + +const MARKER_RE = /(? { + if (type === 'term') { + const dotIdx = arg.indexOf('.'); + if (dotIdx === -1) { + errors.push(`Invalid term marker format: must be id.renderer — got "${arg}"`); + return match; + } + const id = arg.slice(0, dotIdx); + const renderer = arg.slice(dotIdx + 1); + const term = termIndex.get(id); + if (!term) { + errors.push(`Unknown term ID "${id}"`); + return match; + } + const result = resolveRenderer(term, renderer); + if (result.error) { + errors.push(result.error); + return match; + } + if (options.verbose) { + console.log(` {{term:${id}.${renderer}}} → resolved`); + } + return result.value; + } + + if (type === 'include') { + if (!resolveIncludes) return match; + const filePath = resolve(templatesDir, arg); + let fileContent; + try { + fileContent = readFileSync(filePath, 'utf-8'); + } catch { + errors.push(`Include file not found: ${arg}`); + return match; + } + if (options.verbose) { + console.log(` {{include:${arg}}} → resolved`); + } + return processInclude(fileContent, termIndex, templatesDir, errors); + } + + return match; + }); +} + +function processInclude(content, termIndex, templatesDir, errors) { + const lines = content.split('\n'); + const result = []; + let inCodeBlock = false; + + for (const line of lines) { + const trimmed = line.trimStart(); + if (trimmed.startsWith('```') || trimmed.startsWith('~~~')) { + inCodeBlock = !inCodeBlock; + result.push(line); + continue; + } + if (inCodeBlock) { + result.push(line); + continue; + } + result.push(processMarkers(line, termIndex, templatesDir, errors, false)); + } + + return result.join('\n'); +} + +export function processTemplate(content, termIndex, templatesDir, options = {}) { + const errors = []; + const lines = content.split('\n'); + const result = []; + let inCodeBlock = false; + let inFrontmatter = lines.length > 0 && lines[0].trim() === '---'; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + + if (inFrontmatter) { + result.push(line); + if (i > 0 && line.trim() === '---') { + inFrontmatter = false; + } + continue; + } + + const trimmed = line.trimStart(); + if (trimmed.startsWith('```') || trimmed.startsWith('~~~')) { + inCodeBlock = !inCodeBlock; + result.push(line); + continue; + } + + if (inCodeBlock) { + result.push(line); + continue; + } + + result.push(processMarkers(line, termIndex, templatesDir, errors, true, options)); + } + + if (inCodeBlock) { + errors.push('Unterminated code fence (odd number of ``` or ~~~ lines)'); + } + + const output = result.join('\n').replace(/\\\{\{/g, '{{'); + + return { output, errors }; +} diff --git a/scripts/context/ts-extractor.js b/scripts/context/ts-extractor.js new file mode 100644 index 00000000..2c9350e1 --- /dev/null +++ b/scripts/context/ts-extractor.js @@ -0,0 +1,130 @@ +import { Project } from 'ts-morph'; +import { resolve, join } from 'node:path'; +import { existsSync } from 'node:fs'; + +export function createProject(packageDir) { + const tsConfigPath = join(packageDir, 'tsconfig.json'); + const project = new Project({ + tsConfigFilePath: existsSync(tsConfigPath) ? tsConfigPath : undefined, + skipAddingFilesFromTsConfig: true, + }); + return project; +} + +export function validateTermAgainstSource(term, project, packageDir) { + const errors = []; + const warnings = []; + + if (!term.sourceFile || !term.sourceName) { + return { errors, warnings }; + } + + const { sourceFile: relPath, sourceName } = term; + + try { + const absPath = resolve(packageDir, relPath); + if (!existsSync(absPath)) { + errors.push({ message: `Source file not found: ${relPath}`, check: 'file-exists' }); + return { errors, warnings }; + } + + // addSourceFileAtPathIfExists returns null if already added; fall back to getSourceFile for reuse + const sf = project.addSourceFileAtPathIfExists(absPath) ?? project.getSourceFile(absPath); + if (!sf) { + errors.push({ message: `Could not add source file: ${relPath}`, check: 'file-exists' }); + return { errors, warnings }; + } + + const symbol = findSymbol(sf, sourceName); + if (!symbol) { + errors.push({ message: `Symbol "${sourceName}" not found in ${relPath}`, check: 'symbol-exists' }); + return { errors, warnings }; + } + + if (term.params || term.fields) { + validateProperties(symbol, term, errors, warnings); + } + + if (term.values) { + validateEnumValues(symbol, term, errors, warnings); + } + } catch (e) { + errors.push({ message: `ts-morph error for "${sourceName}" in ${relPath}: ${e.message}`, check: 'ts-morph' }); + } + + return { errors, warnings }; +} + +function findSymbol(sf, sourceName) { + if (sourceName.includes('.')) { + const [className, memberName] = sourceName.split('.'); + const cls = sf.getClass(className); + if (!cls) return null; + return cls.getMethod(memberName) ?? cls.getProperty(memberName) ?? null; + } + + return ( + sf.getTypeAlias(sourceName) ?? + sf.getInterface(sourceName) ?? + sf.getFunction(sourceName) ?? + sf.getVariableDeclaration(sourceName) ?? + null + ); +} + +function validateProperties(symbol, term, errors, warnings) { + const type = symbol.getType(); + const sourceProps = type.getProperties(); + const sourcePropNames = new Set(sourceProps.map(p => p.getName())); + + const glossaryEntries = term.params ?? term.fields ?? []; + const glossaryNames = new Set(glossaryEntries.map(e => e.name)); + + for (const entry of glossaryEntries) { + if (!sourcePropNames.has(entry.name)) { + errors.push({ message: `glossary param "${entry.name}" not found in source type`, check: 'param-exists' }); + continue; + } + + if (entry.required !== undefined) { + const sourceProp = sourceProps.find(p => p.getName() === entry.name); + const declarations = sourceProp.getDeclarations(); + const isSourceOptional = declarations.some(d => d.hasQuestionToken?.() ?? false); + + if (entry.required && isSourceOptional) { + warnings.push({ message: `"${entry.name}" is required in glossary but optional in source`, check: 'param-optionality' }); + } else if (!entry.required && !isSourceOptional) { + warnings.push({ message: `"${entry.name}" is optional in glossary but required in source`, check: 'param-optionality' }); + } + } + } + + for (const prop of sourceProps) { + const name = prop.getName(); + if (!glossaryNames.has(name)) { + warnings.push({ message: `source has property "${name}" not listed in glossary`, check: 'missing-member' }); + } + } +} + +function validateEnumValues(symbol, term, errors, warnings) { + const type = symbol.getType(); + const sourceLiterals = type.isUnion() + ? type.getUnionTypes().filter(t => t.isStringLiteral()).map(t => t.getLiteralValue()) + : []; + + const glossaryValues = new Set(term.values.map(v => v.value)); + const sourceValues = new Set(sourceLiterals); + + for (const val of glossaryValues) { + if (!sourceValues.has(val)) { + errors.push({ message: `glossary value "${val}" not found in source union`, check: 'value-exists' }); + } + } + + for (const val of sourceValues) { + if (!glossaryValues.has(val)) { + warnings.push({ message: `source has value "${val}" not listed in glossary`, check: 'missing-value' }); + } + } +} diff --git a/scripts/package.json b/scripts/package.json new file mode 100644 index 00000000..8dbc71d2 --- /dev/null +++ b/scripts/package.json @@ -0,0 +1,15 @@ +{ + "name": "@wix/context-scripts", + "private": true, + "type": "module", + "scripts": { + "build": "node build-context.js --all", + "validate": "node validate-context.js --all", + "test": "vitest run" + }, + "devDependencies": { + "ts-morph": "^25.0.0", + "vitest": "^4.0.14", + "yaml": "^2.7.0" + } +} diff --git a/scripts/test-fixtures/glossary.yaml b/scripts/test-fixtures/glossary.yaml new file mode 100644 index 00000000..04aaa193 --- /dev/null +++ b/scripts/test-fixtures/glossary.yaml @@ -0,0 +1,114 @@ +meta: + package: "@wix/test-pkg" + version: "1.0.0" + lastAudit: "2026-05-01" + +terms: + - id: trigger-viewEnter + name: viewEnter + category: trigger + llm: >- + Fires when element crosses viewport threshold via IntersectionObserver. + human: >- + Triggers an animation when an element scrolls into the visible area + of the page. + params: + - name: threshold + type: number + default: 0.2 + description: "Fraction of element that must be visible (0–1)" + - name: inset + type: string + default: "undefined" + description: "Mapped to IntersectionObserver rootMargin" + - name: effectId + type: string + default: null + required: true + description: "ID of the preceding effect to chain after" + caveats: + - >- + When source and target are the same element, only triggerType 'once' + is reliable. + sourceFile: src/types/triggers.ts + sourceName: ViewEnterParams + related: + - trigger-hover + - config-InteractConfig + + - id: trigger-hover + name: hover + category: trigger + llm: >- + Fires on mouseenter/mouseleave events. + human: >- + Triggers animations when the user hovers over an element. + params: + - name: delay + type: number + default: 0 + description: "Delay before triggering in ms" + + - id: config-InteractConfig + name: InteractConfig + category: config + llm: >- + Top-level configuration object passed to Interact.create(). + human: >- + The root configuration object that defines all interactions. + fields: + - name: effects + type: "Record" + required: true + description: "Reusable effect definitions keyed by effectId" + - name: interactions + type: "Interaction[]" + required: true + description: "Array of trigger-to-effect bindings" + - name: sequences + type: "Record" + required: false + description: "Reusable sequence definitions" + + - id: enum-TriggerType + name: TriggerType + category: enum + llm: >- + Controls repeat behavior for time-based effects. + human: >- + Determines how an effect responds when its trigger fires multiple times. + values: + - value: "once" + description: "Fires once then stops." + - value: "repeat" + description: "Fires every time the trigger activates." + - value: "alternate" + description: "Alternates forward/reverse." + + - id: api-create + name: Interact.create + category: api + llm: >- + Creates a new Interact instance from config. + human: >- + Initializes the interaction system with a configuration object. + signature: "static create(config: InteractConfig): Interact" + returns: "Interact instance" + code: | + const instance = Interact.create(config); + related: + - config-InteractConfig + + - id: concept-fouc + name: FOUC Prevention + category: concept + llm: >- + Requires BOTH generate(config) and data-interact-initial="true" on elements. + human: >- + Flash of Un-animated Content occurs when entrance-animated elements + briefly show their final state before the animation runs. + caveats: + - "Only valid for viewEnter + triggerType 'once'." + - "generate() should run server-side or at build time." + code: | + const css = generate(config); diff --git a/scripts/test-fixtures/source/types.ts b/scripts/test-fixtures/source/types.ts new file mode 100644 index 00000000..9f253d1a --- /dev/null +++ b/scripts/test-fixtures/source/types.ts @@ -0,0 +1,13 @@ +export type ViewEnterParams = { + threshold: number; + inset?: string; + effectId: string; +}; + +export type TriggerType = 'once' | 'repeat' | 'alternate' | 'state'; + +export interface InteractConfig { + effects: Record; + interactions: unknown[]; + sequences?: Record; +} diff --git a/scripts/test-fixtures/templates/docs/README.md b/scripts/test-fixtures/templates/docs/README.md new file mode 100644 index 00000000..eaa430db --- /dev/null +++ b/scripts/test-fixtures/templates/docs/README.md @@ -0,0 +1,11 @@ +# Test Package Docs + +## Getting Started + +{{term:api-create.human}} + +### Quick Start + +{{term:api-create.code}} + +Returns: {{term:api-create.returns}} diff --git a/scripts/test-fixtures/templates/fragments/intro.md b/scripts/test-fixtures/templates/fragments/intro.md new file mode 100644 index 00000000..21c076f2 --- /dev/null +++ b/scripts/test-fixtures/templates/fragments/intro.md @@ -0,0 +1,3 @@ +This is the **introduction** fragment. + +FOUC: {{term:concept-fouc.llm}} diff --git a/scripts/test-fixtures/templates/rules/code-block-skip.md b/scripts/test-fixtures/templates/rules/code-block-skip.md new file mode 100644 index 00000000..cd8de2a8 --- /dev/null +++ b/scripts/test-fixtures/templates/rules/code-block-skip.md @@ -0,0 +1,10 @@ +# Code Block Test + +Normal marker: {{term:trigger-hover.name}} + +```typescript +// This marker should NOT be replaced: +{{term:trigger-viewEnter.name}} +``` + +After code block: {{term:trigger-hover.llm}} diff --git a/scripts/test-fixtures/templates/rules/config.md b/scripts/test-fixtures/templates/rules/config.md new file mode 100644 index 00000000..dc06ff7b --- /dev/null +++ b/scripts/test-fixtures/templates/rules/config.md @@ -0,0 +1,19 @@ +--- +name: test-config +description: >- + Test config reference file. +--- + +# Configuration + +## InteractConfig + +{{term:config-InteractConfig.human}} + +### Fields + +{{term:config-InteractConfig.fields-table}} + +## TriggerType + +{{term:enum-TriggerType.values-table}} diff --git a/scripts/test-fixtures/templates/rules/errors.md b/scripts/test-fixtures/templates/rules/errors.md new file mode 100644 index 00000000..9be94dc9 --- /dev/null +++ b/scripts/test-fixtures/templates/rules/errors.md @@ -0,0 +1,5 @@ +# Errors Test + +Unknown term: {{term:nonexistent-term.llm}} + +Unknown renderer: {{term:trigger-viewEnter.bad-renderer}} diff --git a/scripts/test-fixtures/templates/rules/escaped.md b/scripts/test-fixtures/templates/rules/escaped.md new file mode 100644 index 00000000..eab11e06 --- /dev/null +++ b/scripts/test-fixtures/templates/rules/escaped.md @@ -0,0 +1,5 @@ +# Escaped Markers + +This is a literal: \{{term:trigger-viewEnter.name}} + +This is real: {{term:trigger-hover.name}} diff --git a/scripts/test-fixtures/templates/rules/triggers.md b/scripts/test-fixtures/templates/rules/triggers.md new file mode 100644 index 00000000..1163142b --- /dev/null +++ b/scripts/test-fixtures/templates/rules/triggers.md @@ -0,0 +1,23 @@ +--- +name: test-triggers +description: >- + Test trigger reference file. +--- + +# Triggers + +## viewEnter + +{{term:trigger-viewEnter.human}} + +### Parameters + +{{term:trigger-viewEnter.params-table}} + +### Caveats + +{{term:trigger-viewEnter.caveats-list}} + +## hover + +{{term:trigger-hover.llm}} diff --git a/scripts/test-fixtures/templates/rules/with-include.md b/scripts/test-fixtures/templates/rules/with-include.md new file mode 100644 index 00000000..76f76a23 --- /dev/null +++ b/scripts/test-fixtures/templates/rules/with-include.md @@ -0,0 +1,9 @@ +# Overview + +{{include:fragments/intro.md}} + +## API + +{{term:api-create.signature}} + +{{term:api-create.code}} diff --git a/scripts/validate-context.js b/scripts/validate-context.js new file mode 100644 index 00000000..9c9d67ad --- /dev/null +++ b/scripts/validate-context.js @@ -0,0 +1,131 @@ +import { parseArgs } from 'node:util'; +import { existsSync } from 'node:fs'; +import { resolve, join } from 'node:path'; +import { loadAndValidateGlossary } from './context/glossary-loader.js'; +import { createProject, validateTermAgainstSource } from './context/ts-extractor.js'; +import { discoverPackages } from './context/cli-helpers.js'; + +const { values: flags } = parseArgs({ + options: { + package: { type: 'string', multiple: true }, + all: { type: 'boolean', default: false }, + json: { type: 'boolean', default: false }, + }, + strict: true, +}); + +const REPO_ROOT = resolve(import.meta.dirname, '..'); +const PACKAGES_DIR = join(REPO_ROOT, 'packages'); + +function validatePackage(pkgName) { + const pkgDir = join(PACKAGES_DIR, pkgName); + const glossaryPath = join(pkgDir, 'context', 'glossary.yaml'); + + if (!existsSync(glossaryPath)) { + return { + package: pkgName, + totalTerms: 0, + validated: 0, + skipped: 0, + errors: [{ termId: '', check: 'file-exists', message: `Glossary not found: ${glossaryPath}` }], + warnings: [], + }; + } + + const { data, errors: schemaErrors } = loadAndValidateGlossary(glossaryPath); + + if (schemaErrors.length > 0) { + return { + package: data?.meta?.package || pkgName, + totalTerms: 0, + validated: 0, + skipped: 0, + errors: schemaErrors.map((msg) => ({ termId: '', check: 'schema', message: msg })), + warnings: [], + }; + } + + const terms = data.terms; + const termsWithSource = terms.filter((t) => t.sourceFile && t.sourceName); + const project = createProject(pkgDir); + + const results = []; + const allErrors = []; + const allWarnings = []; + + for (const term of termsWithSource) { + const { errors, warnings } = validateTermAgainstSource(term, project, pkgDir); + + for (const e of errors) { + allErrors.push({ termId: term.id, ...e, sourceFile: term.sourceFile, sourceName: term.sourceName }); + } + for (const w of warnings) { + allWarnings.push({ termId: term.id, ...w, sourceFile: term.sourceFile, sourceName: term.sourceName }); + } + + results.push({ term, errors, warnings }); + } + + return { + package: data.meta.package, + totalTerms: terms.length, + validated: termsWithSource.length, + skipped: terms.length - termsWithSource.length, + errors: allErrors, + warnings: allWarnings, + results, + }; +} + +const packages = discoverPackages(flags); + +if (packages.length === 0) { + console.error('No packages specified. Use --package or --all.'); + process.exit(1); +} + +let hasErrors = false; + +for (const pkgName of packages) { + const report = validatePackage(pkgName); + + if (flags.json) { + const { results, ...jsonReport } = report; + console.log(JSON.stringify(jsonReport, null, 2)); + } else { + console.log(`\nValidating ${report.package} glossary (${report.totalTerms} terms, ${report.validated} with sourceFile)...`); + console.log(''); + + if (report.results) { + for (const { term, errors, warnings } of report.results) { + if (errors.length === 0 && warnings.length === 0) { + const memberCount = (term.params ?? term.fields ?? term.values ?? []).length; + console.log(`✓ ${term.id} — ${term.sourceName} in ${term.sourceFile}${memberCount ? ` — ${memberCount} members match` : ''}`); + } else { + console.log(`✗ ${term.id} — ${term.sourceName} in ${term.sourceFile}`); + for (const e of errors) { + console.log(` ERROR: ${e.message}`); + } + for (const w of warnings) { + console.log(` WARNING: ${w.message}`); + } + } + } + } + + if (report.skipped > 0) { + console.log(`- ${report.skipped} term(s) skipped (no sourceFile)`); + } + + console.log(''); + const failedTerms = new Set(report.errors.map((e) => e.termId)).size; + const passed = report.validated - failedTerms; + console.log(`Summary: ${passed} passed, ${report.errors.length} error(s), ${report.warnings.length} warning(s), ${report.skipped} skipped`); + } + + if (report.errors.length > 0) { + hasErrors = true; + } +} + +process.exit(hasErrors ? 1 : 0); diff --git a/scripts/vitest.config.js b/scripts/vitest.config.js new file mode 100644 index 00000000..2fd48c08 --- /dev/null +++ b/scripts/vitest.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + root: import.meta.dirname, + include: ['**/*.test.js'], + }, +}); diff --git a/yarn.lock b/yarn.lock index bd3db145..ef8767f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,7 +7,7 @@ __metadata: "@asamuzakjp/css-color@npm:^3.2.0": version: 3.2.0 - resolution: "@asamuzakjp/css-color@npm:3.2.0" + resolution: "@asamuzakjp/css-color@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40asamuzakjp%2Fcss-color%2F-%2Fcss-color-3.2.0.tgz" dependencies: "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-color-parser": "npm:^3.0.9" @@ -20,7 +20,7 @@ __metadata: "@babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 - resolution: "@babel/code-frame@npm:7.29.0" + resolution: "@babel/code-frame@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fcode-frame%2F-%2Fcode-frame-7.29.0.tgz" dependencies: "@babel/helper-validator-identifier": "npm:^7.28.5" js-tokens: "npm:^4.0.0" @@ -30,15 +30,15 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.28.6": - version: 7.29.0 - resolution: "@babel/compat-data@npm:7.29.0" - checksum: 10/7f21beedb930ed8fbf7eabafc60e6e6521c1d905646bf1317a61b2163339157fe797efeb85962bf55136e166b01fd1a6b526a15974b92a8b877d564dcb6c9580 + version: 7.29.3 + resolution: "@babel/compat-data@npm:7.29.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fcompat-data%2F-%2Fcompat-data-7.29.3.tgz" + checksum: 10/3c29661756a7c1cbc5248a7bdc657c0cb49f350e3157040c20486759f1f50a08a0b385fd7d813df50b96cd6fad5896d30ba6abab7602641bd1410ed346c1812f languageName: node linkType: hard "@babel/core@npm:^7.24.4, @babel/core@npm:^7.28.0": version: 7.29.0 - resolution: "@babel/core@npm:7.29.0" + resolution: "@babel/core@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fcore%2F-%2Fcore-7.29.0.tgz" dependencies: "@babel/code-frame": "npm:^7.29.0" "@babel/generator": "npm:^7.29.0" @@ -61,7 +61,7 @@ __metadata: "@babel/generator@npm:^7.29.0": version: 7.29.1 - resolution: "@babel/generator@npm:7.29.1" + resolution: "@babel/generator@npm:7.29.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fgenerator%2F-%2Fgenerator-7.29.1.tgz" dependencies: "@babel/parser": "npm:^7.29.0" "@babel/types": "npm:^7.29.0" @@ -74,7 +74,7 @@ __metadata: "@babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/helper-compilation-targets@npm:7.28.6" + resolution: "@babel/helper-compilation-targets@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-compilation-targets%2F-%2Fhelper-compilation-targets-7.28.6.tgz" dependencies: "@babel/compat-data": "npm:^7.28.6" "@babel/helper-validator-option": "npm:^7.27.1" @@ -87,14 +87,14 @@ __metadata: "@babel/helper-globals@npm:^7.28.0": version: 7.28.0 - resolution: "@babel/helper-globals@npm:7.28.0" + resolution: "@babel/helper-globals@npm:7.28.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-globals%2F-%2Fhelper-globals-7.28.0.tgz" checksum: 10/91445f7edfde9b65dcac47f4f858f68dc1661bf73332060ab67ad7cc7b313421099a2bfc4bda30c3db3842cfa1e86fffbb0d7b2c5205a177d91b22c8d7d9cb47 languageName: node linkType: hard "@babel/helper-module-imports@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/helper-module-imports@npm:7.28.6" + resolution: "@babel/helper-module-imports@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-module-imports%2F-%2Fhelper-module-imports-7.28.6.tgz" dependencies: "@babel/traverse": "npm:^7.28.6" "@babel/types": "npm:^7.28.6" @@ -104,7 +104,7 @@ __metadata: "@babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/helper-module-transforms@npm:7.28.6" + resolution: "@babel/helper-module-transforms@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-module-transforms%2F-%2Fhelper-module-transforms-7.28.6.tgz" dependencies: "@babel/helper-module-imports": "npm:^7.28.6" "@babel/helper-validator-identifier": "npm:^7.28.5" @@ -117,56 +117,56 @@ __metadata: "@babel/helper-plugin-utils@npm:^7.27.1": version: 7.28.6 - resolution: "@babel/helper-plugin-utils@npm:7.28.6" + resolution: "@babel/helper-plugin-utils@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-plugin-utils%2F-%2Fhelper-plugin-utils-7.28.6.tgz" checksum: 10/21c853bbc13dbdddf03309c9a0477270124ad48989e1ad6524b83e83a77524b333f92edd2caae645c5a7ecf264ec6d04a9ebe15aeb54c7f33c037b71ec521e4a languageName: node linkType: hard "@babel/helper-string-parser@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/helper-string-parser@npm:7.27.1" + resolution: "@babel/helper-string-parser@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-string-parser%2F-%2Fhelper-string-parser-7.27.1.tgz" checksum: 10/0ae29cc2005084abdae2966afdb86ed14d41c9c37db02c3693d5022fba9f5d59b011d039380b8e537c34daf117c549f52b452398f576e908fb9db3c7abbb3a00 languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 - resolution: "@babel/helper-validator-identifier@npm:7.28.5" + resolution: "@babel/helper-validator-identifier@npm:7.28.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-validator-identifier%2F-%2Fhelper-validator-identifier-7.28.5.tgz" checksum: 10/8e5d9b0133702cfacc7f368bf792f0f8ac0483794877c6dca5fcb73810ee138e27527701826fb58a40a004f3a5ec0a2f3c3dd5e326d262530b119918f3132ba7 languageName: node linkType: hard "@babel/helper-validator-option@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/helper-validator-option@npm:7.27.1" + resolution: "@babel/helper-validator-option@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-validator-option%2F-%2Fhelper-validator-option-7.27.1.tgz" checksum: 10/db73e6a308092531c629ee5de7f0d04390835b21a263be2644276cb27da2384b64676cab9f22cd8d8dbd854c92b1d7d56fc8517cf0070c35d1c14a8c828b0903 languageName: node linkType: hard "@babel/helpers@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/helpers@npm:7.28.6" + version: 7.29.2 + resolution: "@babel/helpers@npm:7.29.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelpers%2F-%2Fhelpers-7.29.2.tgz" dependencies: "@babel/template": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - checksum: 10/213485cdfffc4deb81fc1bf2cefed61bc825049322590ef69690e223faa300a2a4d1e7d806c723bb1f1f538226b9b1b6c356ca94eb47fa7c6d9e9f251ee425e6 + "@babel/types": "npm:^7.29.0" + checksum: 10/ad77706f3f917bd224e037fd0fbc67c45b240d2a45981321b093f70b7c535bee9bbddb0a19e34c362cb000ae21cdd8638f8a87a5f305a5bd7547e93fdcc524fe languageName: node linkType: hard "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/parser@npm:7.29.0" + version: 7.29.3 + resolution: "@babel/parser@npm:7.29.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fparser%2F-%2Fparser-7.29.3.tgz" dependencies: "@babel/types": "npm:^7.29.0" bin: parser: ./bin/babel-parser.js - checksum: 10/b1576dca41074997a33ee740d87b330ae2e647f4b7da9e8d2abd3772b18385d303b0cee962b9b88425e0f30d58358dbb8d63792c1a2d005c823d335f6a029747 + checksum: 10/10e8f34e0fdaa495b9db8be71f4eb29b16d8a57e0818c1bb1c4084015b0383803fd77812ed41597760cbf3d9ab3ae9f4af54f39ff5e5d8e081ba43593232f0ca languageName: node linkType: hard "@babel/plugin-transform-react-jsx-self@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fplugin-transform-react-jsx-self%2F-%2Fplugin-transform-react-jsx-self-7.27.1.tgz" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: @@ -177,7 +177,7 @@ __metadata: "@babel/plugin-transform-react-jsx-source@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fplugin-transform-react-jsx-source%2F-%2Fplugin-transform-react-jsx-source-7.27.1.tgz" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: @@ -187,15 +187,15 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.12.5": - version: 7.28.6 - resolution: "@babel/runtime@npm:7.28.6" - checksum: 10/fbcd439cb74d4a681958eb064c509829e3f46d8a4bfaaf441baa81bb6733d1e680bccc676c813883d7741bcaada1d0d04b15aa320ef280b5734e2192b50decf9 + version: 7.29.2 + resolution: "@babel/runtime@npm:7.29.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fruntime%2F-%2Fruntime-7.29.2.tgz" + checksum: 10/f55ba4052aa0255055b34371a145fbe69c29b37b49eaea14805b095bfb4153701486416e89392fd27ec8abafa53868be86e960b9f8f959fff91f2c8ac2a14b02 languageName: node linkType: hard "@babel/template@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/template@npm:7.28.6" + resolution: "@babel/template@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Ftemplate%2F-%2Ftemplate-7.28.6.tgz" dependencies: "@babel/code-frame": "npm:^7.28.6" "@babel/parser": "npm:^7.28.6" @@ -206,7 +206,7 @@ __metadata: "@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 - resolution: "@babel/traverse@npm:7.29.0" + resolution: "@babel/traverse@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Ftraverse%2F-%2Ftraverse-7.29.0.tgz" dependencies: "@babel/code-frame": "npm:^7.29.0" "@babel/generator": "npm:^7.29.0" @@ -221,7 +221,7 @@ __metadata: "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": version: 7.29.0 - resolution: "@babel/types@npm:7.29.0" + resolution: "@babel/types@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Ftypes%2F-%2Ftypes-7.29.0.tgz" dependencies: "@babel/helper-string-parser": "npm:^7.27.1" "@babel/helper-validator-identifier": "npm:^7.28.5" @@ -231,21 +231,21 @@ __metadata: "@bcoe/v8-coverage@npm:^1.0.2": version: 1.0.2 - resolution: "@bcoe/v8-coverage@npm:1.0.2" + resolution: "@bcoe/v8-coverage@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40bcoe%2Fv8-coverage%2F-%2Fv8-coverage-1.0.2.tgz" checksum: 10/46600b2dde460269b07a8e4f12b72e418eae1337b85c979f43af3336c9a1c65b04e42508ab6b245f1e0e3c64328e1c38d8cd733e4a7cebc4fbf9cf65c6e59937 languageName: node linkType: hard "@csstools/color-helpers@npm:^5.1.0": version: 5.1.0 - resolution: "@csstools/color-helpers@npm:5.1.0" + resolution: "@csstools/color-helpers@npm:5.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcolor-helpers%2F-%2Fcolor-helpers-5.1.0.tgz" checksum: 10/0138b3d5ccbe77aeccf6721fd008a53523c70e932f0c82dca24a1277ca780447e1d8357da47512ebf96358476f8764de57002f3e491920d67e69202f5a74c383 languageName: node linkType: hard "@csstools/css-calc@npm:^2.1.3, @csstools/css-calc@npm:^2.1.4": version: 2.1.4 - resolution: "@csstools/css-calc@npm:2.1.4" + resolution: "@csstools/css-calc@npm:2.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-calc%2F-%2Fcss-calc-2.1.4.tgz" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.5 "@csstools/css-tokenizer": ^3.0.4 @@ -255,7 +255,7 @@ __metadata: "@csstools/css-color-parser@npm:^3.0.9": version: 3.1.0 - resolution: "@csstools/css-color-parser@npm:3.1.0" + resolution: "@csstools/css-color-parser@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-color-parser%2F-%2Fcss-color-parser-3.1.0.tgz" dependencies: "@csstools/color-helpers": "npm:^5.1.0" "@csstools/css-calc": "npm:^2.1.4" @@ -268,7 +268,7 @@ __metadata: "@csstools/css-parser-algorithms@npm:^3.0.4": version: 3.0.5 - resolution: "@csstools/css-parser-algorithms@npm:3.0.5" + resolution: "@csstools/css-parser-algorithms@npm:3.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-parser-algorithms%2F-%2Fcss-parser-algorithms-3.0.5.tgz" peerDependencies: "@csstools/css-tokenizer": ^3.0.4 checksum: 10/e93083b5cb36a3c1e7a47ce10cf62961d05bd1e4c608bb3ee50186ff740157ab0ec16a3956f7b86251efd10703034d849693201eea858ae904848c68d2d46ada @@ -277,196 +277,224 @@ __metadata: "@csstools/css-tokenizer@npm:^3.0.3": version: 3.0.4 - resolution: "@csstools/css-tokenizer@npm:3.0.4" + resolution: "@csstools/css-tokenizer@npm:3.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-tokenizer%2F-%2Fcss-tokenizer-3.0.4.tgz" checksum: 10/eb6c84c086312f6bb8758dfe2c85addd7475b0927333c5e39a4d59fb210b9810f8c346972046f95e60a721329cffe98895abe451e51de753ad1ca7a8c24ec65f languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/aix-ppc64@npm:0.27.3" +"@emnapi/core@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/core@npm:1.10.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40emnapi%2Fcore%2F-%2Fcore-1.10.0.tgz" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.1" + tslib: "npm:^2.4.0" + checksum: 10/d32f386084e64deaf2609aabb8295d1ad5af6144d0f46d2060b76cc53f1f3b486df54bec9b0f33c37d85a3822e1193ebcd4e3deb4a5f0e4cd650aa2ffc631715 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/runtime@npm:1.10.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40emnapi%2Fruntime%2F-%2Fruntime-1.10.0.tgz" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/d21083d07fa0c2da171c142e78ef986b66b07d45b06accc0bcaf49fcc61bb4dbc10e1c1760813070165b9f49b054376a931045347f21c0f42ff1eb2d2040faac + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.2.1": + version: 1.2.1 + resolution: "@emnapi/wasi-threads@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40emnapi%2Fwasi-threads%2F-%2Fwasi-threads-1.2.1.tgz" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/57cd4292be81c05d26aa886d68a9e4c449ff666e8503fed6463dfc6b64a4e4213f03c152d53296b7cda32840271e38cd33347332070658f01befeb9bf4e59f36 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/aix-ppc64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Faix-ppc64%2F-%2Faix-ppc64-0.27.7.tgz" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/android-arm64@npm:0.27.3" +"@esbuild/android-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/android-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fandroid-arm64%2F-%2Fandroid-arm64-0.27.7.tgz" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/android-arm@npm:0.27.3" +"@esbuild/android-arm@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/android-arm@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fandroid-arm%2F-%2Fandroid-arm-0.27.7.tgz" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/android-x64@npm:0.27.3" +"@esbuild/android-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/android-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fandroid-x64%2F-%2Fandroid-x64-0.27.7.tgz" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/darwin-arm64@npm:0.27.3" +"@esbuild/darwin-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/darwin-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fdarwin-arm64%2F-%2Fdarwin-arm64-0.27.7.tgz" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/darwin-x64@npm:0.27.3" +"@esbuild/darwin-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/darwin-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fdarwin-x64%2F-%2Fdarwin-x64-0.27.7.tgz" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/freebsd-arm64@npm:0.27.3" +"@esbuild/freebsd-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/freebsd-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Ffreebsd-arm64%2F-%2Ffreebsd-arm64-0.27.7.tgz" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/freebsd-x64@npm:0.27.3" +"@esbuild/freebsd-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/freebsd-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Ffreebsd-x64%2F-%2Ffreebsd-x64-0.27.7.tgz" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-arm64@npm:0.27.3" +"@esbuild/linux-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-arm64%2F-%2Flinux-arm64-0.27.7.tgz" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-arm@npm:0.27.3" +"@esbuild/linux-arm@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-arm@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-arm%2F-%2Flinux-arm-0.27.7.tgz" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-ia32@npm:0.27.3" +"@esbuild/linux-ia32@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-ia32@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-ia32%2F-%2Flinux-ia32-0.27.7.tgz" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-loong64@npm:0.27.3" +"@esbuild/linux-loong64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-loong64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-loong64%2F-%2Flinux-loong64-0.27.7.tgz" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-mips64el@npm:0.27.3" +"@esbuild/linux-mips64el@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-mips64el@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-mips64el%2F-%2Flinux-mips64el-0.27.7.tgz" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-ppc64@npm:0.27.3" +"@esbuild/linux-ppc64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-ppc64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-ppc64%2F-%2Flinux-ppc64-0.27.7.tgz" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-riscv64@npm:0.27.3" +"@esbuild/linux-riscv64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-riscv64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-riscv64%2F-%2Flinux-riscv64-0.27.7.tgz" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-s390x@npm:0.27.3" +"@esbuild/linux-s390x@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-s390x@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-s390x%2F-%2Flinux-s390x-0.27.7.tgz" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-x64@npm:0.27.3" +"@esbuild/linux-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-x64%2F-%2Flinux-x64-0.27.7.tgz" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/netbsd-arm64@npm:0.27.3" +"@esbuild/netbsd-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/netbsd-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fnetbsd-arm64%2F-%2Fnetbsd-arm64-0.27.7.tgz" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/netbsd-x64@npm:0.27.3" +"@esbuild/netbsd-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/netbsd-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fnetbsd-x64%2F-%2Fnetbsd-x64-0.27.7.tgz" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/openbsd-arm64@npm:0.27.3" +"@esbuild/openbsd-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/openbsd-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fopenbsd-arm64%2F-%2Fopenbsd-arm64-0.27.7.tgz" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/openbsd-x64@npm:0.27.3" +"@esbuild/openbsd-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/openbsd-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fopenbsd-x64%2F-%2Fopenbsd-x64-0.27.7.tgz" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openharmony-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/openharmony-arm64@npm:0.27.3" +"@esbuild/openharmony-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/openharmony-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fopenharmony-arm64%2F-%2Fopenharmony-arm64-0.27.7.tgz" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/sunos-x64@npm:0.27.3" +"@esbuild/sunos-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/sunos-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fsunos-x64%2F-%2Fsunos-x64-0.27.7.tgz" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/win32-arm64@npm:0.27.3" +"@esbuild/win32-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/win32-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fwin32-arm64%2F-%2Fwin32-arm64-0.27.7.tgz" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/win32-ia32@npm:0.27.3" +"@esbuild/win32-ia32@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/win32-ia32@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fwin32-ia32%2F-%2Fwin32-ia32-0.27.7.tgz" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/win32-x64@npm:0.27.3" +"@esbuild/win32-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/win32-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fwin32-x64%2F-%2Fwin32-x64-0.27.7.tgz" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": version: 4.9.1 - resolution: "@eslint-community/eslint-utils@npm:4.9.1" + resolution: "@eslint-community/eslint-utils@npm:4.9.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint-community%2Feslint-utils%2F-%2Feslint-utils-4.9.1.tgz" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: @@ -477,25 +505,25 @@ __metadata: "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": version: 4.12.2 - resolution: "@eslint-community/regexpp@npm:4.12.2" + resolution: "@eslint-community/regexpp@npm:4.12.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint-community%2Fregexpp%2F-%2Fregexpp-4.12.2.tgz" checksum: 10/049b280fddf71dd325514e0a520024969431dc3a8b02fa77476e6820e9122f28ab4c9168c11821f91a27982d2453bcd7a66193356ea84e84fb7c8d793be1ba0c languageName: node linkType: hard "@eslint/config-array@npm:^0.21.1": - version: 0.21.1 - resolution: "@eslint/config-array@npm:0.21.1" + version: 0.21.2 + resolution: "@eslint/config-array@npm:0.21.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fconfig-array%2F-%2Fconfig-array-0.21.2.tgz" dependencies: "@eslint/object-schema": "npm:^2.1.7" debug: "npm:^4.3.1" - minimatch: "npm:^3.1.2" - checksum: 10/6eaa0435972f735ce52d581f355a0b616e50a9b8a73304a7015398096e252798b9b3b968a67b524eefb0fdeacc57c4d960f0ec6432abe1c1e24be815b88c5d18 + minimatch: "npm:^3.1.5" + checksum: 10/148477ba995cf57fc725601916d5a7914aa249112d8bec2c3ac9122e2b2f540e6ef013ff4f6785346a4b565f09b20db127fa6f7322f5ffbdb3f1f8d2078a531c languageName: node linkType: hard "@eslint/config-helpers@npm:^0.4.2": version: 0.4.2 - resolution: "@eslint/config-helpers@npm:0.4.2" + resolution: "@eslint/config-helpers@npm:0.4.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fconfig-helpers%2F-%2Fconfig-helpers-0.4.2.tgz" dependencies: "@eslint/core": "npm:^0.17.0" checksum: 10/3f2b4712d8e391c36ec98bc200f7dea423dfe518e42956569666831b89ede83b33120c761dfd3ab6347d8e8894a6d4af47254a18d464a71c6046fd88065f6daf @@ -504,7 +532,7 @@ __metadata: "@eslint/core@npm:^0.17.0": version: 0.17.0 - resolution: "@eslint/core@npm:0.17.0" + resolution: "@eslint/core@npm:0.17.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fcore%2F-%2Fcore-0.17.0.tgz" dependencies: "@types/json-schema": "npm:^7.0.15" checksum: 10/f9a428cc651ec15fb60d7d60c2a7bacad4666e12508320eafa98258e976fafaa77d7be7be91519e75f801f15f830105420b14a458d4aab121a2b0a59bc43517b @@ -512,39 +540,39 @@ __metadata: linkType: hard "@eslint/eslintrc@npm:^3.3.1": - version: 3.3.3 - resolution: "@eslint/eslintrc@npm:3.3.3" + version: 3.3.5 + resolution: "@eslint/eslintrc@npm:3.3.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Feslintrc%2F-%2Feslintrc-3.3.5.tgz" dependencies: - ajv: "npm:^6.12.4" + ajv: "npm:^6.14.0" debug: "npm:^4.3.2" espree: "npm:^10.0.1" globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.1" - minimatch: "npm:^3.1.2" + minimatch: "npm:^3.1.5" strip-json-comments: "npm:^3.1.1" - checksum: 10/b586a364ff15ce1b68993aefc051ca330b1fece15fb5baf4a708d00113f9a14895cffd84a5f24c5a97bd4b4321130ab2314f90aa462a250f6b859c2da2cba1f3 + checksum: 10/edabb65693d82a88cac3b2cf932a0f825e986b5e0a21ef08782d07e3a61ad87d39db67cfd5aeb146fd5053e5e24e389dbe5649ab22936a71d633c7b32a7e6d86 languageName: node linkType: hard "@eslint/js@npm:9.39.2": version: 9.39.2 - resolution: "@eslint/js@npm:9.39.2" + resolution: "@eslint/js@npm:9.39.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fjs%2F-%2Fjs-9.39.2.tgz" checksum: 10/6b7f676746f3111b5d1b23715319212ab9297868a0fa9980d483c3da8965d5841673aada2d5653e85a3f7156edee0893a7ae7035211b4efdcb2848154bb947f2 languageName: node linkType: hard "@eslint/object-schema@npm:^2.1.7": version: 2.1.7 - resolution: "@eslint/object-schema@npm:2.1.7" + resolution: "@eslint/object-schema@npm:2.1.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fobject-schema%2F-%2Fobject-schema-2.1.7.tgz" checksum: 10/946ef5d6235b4d1c0907c6c6e6429c8895f535380c562b7705c131f63f2e961b06e8785043c86a293da48e0a60c6286d98ba395b8b32ea55561fe6e4417cb7e4 languageName: node linkType: hard "@eslint/plugin-kit@npm:^0.4.1": version: 0.4.1 - resolution: "@eslint/plugin-kit@npm:0.4.1" + resolution: "@eslint/plugin-kit@npm:0.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fplugin-kit%2F-%2Fplugin-kit-0.4.1.tgz" dependencies: "@eslint/core": "npm:^0.17.0" levn: "npm:^0.4.1" @@ -552,40 +580,50 @@ __metadata: languageName: node linkType: hard -"@humanfs/core@npm:^0.19.1": - version: 0.19.1 - resolution: "@humanfs/core@npm:0.19.1" - checksum: 10/270d936be483ab5921702623bc74ce394bf12abbf57d9145a69e8a0d1c87eb1c768bd2d93af16c5705041e257e6d9cc7529311f63a1349f3678abc776fc28523 +"@humanfs/core@npm:^0.19.2": + version: 0.19.2 + resolution: "@humanfs/core@npm:0.19.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40humanfs%2Fcore%2F-%2Fcore-0.19.2.tgz" + dependencies: + "@humanfs/types": "npm:^0.15.0" + checksum: 10/c6c0273721ec8df3d36a57c390a11a168d0a2f513d78bceb25165bded4fcb73609b1a317edc6c8f331cefd4b47285dde0b1e6679e08ef7f062232ec14fe05312 languageName: node linkType: hard "@humanfs/node@npm:^0.16.6": - version: 0.16.7 - resolution: "@humanfs/node@npm:0.16.7" + version: 0.16.8 + resolution: "@humanfs/node@npm:0.16.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40humanfs%2Fnode%2F-%2Fnode-0.16.8.tgz" dependencies: - "@humanfs/core": "npm:^0.19.1" + "@humanfs/core": "npm:^0.19.2" + "@humanfs/types": "npm:^0.15.0" "@humanwhocodes/retry": "npm:^0.4.0" - checksum: 10/b3633d3dce898592cac515ba5e6693c78e6be92863541d3eaf2c009b10f52b2fa62ff6e6e06f240f2447ddbe7b5f1890bc34e9308470675c876eee207553a08d + checksum: 10/ed01b3c066d9cec7526d139b9e71ca00ee4a30b3b5f5f5c198eb069c3509a3e167e180ba7e1e5a83b9571e906c4908bd20402b47586887452311af7354995e95 + languageName: node + linkType: hard + +"@humanfs/types@npm:^0.15.0": + version: 0.15.0 + resolution: "@humanfs/types@npm:0.15.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40humanfs%2Ftypes%2F-%2Ftypes-0.15.0.tgz" + checksum: 10/dea3cc7fd8f8d4d088ed8d0a9921cf12bd8e1cdf40a6133106b03a6e2aebcc9a6f1771b3643b7ec71baae90d08245db34069dfcc861da8d678662741e6c3c986 languageName: node linkType: hard "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" + resolution: "@humanwhocodes/module-importer@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40humanwhocodes%2Fmodule-importer%2F-%2Fmodule-importer-1.0.1.tgz" checksum: 10/e993950e346331e5a32eefb27948ecdee2a2c4ab3f072b8f566cd213ef485dd50a3ca497050608db91006f5479e43f91a439aef68d2a313bd3ded06909c7c5b3 languageName: node linkType: hard "@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": version: 0.4.3 - resolution: "@humanwhocodes/retry@npm:0.4.3" + resolution: "@humanwhocodes/retry@npm:0.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40humanwhocodes%2Fretry%2F-%2Fretry-0.4.3.tgz" checksum: 10/0b32cfd362bea7a30fbf80bb38dcaf77fee9c2cae477ee80b460871d03590110ac9c77d654f04ec5beaf71b6f6a89851bdf6c1e34ccdf2f686bd86fcd97d9e61 languageName: node linkType: hard "@isaacs/fs-minipass@npm:^4.0.0": version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1" + resolution: "@isaacs/fs-minipass@npm:4.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40isaacs%2Ffs-minipass%2F-%2Ffs-minipass-4.0.1.tgz" dependencies: minipass: "npm:^7.0.4" checksum: 10/4412e9e6713c89c1e66d80bb0bb5a2a93192f10477623a27d08f228ba0316bb880affabc5bfe7f838f58a34d26c2c190da726e576cdfc18c49a72e89adabdcf5 @@ -594,7 +632,7 @@ __metadata: "@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.13 - resolution: "@jridgewell/gen-mapping@npm:0.3.13" + resolution: "@jridgewell/gen-mapping@npm:0.3.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fgen-mapping%2F-%2Fgen-mapping-0.3.13.tgz" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" "@jridgewell/trace-mapping": "npm:^0.3.24" @@ -604,7 +642,7 @@ __metadata: "@jridgewell/remapping@npm:^2.3.5": version: 2.3.5 - resolution: "@jridgewell/remapping@npm:2.3.5" + resolution: "@jridgewell/remapping@npm:2.3.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fremapping%2F-%2Fremapping-2.3.5.tgz" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.24" @@ -614,21 +652,21 @@ __metadata: "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" + resolution: "@jridgewell/resolve-uri@npm:3.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fresolve-uri%2F-%2Fresolve-uri-3.1.2.tgz" checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fsourcemap-codec%2F-%2Fsourcemap-codec-1.5.5.tgz" checksum: 10/5d9d207b462c11e322d71911e55e21a4e2772f71ffe8d6f1221b8eb5ae6774458c1d242f897fb0814e8714ca9a6b498abfa74dfe4f434493342902b1a48b33a5 languageName: node linkType: hard "@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": version: 0.3.31 - resolution: "@jridgewell/trace-mapping@npm:0.3.31" + resolution: "@jridgewell/trace-mapping@npm:0.3.31::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Ftrace-mapping%2F-%2Ftrace-mapping-0.3.31.tgz" dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -636,231 +674,371 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/agent@npm:4.0.0" +"@napi-rs/wasm-runtime@npm:^1.1.4": + version: 1.1.4 + resolution: "@napi-rs/wasm-runtime@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40napi-rs%2Fwasm-runtime%2F-%2Fwasm-runtime-1.1.4.tgz" dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^11.2.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10/1a81573becc60515031accc696e6405e9b894e65c12b98ef4aeee03b5617c41948633159dbf6caf5dde5b47367eeb749bdc7b7dfb21960930a9060a935c6f636 + "@tybys/wasm-util": "npm:^0.10.1" + peerDependencies: + "@emnapi/core": ^1.7.1 + "@emnapi/runtime": ^1.7.1 + checksum: 10/1db3dc7eeb981306b09360487bd8ce4dfa5588d273bd8ea9f07dccca1b4ade57b675414180fc9bb66966c6c50b17208b0263194993e2f7f92cc7af28bda4d1af languageName: node linkType: hard -"@npmcli/fs@npm:^5.0.0": - version: 5.0.0 - resolution: "@npmcli/fs@npm:5.0.0" +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40nodelib%2Ffs.scandir%2F-%2Ffs.scandir-2.1.5.tgz" dependencies: - semver: "npm:^7.3.5" - checksum: 10/4935c7719d17830d0f9fa46c50be17b2a3c945cec61760f6d0909bce47677c42e1810ca673305890f9e84f008ec4d8e841182f371e42100a8159d15f22249208 + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40nodelib%2Ffs.stat%2F-%2Ffs.stat-2.0.5.tgz" + checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40nodelib%2Ffs.walk%2F-%2Ffs.walk-1.2.8.tgz" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 + languageName: node + linkType: hard + +"@oxc-project/types@npm:=0.127.0": + version: 0.127.0 + resolution: "@oxc-project/types@npm:0.127.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40oxc-project%2Ftypes%2F-%2Ftypes-0.127.0.tgz" + checksum: 10/f154f4720367186aed63a16fb1395f9039d4e6872265fe9e6b5eacc02fb2b948f9ea6c5f85efd3a015ea28aa8c31232b7a8301218ae28651659e46dd0c4f2031 languageName: node linkType: hard "@playwright/test@npm:^1.58.2": - version: 1.58.2 - resolution: "@playwright/test@npm:1.58.2" + version: 1.59.1 + resolution: "@playwright/test@npm:1.59.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40playwright%2Ftest%2F-%2Ftest-1.59.1.tgz" dependencies: - playwright: "npm:1.58.2" + playwright: "npm:1.59.1" bin: playwright: cli.js - checksum: 10/58bf90139280a0235eeeb6049e9fb4db6425e98be1bf0cc17913b068eef616cf67be57bfb36dc4cb56bcf116f498ffd0225c4916e85db404b343ea6c5efdae13 + checksum: 10/27a894c4d4216b51cddc96e18fd0638a9e2e0a3f0b7ee32a56121fb61df395ec43529f5dcdca32578af8a34a04722ee3767f99f0ae4d39fa8edceda89a96014c + languageName: node + linkType: hard + +"@rolldown/binding-android-arm64@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-android-arm64%2F-%2Fbinding-android-arm64-1.0.0-rc.17.tgz" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-darwin-arm64%2F-%2Fbinding-darwin-arm64-1.0.0-rc.17.tgz" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-darwin-x64@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-darwin-x64%2F-%2Fbinding-darwin-x64-1.0.0-rc.17.tgz" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-freebsd-x64%2F-%2Fbinding-freebsd-x64-1.0.0-rc.17.tgz" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-arm-gnueabihf%2F-%2Fbinding-linux-arm-gnueabihf-1.0.0-rc.17.tgz" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-arm64-gnu%2F-%2Fbinding-linux-arm64-gnu-1.0.0-rc.17.tgz" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-arm64-musl%2F-%2Fbinding-linux-arm64-musl-1.0.0-rc.17.tgz" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-ppc64-gnu%2F-%2Fbinding-linux-ppc64-gnu-1.0.0-rc.17.tgz" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-s390x-gnu%2F-%2Fbinding-linux-s390x-gnu-1.0.0-rc.17.tgz" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-x64-gnu%2F-%2Fbinding-linux-x64-gnu-1.0.0-rc.17.tgz" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-x64-musl%2F-%2Fbinding-linux-x64-musl-1.0.0-rc.17.tgz" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-openharmony-arm64%2F-%2Fbinding-openharmony-arm64-1.0.0-rc.17.tgz" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-wasm32-wasi%2F-%2Fbinding-wasm32-wasi-1.0.0-rc.17.tgz" + dependencies: + "@emnapi/core": "npm:1.10.0" + "@emnapi/runtime": "npm:1.10.0" + "@napi-rs/wasm-runtime": "npm:^1.1.4" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-win32-arm64-msvc%2F-%2Fbinding-win32-arm64-msvc-1.0.0-rc.17.tgz" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-win32-x64-msvc%2F-%2Fbinding-win32-x64-msvc-1.0.0-rc.17.tgz" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@rolldown/pluginutils@npm:1.0.0-beta.27": version: 1.0.0-beta.27 - resolution: "@rolldown/pluginutils@npm:1.0.0-beta.27" + resolution: "@rolldown/pluginutils@npm:1.0.0-beta.27::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fpluginutils%2F-%2Fpluginutils-1.0.0-beta.27.tgz" checksum: 10/4f7da788d88b33d029d5acf84c63be27c62d7c53017476f2e3026172cf94062cb399cd15194c89574578f192016bbcb1e040ce6811b3bb9ec4d4faa2ad386459 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.59.0" +"@rolldown/pluginutils@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fpluginutils%2F-%2Fpluginutils-1.0.0-rc.17.tgz" + checksum: 10/d659ea756ee6d360a015708d1035c07047e08db99a4160c74c7f22a7ece5611efcc18ad56db4a63b69edb506ded47596d9c0d301919242470d8c412d916b9750 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-android-arm-eabi%2F-%2Frollup-android-arm-eabi-4.60.3.tgz" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-android-arm64@npm:4.59.0" +"@rollup/rollup-android-arm64@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-android-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-android-arm64%2F-%2Frollup-android-arm64-4.60.3.tgz" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.59.0" +"@rollup/rollup-darwin-arm64@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-darwin-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-darwin-arm64%2F-%2Frollup-darwin-arm64-4.60.3.tgz" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.59.0" +"@rollup/rollup-darwin-x64@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-darwin-x64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-darwin-x64%2F-%2Frollup-darwin-x64-4.60.3.tgz" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.59.0" +"@rollup/rollup-freebsd-arm64@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-freebsd-arm64%2F-%2Frollup-freebsd-arm64-4.60.3.tgz" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-freebsd-x64@npm:4.59.0" +"@rollup/rollup-freebsd-x64@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-freebsd-x64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-freebsd-x64%2F-%2Frollup-freebsd-x64-4.60.3.tgz" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm-gnueabihf%2F-%2Frollup-linux-arm-gnueabihf-4.60.3.tgz" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.59.0" +"@rollup/rollup-linux-arm-musleabihf@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm-musleabihf%2F-%2Frollup-linux-arm-musleabihf-4.60.3.tgz" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.59.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm64-gnu%2F-%2Frollup-linux-arm64-gnu-4.60.3.tgz" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.59.0" +"@rollup/rollup-linux-arm64-musl@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm64-musl%2F-%2Frollup-linux-arm64-musl-4.60.3.tgz" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loong64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.59.0" +"@rollup/rollup-linux-loong64-gnu@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-loong64-gnu%2F-%2Frollup-linux-loong64-gnu-4.60.3.tgz" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-loong64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-loong64-musl@npm:4.59.0" +"@rollup/rollup-linux-loong64-musl@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-loong64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-loong64-musl%2F-%2Frollup-linux-loong64-musl-4.60.3.tgz" conditions: os=linux & cpu=loong64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.59.0" +"@rollup/rollup-linux-ppc64-gnu@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-ppc64-gnu%2F-%2Frollup-linux-ppc64-gnu-4.60.3.tgz" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.59.0" +"@rollup/rollup-linux-ppc64-musl@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-ppc64-musl%2F-%2Frollup-linux-ppc64-musl-4.60.3.tgz" conditions: os=linux & cpu=ppc64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.59.0" +"@rollup/rollup-linux-riscv64-gnu@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-riscv64-gnu%2F-%2Frollup-linux-riscv64-gnu-4.60.3.tgz" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.59.0" +"@rollup/rollup-linux-riscv64-musl@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-riscv64-musl%2F-%2Frollup-linux-riscv64-musl-4.60.3.tgz" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.59.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-s390x-gnu%2F-%2Frollup-linux-s390x-gnu-4.60.3.tgz" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.59.0" +"@rollup/rollup-linux-x64-gnu@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-x64-gnu%2F-%2Frollup-linux-x64-gnu-4.60.3.tgz" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.59.0" +"@rollup/rollup-linux-x64-musl@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-x64-musl%2F-%2Frollup-linux-x64-musl-4.60.3.tgz" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-openbsd-x64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-openbsd-x64@npm:4.59.0" +"@rollup/rollup-openbsd-x64@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-openbsd-x64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-openbsd-x64%2F-%2Frollup-openbsd-x64-4.60.3.tgz" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-openharmony-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-openharmony-arm64@npm:4.59.0" +"@rollup/rollup-openharmony-arm64@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-openharmony-arm64%2F-%2Frollup-openharmony-arm64-4.60.3.tgz" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.59.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-arm64-msvc%2F-%2Frollup-win32-arm64-msvc-4.60.3.tgz" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.59.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-ia32-msvc%2F-%2Frollup-win32-ia32-msvc-4.60.3.tgz" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-x64-gnu@npm:4.59.0" +"@rollup/rollup-win32-x64-gnu@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-x64-gnu%2F-%2Frollup-win32-x64-gnu-4.60.3.tgz" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.59.0" +"@rollup/rollup-win32-x64-msvc@npm:4.60.3": + version: 4.60.3 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-x64-msvc%2F-%2Frollup-win32-x64-msvc-4.60.3.tgz" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@standard-schema/spec@npm:^1.0.0": +"@standard-schema/spec@npm:^1.1.0": version: 1.1.0 - resolution: "@standard-schema/spec@npm:1.1.0" + resolution: "@standard-schema/spec@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40standard-schema%2Fspec%2F-%2Fspec-1.1.0.tgz" checksum: 10/a209615c9e8b2ea535d7db0a5f6aa0f962fd4ab73ee86a46c100fb78116964af1f55a27c1794d4801e534a196794223daa25ff5135021e03c7828aa3d95e1763 languageName: node linkType: hard "@testing-library/dom@npm:^10.4.0": version: 10.4.1 - resolution: "@testing-library/dom@npm:10.4.1" + resolution: "@testing-library/dom@npm:10.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40testing-library%2Fdom%2F-%2Fdom-10.4.1.tgz" dependencies: "@babel/code-frame": "npm:^7.10.4" "@babel/runtime": "npm:^7.12.5" @@ -876,7 +1054,7 @@ __metadata: "@testing-library/react@npm:^16.1.0": version: 16.3.2 - resolution: "@testing-library/react@npm:16.3.2" + resolution: "@testing-library/react@npm:16.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40testing-library%2Freact%2F-%2Freact-16.3.2.tgz" dependencies: "@babel/runtime": "npm:^7.12.5" peerDependencies: @@ -894,16 +1072,36 @@ __metadata: languageName: node linkType: hard +"@ts-morph/common@npm:~0.26.0": + version: 0.26.1 + resolution: "@ts-morph/common@npm:0.26.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40ts-morph%2Fcommon%2F-%2Fcommon-0.26.1.tgz" + dependencies: + fast-glob: "npm:^3.3.2" + minimatch: "npm:^9.0.4" + path-browserify: "npm:^1.0.1" + checksum: 10/40df291ec8f53f32845ddf3de73f6288ccc08ebf1876d2778763dd45e343b718924826deb5453262d8b58dbe4d4bfbf884a573e8fae045df984548a35cf68d50 + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.10.1": + version: 0.10.2 + resolution: "@tybys/wasm-util@npm:0.10.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40tybys%2Fwasm-util%2F-%2Fwasm-util-0.10.2.tgz" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/d12f1dafe12d7a573c406b35ffef0038042b9cc9fbcc74d657267eb635499b956276afc05eebdbd81bea582e1c4c921421a1dd7243a93daaa8c8216b19395c23 + languageName: node + linkType: hard + "@types/aria-query@npm:^5.0.1": version: 5.0.4 - resolution: "@types/aria-query@npm:5.0.4" + resolution: "@types/aria-query@npm:5.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Faria-query%2F-%2Faria-query-5.0.4.tgz" checksum: 10/c0084c389dc030daeaf0115a92ce43a3f4d42fc8fef2d0e22112d87a42798d4a15aac413019d4a63f868327d52ad6740ab99609462b442fe6b9286b172d2e82e languageName: node linkType: hard "@types/babel__core@npm:^7.20.5": version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" + resolution: "@types/babel__core@npm:7.20.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__core%2F-%2Fbabel__core-7.20.5.tgz" dependencies: "@babel/parser": "npm:^7.20.7" "@babel/types": "npm:^7.20.7" @@ -916,7 +1114,7 @@ __metadata: "@types/babel__generator@npm:*": version: 7.27.0 - resolution: "@types/babel__generator@npm:7.27.0" + resolution: "@types/babel__generator@npm:7.27.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__generator%2F-%2Fbabel__generator-7.27.0.tgz" dependencies: "@babel/types": "npm:^7.0.0" checksum: 10/f572e67a9a39397664350a4437d8a7fbd34acc83ff4887a8cf08349e39f8aeb5ad2f70fb78a0a0a23a280affe3a5f4c25f50966abdce292bcf31237af1c27b1a @@ -925,7 +1123,7 @@ __metadata: "@types/babel__template@npm:*": version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" + resolution: "@types/babel__template@npm:7.4.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__template%2F-%2Fbabel__template-7.4.4.tgz" dependencies: "@babel/parser": "npm:^7.1.0" "@babel/types": "npm:^7.0.0" @@ -935,7 +1133,7 @@ __metadata: "@types/babel__traverse@npm:*": version: 7.28.0 - resolution: "@types/babel__traverse@npm:7.28.0" + resolution: "@types/babel__traverse@npm:7.28.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__traverse%2F-%2Fbabel__traverse-7.28.0.tgz" dependencies: "@babel/types": "npm:^7.28.2" checksum: 10/371c5e1b40399ef17570e630b2943617b84fafde2860a56f0ebc113d8edb1d0534ade0175af89eda1ae35160903c33057ed42457e165d4aa287fedab2c82abcf @@ -944,7 +1142,7 @@ __metadata: "@types/chai@npm:^5.2.2": version: 5.2.3 - resolution: "@types/chai@npm:5.2.3" + resolution: "@types/chai@npm:5.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fchai%2F-%2Fchai-5.2.3.tgz" dependencies: "@types/deep-eql": "npm:*" assertion-error: "npm:^2.0.1" @@ -953,24 +1151,24 @@ __metadata: linkType: hard "@types/debug@npm:^4.0.0": - version: 4.1.12 - resolution: "@types/debug@npm:4.1.12" + version: 4.1.13 + resolution: "@types/debug@npm:4.1.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fdebug%2F-%2Fdebug-4.1.13.tgz" dependencies: "@types/ms": "npm:*" - checksum: 10/47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 + checksum: 10/5091d4ebda85236e6f4a6ecea552860e521e11d1d388d3f6255b40726f5a4a7cf1baa0d09f60853838e4cac6c12a13b14114d5f422ccecaee4d1d07dab349900 languageName: node linkType: hard "@types/deep-eql@npm:*": version: 4.0.2 - resolution: "@types/deep-eql@npm:4.0.2" + resolution: "@types/deep-eql@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fdeep-eql%2F-%2Fdeep-eql-4.0.2.tgz" checksum: 10/249a27b0bb22f6aa28461db56afa21ec044fa0e303221a62dff81831b20c8530502175f1a49060f7099e7be06181078548ac47c668de79ff9880241968d43d0c languageName: node linkType: hard "@types/estree-jsx@npm:^1.0.0": version: 1.0.5 - resolution: "@types/estree-jsx@npm:1.0.5" + resolution: "@types/estree-jsx@npm:1.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Festree-jsx%2F-%2Festree-jsx-1.0.5.tgz" dependencies: "@types/estree": "npm:*" checksum: 10/a028ab0cd7b2950168a05c6a86026eb3a36a54a4adfae57f13911d7b49dffe573d9c2b28421b2d029b49b3d02fcd686611be2622dc3dad6d9791166c083f6008 @@ -979,14 +1177,14 @@ __metadata: "@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.8 - resolution: "@types/estree@npm:1.0.8" + resolution: "@types/estree@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Festree%2F-%2Festree-1.0.8.tgz" checksum: 10/25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099 languageName: node linkType: hard "@types/hast@npm:^3.0.0": version: 3.0.4 - resolution: "@types/hast@npm:3.0.4" + resolution: "@types/hast@npm:3.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fhast%2F-%2Fhast-3.0.4.tgz" dependencies: "@types/unist": "npm:*" checksum: 10/732920d81bb7605895776841b7658b4d8cc74a43a8fa176017cc0fb0ecc1a4c82a2b75a4fe6b71aa262b649d3fb62858c6789efa3793ea1d40269953af96ecb5 @@ -995,14 +1193,14 @@ __metadata: "@types/json-schema@npm:^7.0.15": version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" + resolution: "@types/json-schema@npm:7.0.15::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fjson-schema%2F-%2Fjson-schema-7.0.15.tgz" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 languageName: node linkType: hard "@types/mdast@npm:^4.0.0": version: 4.0.4 - resolution: "@types/mdast@npm:4.0.4" + resolution: "@types/mdast@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fmdast%2F-%2Fmdast-4.0.4.tgz" dependencies: "@types/unist": "npm:*" checksum: 10/efe3ec11b9ee0015a396c4fb4cd1b6f31b51b8ae9783c59560e6fc0bf6c2fa1dcc7fccaf45fa09a6c8b3397fab9dc8d431433935cae3835caa70a18f7fc775f8 @@ -1011,21 +1209,21 @@ __metadata: "@types/ms@npm:*": version: 2.1.0 - resolution: "@types/ms@npm:2.1.0" + resolution: "@types/ms@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fms%2F-%2Fms-2.1.0.tgz" checksum: 10/532d2ebb91937ccc4a89389715e5b47d4c66e708d15942fe6cc25add6dc37b2be058230a327dd50f43f89b8b6d5d52b74685a9e8f70516edfc9bdd6be910eff4 languageName: node linkType: hard "@types/prop-types@npm:*": version: 15.7.15 - resolution: "@types/prop-types@npm:15.7.15" + resolution: "@types/prop-types@npm:15.7.15::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fprop-types%2F-%2Fprop-types-15.7.15.tgz" checksum: 10/31aa2f59b28f24da6fb4f1d70807dae2aedfce090ec63eaf9ea01727a9533ef6eaf017de5bff99fbccad7d1c9e644f52c6c2ba30869465dd22b1a7221c29f356 languageName: node linkType: hard "@types/react-dom@npm:^18.3.0": version: 18.3.7 - resolution: "@types/react-dom@npm:18.3.7" + resolution: "@types/react-dom@npm:18.3.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Freact-dom%2F-%2Freact-dom-18.3.7.tgz" peerDependencies: "@types/react": ^18.0.0 checksum: 10/317569219366d487a3103ba1e5e47154e95a002915fdcf73a44162c48fe49c3a57fcf7f57fc6979e70d447112681e6b13c6c3c1df289db8b544df4aab2d318f3 @@ -1034,7 +1232,7 @@ __metadata: "@types/react@npm:^18.3.2, @types/react@npm:^18.3.3": version: 18.3.28 - resolution: "@types/react@npm:18.3.28" + resolution: "@types/react@npm:18.3.28::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Freact%2F-%2Freact-18.3.28.tgz" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.2.2" @@ -1044,21 +1242,21 @@ __metadata: "@types/unist@npm:*, @types/unist@npm:^3.0.0": version: 3.0.3 - resolution: "@types/unist@npm:3.0.3" + resolution: "@types/unist@npm:3.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Funist%2F-%2Funist-3.0.3.tgz" checksum: 10/96e6453da9e075aaef1dc22482463898198acdc1eeb99b465e65e34303e2ec1e3b1ed4469a9118275ec284dc98019f63c3f5d49422f0e4ac707e5ab90fb3b71a languageName: node linkType: hard "@types/unist@npm:^2.0.0": version: 2.0.11 - resolution: "@types/unist@npm:2.0.11" + resolution: "@types/unist@npm:2.0.11::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Funist%2F-%2Funist-2.0.11.tgz" checksum: 10/6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.51.0" + resolution: "@typescript-eslint/eslint-plugin@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Feslint-plugin%2F-%2Feslint-plugin-8.51.0.tgz" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" "@typescript-eslint/scope-manager": "npm:8.51.0" @@ -1078,7 +1276,7 @@ __metadata: "@typescript-eslint/parser@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/parser@npm:8.51.0" + resolution: "@typescript-eslint/parser@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Fparser%2F-%2Fparser-8.51.0.tgz" dependencies: "@typescript-eslint/scope-manager": "npm:8.51.0" "@typescript-eslint/types": "npm:8.51.0" @@ -1094,7 +1292,7 @@ __metadata: "@typescript-eslint/project-service@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/project-service@npm:8.51.0" + resolution: "@typescript-eslint/project-service@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Fproject-service%2F-%2Fproject-service-8.51.0.tgz" dependencies: "@typescript-eslint/tsconfig-utils": "npm:^8.51.0" "@typescript-eslint/types": "npm:^8.51.0" @@ -1107,7 +1305,7 @@ __metadata: "@typescript-eslint/scope-manager@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/scope-manager@npm:8.51.0" + resolution: "@typescript-eslint/scope-manager@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Fscope-manager%2F-%2Fscope-manager-8.51.0.tgz" dependencies: "@typescript-eslint/types": "npm:8.51.0" "@typescript-eslint/visitor-keys": "npm:8.51.0" @@ -1117,7 +1315,7 @@ __metadata: "@typescript-eslint/tsconfig-utils@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.51.0" + resolution: "@typescript-eslint/tsconfig-utils@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Ftsconfig-utils%2F-%2Ftsconfig-utils-8.51.0.tgz" peerDependencies: typescript: ">=4.8.4 <6.0.0" checksum: 10/1a423e2b8bb6900e86f54ef78e967f17e6f51a528c64d78460338b916fda4e44bb8c73a7aba6b129295c59c3f364edbf27b34580f525df700674afbf0fc034df @@ -1125,17 +1323,17 @@ __metadata: linkType: hard "@typescript-eslint/tsconfig-utils@npm:^8.51.0": - version: 8.56.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.56.0" + version: 8.59.3 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.59.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Ftsconfig-utils%2F-%2Ftsconfig-utils-8.59.3.tgz" peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/b1834aeffcdc07835eae0bf52aca573cba7e6528b5c1483e9b1f7f4f9e1f6450a8650796be11140e0437caf7eb1b0f9711c22989c8294547534f12614a759760 + typescript: ">=4.8.4 <6.1.0" + checksum: 10/a6f230d66dc5cadfbc789a8468ff7bdf8f3100254eb68657007398feb4d46688c4ef3fb35784332ae9af65d52e6c4eabab0a47ed54a0ceac0cb025ae778dadf2 languageName: node linkType: hard "@typescript-eslint/type-utils@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/type-utils@npm:8.51.0" + resolution: "@typescript-eslint/type-utils@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Ftype-utils%2F-%2Ftype-utils-8.51.0.tgz" dependencies: "@typescript-eslint/types": "npm:8.51.0" "@typescript-eslint/typescript-estree": "npm:8.51.0" @@ -1151,21 +1349,21 @@ __metadata: "@typescript-eslint/types@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/types@npm:8.51.0" + resolution: "@typescript-eslint/types@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Ftypes%2F-%2Ftypes-8.51.0.tgz" checksum: 10/34c4b602d2f07edb72879e8af5359b0d54d3787030ae0a8325691972b07f2c6429bef9586938d18ff7df03a2be858064c7890a42136514ff0f2b7847c1432193 languageName: node linkType: hard "@typescript-eslint/types@npm:^8.51.0": - version: 8.56.0 - resolution: "@typescript-eslint/types@npm:8.56.0" - checksum: 10/d7549535c99d9202742bf0191bcc2822c2d18a03e206be9ad5a6f6b0902de7381c93e8c238754fe5d1dfdcc22d7e3bbafa032f63ba165d6dc03e180f84b138f9 + version: 8.59.3 + resolution: "@typescript-eslint/types@npm:8.59.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Ftypes%2F-%2Ftypes-8.59.3.tgz" + checksum: 10/71c2128b5744ef99d084d1d42f85625f7b8c4de8eaeec393e4e64838aacac0da126b31670247629dca3432cd8994ca509ee1c7c59393e9f56518a933af50c1c2 languageName: node linkType: hard "@typescript-eslint/typescript-estree@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.51.0" + resolution: "@typescript-eslint/typescript-estree@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Ftypescript-estree%2F-%2Ftypescript-estree-8.51.0.tgz" dependencies: "@typescript-eslint/project-service": "npm:8.51.0" "@typescript-eslint/tsconfig-utils": "npm:8.51.0" @@ -1184,7 +1382,7 @@ __metadata: "@typescript-eslint/utils@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/utils@npm:8.51.0" + resolution: "@typescript-eslint/utils@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Futils%2F-%2Futils-8.51.0.tgz" dependencies: "@eslint-community/eslint-utils": "npm:^4.7.0" "@typescript-eslint/scope-manager": "npm:8.51.0" @@ -1199,7 +1397,7 @@ __metadata: "@typescript-eslint/visitor-keys@npm:8.51.0": version: 8.51.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.51.0" + resolution: "@typescript-eslint/visitor-keys@npm:8.51.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40typescript-eslint%2Fvisitor-keys%2F-%2Fvisitor-keys-8.51.0.tgz" dependencies: "@typescript-eslint/types": "npm:8.51.0" eslint-visitor-keys: "npm:^4.2.1" @@ -1209,14 +1407,14 @@ __metadata: "@ungap/structured-clone@npm:^1.0.0": version: 1.3.0 - resolution: "@ungap/structured-clone@npm:1.3.0" + resolution: "@ungap/structured-clone@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40ungap%2Fstructured-clone%2F-%2Fstructured-clone-1.3.0.tgz" checksum: 10/80d6910946f2b1552a2406650051c91bbd1f24a6bf854354203d84fe2714b3e8ce4618f49cc3410494173a1c1e8e9777372fe68dce74bd45faf0a7a1a6ccf448 languageName: node linkType: hard "@vitejs/plugin-react@npm:^4.3.4": version: 4.7.0 - resolution: "@vitejs/plugin-react@npm:4.7.0" + resolution: "@vitejs/plugin-react@npm:4.7.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitejs%2Fplugin-react%2F-%2Fplugin-react-4.7.0.tgz" dependencies: "@babel/core": "npm:^7.28.0" "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" @@ -1231,109 +1429,121 @@ __metadata: linkType: hard "@vitest/coverage-v8@npm:^4.0.14": - version: 4.0.18 - resolution: "@vitest/coverage-v8@npm:4.0.18" + version: 4.1.5 + resolution: "@vitest/coverage-v8@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fcoverage-v8%2F-%2Fcoverage-v8-4.1.5.tgz" dependencies: "@bcoe/v8-coverage": "npm:^1.0.2" - "@vitest/utils": "npm:4.0.18" - ast-v8-to-istanbul: "npm:^0.3.10" + "@vitest/utils": "npm:4.1.5" + ast-v8-to-istanbul: "npm:^1.0.0" istanbul-lib-coverage: "npm:^3.2.2" istanbul-lib-report: "npm:^3.0.1" istanbul-reports: "npm:^3.2.0" - magicast: "npm:^0.5.1" + magicast: "npm:^0.5.2" obug: "npm:^2.1.1" - std-env: "npm:^3.10.0" - tinyrainbow: "npm:^3.0.3" + std-env: "npm:^4.0.0-rc.1" + tinyrainbow: "npm:^3.1.0" peerDependencies: - "@vitest/browser": 4.0.18 - vitest: 4.0.18 + "@vitest/browser": 4.1.5 + vitest: 4.1.5 peerDependenciesMeta: "@vitest/browser": optional: true - checksum: 10/33bd54aa8ea1c4b0acae77722b34460408325793d4d74159f7d73aedf2d1c4aa940c8666baf31c4b19b3760d68bbc268dd8c9265ebc2088cece428d26568afb4 + checksum: 10/378e1d85a1c4670af15a18b544995a43d320460b418c188d7000f96518859e4537e00ea5e38a563c42b6183437252f0ecc92b471ede30c6d43ae87b7c8e09ed3 languageName: node linkType: hard -"@vitest/expect@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/expect@npm:4.0.18" +"@vitest/expect@npm:4.1.5": + version: 4.1.5 + resolution: "@vitest/expect@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fexpect%2F-%2Fexpect-4.1.5.tgz" dependencies: - "@standard-schema/spec": "npm:^1.0.0" + "@standard-schema/spec": "npm:^1.1.0" "@types/chai": "npm:^5.2.2" - "@vitest/spy": "npm:4.0.18" - "@vitest/utils": "npm:4.0.18" - chai: "npm:^6.2.1" - tinyrainbow: "npm:^3.0.3" - checksum: 10/2115bff1bbcad460ce72032022e4dbcf8572c4b0fe07ca60f5644a8d96dd0dfa112986b5a1a5c5705f4548119b3b829c45d1de0838879211e0d6bb276b4ece73 + "@vitest/spy": "npm:4.1.5" + "@vitest/utils": "npm:4.1.5" + chai: "npm:^6.2.2" + tinyrainbow: "npm:^3.1.0" + checksum: 10/3e94d2d0cf4f7018ed6a7a9394bff971353ea0cc85bcbcff39212279156840b8c533be99e2fd52112e4904c4a5190bdaaf441db7c6b17e356c18577072a3f057 languageName: node linkType: hard -"@vitest/mocker@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/mocker@npm:4.0.18" +"@vitest/mocker@npm:4.1.5": + version: 4.1.5 + resolution: "@vitest/mocker@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fmocker%2F-%2Fmocker-4.1.5.tgz" dependencies: - "@vitest/spy": "npm:4.0.18" + "@vitest/spy": "npm:4.1.5" estree-walker: "npm:^3.0.3" magic-string: "npm:^0.30.21" peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - checksum: 10/46f584a4c1180dfb513137bc8db6e2e3b53e141adfe964307297e98321652d86a3f2a52d80cda1f810205bd5fdcab789bb8b52a532e68f175ef1e20be398218d + checksum: 10/949784ba08996543a313459a36a730d4b0847e42ee56cfda07a3e2add67c7adf8acbd59dcf9f75b1e4bc3fe7cc487f9f260905ff9a334866d389478112e5ae82 languageName: node linkType: hard -"@vitest/pretty-format@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/pretty-format@npm:4.0.18" +"@vitest/pretty-format@npm:4.1.5": + version: 4.1.5 + resolution: "@vitest/pretty-format@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fpretty-format%2F-%2Fpretty-format-4.1.5.tgz" dependencies: - tinyrainbow: "npm:^3.0.3" - checksum: 10/4cafc7c9853097345bd94e8761bf47c2c04e00d366ac56d79928182787ff83c512c96f1dc2ce9b6aeed4d3a8c23ce12254da203783108d3c096bc398eed2a62d + tinyrainbow: "npm:^3.1.0" + checksum: 10/783f8c4a0e419d1024446ae8593411c95443ea09b50c4a378986b48893998acda34429b2d1deebc065405a7ef40bb19e19c68fdeb93acd46ae98b156c42d5f39 languageName: node linkType: hard -"@vitest/runner@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/runner@npm:4.0.18" +"@vitest/runner@npm:4.1.5": + version: 4.1.5 + resolution: "@vitest/runner@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Frunner%2F-%2Frunner-4.1.5.tgz" dependencies: - "@vitest/utils": "npm:4.0.18" + "@vitest/utils": "npm:4.1.5" pathe: "npm:^2.0.3" - checksum: 10/d7deebf086d7e084f449733ecea6c9c81737a18aafece318cbe7500e45debea00fa9dbf9315fd38aa88550dd5240a791b885ac71665f89b154d71a6c63da5836 + checksum: 10/ba19d84a9f7bcc3102ae5304c23e5dae789aaf8fd283f826e3fd4aca87ea2687ed606cf89869773d15799666553fd265524f7d9a0869e2869e00ebd8fd53af5b languageName: node linkType: hard -"@vitest/snapshot@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/snapshot@npm:4.0.18" +"@vitest/snapshot@npm:4.1.5": + version: 4.1.5 + resolution: "@vitest/snapshot@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fsnapshot%2F-%2Fsnapshot-4.1.5.tgz" dependencies: - "@vitest/pretty-format": "npm:4.0.18" + "@vitest/pretty-format": "npm:4.1.5" + "@vitest/utils": "npm:4.1.5" magic-string: "npm:^0.30.21" pathe: "npm:^2.0.3" - checksum: 10/50aa5fb7fca45c499c145cc2f20e53b8afb0990b53ff4a4e6447dd6f147437edc5316f22e2d82119e154c3cf7c59d44898e7b2faf7ba614ac1051cbe4d662a77 + checksum: 10/cf70530d8a7320c012bdf7f6ca4f3ddbbb47c9aeb9ff5d28319e552ce64db93423d0c4facff3e112c6d711ed4228369c8fa73c88350fe6c16cf04f9ac2558caf languageName: node linkType: hard -"@vitest/spy@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/spy@npm:4.0.18" - checksum: 10/f7b1618ae13790105771dd2a8c973c63c018366fcc69b50f15ce5d12f9ac552efd3c1e6e5ae4ebdb6023d0b8d8f31fef2a0b1b77334284928db45c80c63de456 +"@vitest/spy@npm:4.1.5": + version: 4.1.5 + resolution: "@vitest/spy@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fspy%2F-%2Fspy-4.1.5.tgz" + checksum: 10/4db4bb3aea01cd737fdb06d8f498bcd2127b8c2afeaa78ff9df4147e1474aa26dd16f42dc0512c31385824e94dbb17b17fa0f4c60b7595b7b4ab946f098220ab languageName: node linkType: hard -"@vitest/utils@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/utils@npm:4.0.18" +"@vitest/utils@npm:4.1.5": + version: 4.1.5 + resolution: "@vitest/utils@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Futils%2F-%2Futils-4.1.5.tgz" dependencies: - "@vitest/pretty-format": "npm:4.0.18" - tinyrainbow: "npm:^3.0.3" - checksum: 10/e8b2ad7bc35b2bc5590f9dc1d1a67644755da416b47ab7099a6f26792903fa0aacb81e6ba99f0f03858d9d3a1d76eeba65150a1a0849690a40817424e749c367 + "@vitest/pretty-format": "npm:4.1.5" + convert-source-map: "npm:^2.0.0" + tinyrainbow: "npm:^3.1.0" + checksum: 10/4f75a2df6f910578a361ae92eb92a2b6921f50cc748994f3b2e5900d0ae687b6683f33b090dedf9b96eaca23bac117817d9448a4a333c7a96b94ee767399f18c languageName: node linkType: hard +"@wix/context-scripts@workspace:scripts": + version: 0.0.0-use.local + resolution: "@wix/context-scripts@workspace:scripts" + dependencies: + ts-morph: "npm:^25.0.0" + vitest: "npm:^4.0.14" + yaml: "npm:^2.7.0" + languageName: unknown + linkType: soft + "@wix/interact-demo@workspace:apps/demo": version: 0.0.0-use.local resolution: "@wix/interact-demo@workspace:apps/demo" @@ -1450,14 +1660,14 @@ __metadata: "abbrev@npm:^4.0.0": version: 4.0.0 - resolution: "abbrev@npm:4.0.0" + resolution: "abbrev@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fabbrev%2F-%2Fabbrev-4.0.0.tgz" checksum: 10/e2f0c6a6708ad738b3e8f50233f4800de31ad41a6cdc50e0cbe51b76fed69fd0213516d92c15ce1a9985fca71a14606a9be22bf00f8475a58987b9bfb671c582 languageName: node linkType: hard "acorn-jsx@npm:^5.3.2": version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" + resolution: "acorn-jsx@npm:5.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Facorn-jsx%2F-%2Facorn-jsx-5.3.2.tgz" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 checksum: 10/d4371eaef7995530b5b5ca4183ff6f062ca17901a6d3f673c9ac011b01ede37e7a1f7f61f8f5cfe709e88054757bb8f3277dc4061087cdf4f2a1f90ccbcdb977 @@ -1466,7 +1676,7 @@ __metadata: "acorn@npm:^8.15.0": version: 8.16.0 - resolution: "acorn@npm:8.16.0" + resolution: "acorn@npm:8.16.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Facorn%2F-%2Facorn-8.16.0.tgz" bin: acorn: bin/acorn checksum: 10/690c673bb4d61b38ef82795fab58526471ad7f7e67c0e40c4ff1e10ecd80ce5312554ef633c9995bfc4e6d170cef165711f9ca9e49040b62c0c66fbf2dd3df2b @@ -1475,33 +1685,33 @@ __metadata: "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.4 - resolution: "agent-base@npm:7.1.4" + resolution: "agent-base@npm:7.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fagent-base%2F-%2Fagent-base-7.1.4.tgz" checksum: 10/79bef167247789f955aaba113bae74bf64aa1e1acca4b1d6bb444bdf91d82c3e07e9451ef6a6e2e35e8f71a6f97ce33e3d855a5328eb9fad1bc3cc4cfd031ed8 languageName: node linkType: hard -"ajv@npm:^6.12.4": - version: 6.14.0 - resolution: "ajv@npm:6.14.0" +"ajv@npm:^6.12.4, ajv@npm:^6.14.0": + version: 6.15.0 + resolution: "ajv@npm:6.15.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fajv%2F-%2Fajv-6.15.0.tgz" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 10/c71f14dd2b6f2535d043f74019c8169f7aeb1106bafbb741af96f34fdbf932255c919ddd46344043d03b62ea0ccb319f83667ec5eedf612393f29054fe5ce4a5 + checksum: 10/0916dda09c152fb5857bc1cc7ce61718e9cec5b7faeff44a74f5e324eed8a556e1a84856724ea322a067b436ecad9f74ac8295fd395449788cca52f0c25bd5fb languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" + resolution: "ansi-regex@npm:5.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fansi-regex%2F-%2Fansi-regex-5.0.1.tgz" checksum: 10/2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard "ansi-styles@npm:^4.1.0": version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" + resolution: "ansi-styles@npm:4.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fansi-styles%2F-%2Fansi-styles-4.3.0.tgz" dependencies: color-convert: "npm:^2.0.1" checksum: 10/b4494dfbfc7e4591b4711a396bd27e540f8153914123dccb4cdbbcb514015ada63a3809f362b9d8d4f6b17a706f1d7bea3c6f974b15fa5ae76b5b502070889ff @@ -1510,21 +1720,21 @@ __metadata: "ansi-styles@npm:^5.0.0": version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" + resolution: "ansi-styles@npm:5.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fansi-styles%2F-%2Fansi-styles-5.2.0.tgz" checksum: 10/d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 - resolution: "argparse@npm:2.0.1" + resolution: "argparse@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fargparse%2F-%2Fargparse-2.0.1.tgz" checksum: 10/18640244e641a417ec75a9bd38b0b2b6b95af5199aa241b131d4b2fb206f334d7ecc600bd194861610a5579084978bfcbb02baa399dbe442d56d0ae5e60dbaef languageName: node linkType: hard "aria-query@npm:5.3.0": version: 5.3.0 - resolution: "aria-query@npm:5.3.0" + resolution: "aria-query@npm:5.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faria-query%2F-%2Faria-query-5.3.0.tgz" dependencies: dequal: "npm:^2.0.3" checksum: 10/c3e1ed127cc6886fea4732e97dd6d3c3938e64180803acfb9df8955517c4943760746ffaf4020ce8f7ffaa7556a3b5f85c3769a1f5ca74a1288e02d042f9ae4e @@ -1533,14 +1743,14 @@ __metadata: "aria-query@npm:^5.3.2": version: 5.3.2 - resolution: "aria-query@npm:5.3.2" + resolution: "aria-query@npm:5.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faria-query%2F-%2Faria-query-5.3.2.tgz" checksum: 10/b2fe9bc98bd401bc322ccb99717c1ae2aaf53ea0d468d6e7aebdc02fac736e4a99b46971ee05b783b08ade23c675b2d8b60e4a1222a95f6e27bc4d2a0bfdcc03 languageName: node linkType: hard "array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": version: 1.0.2 - resolution: "array-buffer-byte-length@npm:1.0.2" + resolution: "array-buffer-byte-length@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray-buffer-byte-length%2F-%2Farray-buffer-byte-length-1.0.2.tgz" dependencies: call-bound: "npm:^1.0.3" is-array-buffer: "npm:^3.0.5" @@ -1550,7 +1760,7 @@ __metadata: "array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": version: 3.1.9 - resolution: "array-includes@npm:3.1.9" + resolution: "array-includes@npm:3.1.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray-includes%2F-%2Farray-includes-3.1.9.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.4" @@ -1566,7 +1776,7 @@ __metadata: "array.prototype.findlast@npm:^1.2.5": version: 1.2.5 - resolution: "array.prototype.findlast@npm:1.2.5" + resolution: "array.prototype.findlast@npm:1.2.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.findlast%2F-%2Farray.prototype.findlast-1.2.5.tgz" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -1580,7 +1790,7 @@ __metadata: "array.prototype.flat@npm:^1.3.1": version: 1.3.3 - resolution: "array.prototype.flat@npm:1.3.3" + resolution: "array.prototype.flat@npm:1.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.flat%2F-%2Farray.prototype.flat-1.3.3.tgz" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -1592,7 +1802,7 @@ __metadata: "array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": version: 1.3.3 - resolution: "array.prototype.flatmap@npm:1.3.3" + resolution: "array.prototype.flatmap@npm:1.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.flatmap%2F-%2Farray.prototype.flatmap-1.3.3.tgz" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -1604,7 +1814,7 @@ __metadata: "array.prototype.tosorted@npm:^1.1.4": version: 1.1.4 - resolution: "array.prototype.tosorted@npm:1.1.4" + resolution: "array.prototype.tosorted@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.tosorted%2F-%2Farray.prototype.tosorted-1.1.4.tgz" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -1617,7 +1827,7 @@ __metadata: "arraybuffer.prototype.slice@npm:^1.0.4": version: 1.0.4 - resolution: "arraybuffer.prototype.slice@npm:1.0.4" + resolution: "arraybuffer.prototype.slice@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farraybuffer.prototype.slice%2F-%2Farraybuffer.prototype.slice-1.0.4.tgz" dependencies: array-buffer-byte-length: "npm:^1.0.1" call-bind: "npm:^1.0.8" @@ -1632,53 +1842,53 @@ __metadata: "assertion-error@npm:^2.0.1": version: 2.0.1 - resolution: "assertion-error@npm:2.0.1" + resolution: "assertion-error@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fassertion-error%2F-%2Fassertion-error-2.0.1.tgz" checksum: 10/a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66 languageName: node linkType: hard "ast-types-flow@npm:^0.0.8": version: 0.0.8 - resolution: "ast-types-flow@npm:0.0.8" + resolution: "ast-types-flow@npm:0.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fast-types-flow%2F-%2Fast-types-flow-0.0.8.tgz" checksum: 10/85a1c24af4707871c27cfe456bd2ff7fcbe678f3d1c878ac968c9557735a171a17bdcc8c8f903ceab3fc3c49d5b3da2194e6ab0a6be7fec0e133fa028f21ba1b languageName: node linkType: hard -"ast-v8-to-istanbul@npm:^0.3.10": - version: 0.3.11 - resolution: "ast-v8-to-istanbul@npm:0.3.11" +"ast-v8-to-istanbul@npm:^1.0.0": + version: 1.0.0 + resolution: "ast-v8-to-istanbul@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fast-v8-to-istanbul%2F-%2Fast-v8-to-istanbul-1.0.0.tgz" dependencies: "@jridgewell/trace-mapping": "npm:^0.3.31" estree-walker: "npm:^3.0.3" js-tokens: "npm:^10.0.0" - checksum: 10/3209a099194d41a9504383b598bfa21a51dc09e3938f4d1fb5dd868ce2c092e9800d783bf8f9527e0dc88a90e6b03d5ab1fedbe9bc7a70485fa7b497190694c7 + checksum: 10/9d92d5674f7a6cbd9215ed14f81c2255ba44a50ea529ff3159469a82a78d746f06023c060cf7ed702a42475b15bd152a51323b205508922d6c07e3c13d54c463 languageName: node linkType: hard "async-function@npm:^1.0.0": version: 1.0.0 - resolution: "async-function@npm:1.0.0" + resolution: "async-function@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fasync-function%2F-%2Fasync-function-1.0.0.tgz" checksum: 10/1a09379937d846f0ce7614e75071c12826945d4e417db634156bf0e4673c495989302f52186dfa9767a1d9181794554717badd193ca2bbab046ef1da741d8efd languageName: node linkType: hard "async-generator-function@npm:^1.0.0": version: 1.0.0 - resolution: "async-generator-function@npm:1.0.0" + resolution: "async-generator-function@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fasync-generator-function%2F-%2Fasync-generator-function-1.0.0.tgz" checksum: 10/3d49e7acbeee9e84537f4cb0e0f91893df8eba976759875ae8ee9e3d3c82f6ecdebdb347c2fad9926b92596d93cdfc78ecc988bcdf407e40433e8e8e6fe5d78e languageName: node linkType: hard "asynckit@npm:^0.4.0": version: 0.4.0 - resolution: "asynckit@npm:0.4.0" + resolution: "asynckit@npm:0.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fasynckit%2F-%2Fasynckit-0.4.0.tgz" checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 languageName: node linkType: hard "available-typed-arrays@npm:^1.0.7": version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" + resolution: "available-typed-arrays@npm:1.0.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Favailable-typed-arrays%2F-%2Favailable-typed-arrays-1.0.7.tgz" dependencies: possible-typed-array-names: "npm:^1.0.0" checksum: 10/6c9da3a66caddd83c875010a1ca8ef11eac02ba15fb592dc9418b2b5e7b77b645fa7729380a92d9835c2f05f2ca1b6251f39b993e0feb3f1517c74fa1af02cab @@ -1686,105 +1896,104 @@ __metadata: linkType: hard "axe-core@npm:^4.10.0": - version: 4.11.1 - resolution: "axe-core@npm:4.11.1" - checksum: 10/bbc8e8959258a229b92fbaa73437050825579815051cac7b0fdbb6752946fea226e403bfeeef3d60d712477bdd4c01afdc8455f27c3d85e4251df88b032b6250 + version: 4.11.4 + resolution: "axe-core@npm:4.11.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faxe-core%2F-%2Faxe-core-4.11.4.tgz" + checksum: 10/49095daa422d05d99a90b39301a3b5c971e234a4593403dfd6701df637a3e550bcfd7bd096709c5643564dd069208513247791f367790e0605d15386fb2a7bfe languageName: node linkType: hard "axobject-query@npm:^4.1.0": version: 4.1.0 - resolution: "axobject-query@npm:4.1.0" + resolution: "axobject-query@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faxobject-query%2F-%2Faxobject-query-4.1.0.tgz" checksum: 10/e275dea9b673f71170d914f2d2a18be5d57d8d29717b629e7fedd907dcc2ebdc7a37803ff975874810bd423f222f299c020d28fde40a146f537448bf6bfecb6e languageName: node linkType: hard "bail@npm:^2.0.0": version: 2.0.2 - resolution: "bail@npm:2.0.2" + resolution: "bail@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbail%2F-%2Fbail-2.0.2.tgz" checksum: 10/aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" + resolution: "balanced-match@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbalanced-match%2F-%2Fbalanced-match-1.0.2.tgz" checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard "balanced-match@npm:^4.0.2": version: 4.0.4 - resolution: "balanced-match@npm:4.0.4" + resolution: "balanced-match@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbalanced-match%2F-%2Fbalanced-match-4.0.4.tgz" checksum: 10/fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 languageName: node linkType: hard -"baseline-browser-mapping@npm:^2.9.0": - version: 2.10.0 - resolution: "baseline-browser-mapping@npm:2.10.0" +"baseline-browser-mapping@npm:^2.10.12": + version: 2.10.27 + resolution: "baseline-browser-mapping@npm:2.10.27::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbaseline-browser-mapping%2F-%2Fbaseline-browser-mapping-2.10.27.tgz" bin: baseline-browser-mapping: dist/cli.cjs - checksum: 10/8145e076e4299f04c7a412e6ea63803e330153cd89c47b5303f9b56b58078f4c3d5a5b5332c1069da889e76facacca4d43f8940375f7e73ce0a4d96214332953 + checksum: 10/4f28c994592d92ab70479f6fb802c219922a72876e20001a39ae0a0d2fef8c86197ebc830c32c23be3a7ee99e5eababf992c0883461ef5af56a075e8c66079ee languageName: node linkType: hard "brace-expansion@npm:^1.1.7": - version: 1.1.12 - resolution: "brace-expansion@npm:1.1.12" + version: 1.1.14 + resolution: "brace-expansion@npm:1.1.14::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrace-expansion%2F-%2Fbrace-expansion-1.1.14.tgz" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 10/12cb6d6310629e3048cadb003e1aca4d8c9bb5c67c3c321bafdd7e7a50155de081f78ea3e0ed92ecc75a9015e784f301efc8132383132f4f7904ad1ac529c562 + checksum: 10/2de747a5891ea0d3a1946ea1ae26e056a47f7ea8d42a3009e1736ec3a31a5aa69a3c5da59d998426773553afe4c258e5b12d7953b534fa7f2cf12ce92eed4931 languageName: node linkType: hard -"brace-expansion@npm:^5.0.2": - version: 5.0.3 - resolution: "brace-expansion@npm:5.0.3" +"brace-expansion@npm:^2.0.2": + version: 2.1.0 + resolution: "brace-expansion@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrace-expansion%2F-%2Fbrace-expansion-2.1.0.tgz" dependencies: - balanced-match: "npm:^4.0.2" - checksum: 10/8ba7deae4ca333d52418d2cde3287ac23f44f7330d92c3ecd96a8941597bea8aab02227bd990944d6711dd549bcc6e550fe70be5d94aa02e2fdc88942f480c9b + balanced-match: "npm:^1.0.0" + checksum: 10/c77a7a64aabf94b8d5913955adb4f36957917565374461355bb4276830c027a313d981f32410cea9e38f52573e7eb776d02fe05091c3a79a061958d97e4d2b43 languageName: node linkType: hard -"browserslist@npm:^4.24.0": - version: 4.28.1 - resolution: "browserslist@npm:4.28.1" - dependencies: - baseline-browser-mapping: "npm:^2.9.0" - caniuse-lite: "npm:^1.0.30001759" - electron-to-chromium: "npm:^1.5.263" - node-releases: "npm:^2.0.27" - update-browserslist-db: "npm:^1.2.0" - bin: - browserslist: cli.js - checksum: 10/64f2a97de4bce8473c0e5ae0af8d76d1ead07a5b05fc6bc87b848678bb9c3a91ae787b27aa98cdd33fc00779607e6c156000bed58fefb9cf8e4c5a183b994cdb +"brace-expansion@npm:^5.0.5": + version: 5.0.5 + resolution: "brace-expansion@npm:5.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrace-expansion%2F-%2Fbrace-expansion-5.0.5.tgz" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10/f259b2ddf04489da9512ad637ba6b4ef2d77abd4445d20f7f1714585f153435200a53fa6a2e4a5ee974df14ddad4cd16421f6f803e96e8b452bd48598878d0ee languageName: node linkType: hard -"cacache@npm:^20.0.1": - version: 20.0.3 - resolution: "cacache@npm:20.0.3" +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbraces%2F-%2Fbraces-3.0.3.tgz" dependencies: - "@npmcli/fs": "npm:^5.0.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^13.0.0" - lru-cache: "npm:^11.1.0" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^7.0.2" - ssri: "npm:^13.0.0" - unique-filename: "npm:^5.0.0" - checksum: 10/388a0169970df9d051da30437f93f81b7e91efb570ad0ff2b8fde33279fbe726c1bc8e8e2b9c05053ffb4f563854c73db395e8712e3b62347a1bc4f7fb8899ff + fill-range: "npm:^7.1.1" + checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6 + languageName: node + linkType: hard + +"browserslist@npm:^4.24.0": + version: 4.28.2 + resolution: "browserslist@npm:4.28.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrowserslist%2F-%2Fbrowserslist-4.28.2.tgz" + dependencies: + baseline-browser-mapping: "npm:^2.10.12" + caniuse-lite: "npm:^1.0.30001782" + electron-to-chromium: "npm:^1.5.328" + node-releases: "npm:^2.0.36" + update-browserslist-db: "npm:^1.2.3" + bin: + browserslist: cli.js + checksum: 10/cff88386e5b5ba5614c9063bd32ef94865bba22b6a381844c7d09ea1eea62a2247e7106e516abdbfda6b75b9986044c991dfe45f92f10add5ad63dccc07589ec languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 - resolution: "call-bind-apply-helpers@npm:1.0.2" + resolution: "call-bind-apply-helpers@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcall-bind-apply-helpers%2F-%2Fcall-bind-apply-helpers-1.0.2.tgz" dependencies: es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" @@ -1792,21 +2001,21 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": - version: 1.0.8 - resolution: "call-bind@npm:1.0.8" +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8, call-bind@npm:^1.0.9": + version: 1.0.9 + resolution: "call-bind@npm:1.0.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcall-bind%2F-%2Fcall-bind-1.0.9.tgz" dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + get-intrinsic: "npm:^1.3.0" set-function-length: "npm:^1.2.2" - checksum: 10/659b03c79bbfccf0cde3a79e7d52570724d7290209823e1ca5088f94b52192dc1836b82a324d0144612f816abb2f1734447438e38d9dafe0b3f82c2a1b9e3bce + checksum: 10/25b1a98d6158f0adf9fface594ca82be4e3ed481d8ff7f36ad1fccb0c8377e38c6a04ff3248693723222d378677e93077c739defc8a6741c82b7e00bcee1245d languageName: node linkType: hard "call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": version: 1.0.4 - resolution: "call-bound@npm:1.0.4" + resolution: "call-bound@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcall-bound%2F-%2Fcall-bound-1.0.4.tgz" dependencies: call-bind-apply-helpers: "npm:^1.0.2" get-intrinsic: "npm:^1.3.0" @@ -1816,35 +2025,35 @@ __metadata: "callsites@npm:^3.0.0": version: 3.1.0 - resolution: "callsites@npm:3.1.0" + resolution: "callsites@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcallsites%2F-%2Fcallsites-3.1.0.tgz" checksum: 10/072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001759": - version: 1.0.30001772 - resolution: "caniuse-lite@npm:1.0.30001772" - checksum: 10/94f0cdb55fb17271435ad5622be2d422d160a7a13cab3006aab1972b15cf699245772922ff2570b5be6ddc1708a4ac9eedb6989cdabfb2de3ef25f294231409a +"caniuse-lite@npm:^1.0.30001782": + version: 1.0.30001791 + resolution: "caniuse-lite@npm:1.0.30001791::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcaniuse-lite%2F-%2Fcaniuse-lite-1.0.30001791.tgz" + checksum: 10/0ec6ef60ca9f5da3da37a57c8b7b645878b6aca406eb5b569dda0bdfa518fe83320e3e2e9e25450a40a8f34854c1537c287f8bd107830aa6f39c3018f98fe408 languageName: node linkType: hard "ccount@npm:^2.0.0": version: 2.0.1 - resolution: "ccount@npm:2.0.1" + resolution: "ccount@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fccount%2F-%2Fccount-2.0.1.tgz" checksum: 10/48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 languageName: node linkType: hard -"chai@npm:^6.2.1": +"chai@npm:^6.2.2": version: 6.2.2 - resolution: "chai@npm:6.2.2" + resolution: "chai@npm:6.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fchai%2F-%2Fchai-6.2.2.tgz" checksum: 10/13cda42cc40aa46da04a41cf7e5c61df6b6ae0b4e8a8c8b40e04d6947e4d7951377ea8c14f9fa7fe5aaa9e8bd9ba414f11288dc958d4cee6f5221b9436f2778f languageName: node linkType: hard "chalk@npm:^4.0.0": version: 4.1.2 - resolution: "chalk@npm:4.1.2" + resolution: "chalk@npm:4.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fchalk%2F-%2Fchalk-4.1.2.tgz" dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" @@ -1854,42 +2063,49 @@ __metadata: "character-entities-html4@npm:^2.0.0": version: 2.1.0 - resolution: "character-entities-html4@npm:2.1.0" + resolution: "character-entities-html4@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-entities-html4%2F-%2Fcharacter-entities-html4-2.1.0.tgz" checksum: 10/7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d languageName: node linkType: hard "character-entities-legacy@npm:^3.0.0": version: 3.0.0 - resolution: "character-entities-legacy@npm:3.0.0" + resolution: "character-entities-legacy@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-entities-legacy%2F-%2Fcharacter-entities-legacy-3.0.0.tgz" checksum: 10/7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 languageName: node linkType: hard "character-entities@npm:^2.0.0": version: 2.0.2 - resolution: "character-entities@npm:2.0.2" + resolution: "character-entities@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-entities%2F-%2Fcharacter-entities-2.0.2.tgz" checksum: 10/c8dd1f4bf1a92fccf7d2fad9673660a88b37854557d30f6076c32fedfb92d1420208298829ff1d3b6b4fa1c7012e8326c45e7f5c3ed1e9a09ec177593c521b2f languageName: node linkType: hard "character-reference-invalid@npm:^2.0.0": version: 2.0.1 - resolution: "character-reference-invalid@npm:2.0.1" + resolution: "character-reference-invalid@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-reference-invalid%2F-%2Fcharacter-reference-invalid-2.0.1.tgz" checksum: 10/98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee languageName: node linkType: hard "chownr@npm:^3.0.0": version: 3.0.0 - resolution: "chownr@npm:3.0.0" + resolution: "chownr@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fchownr%2F-%2Fchownr-3.0.0.tgz" checksum: 10/b63cb1f73d171d140a2ed8154ee6566c8ab775d3196b0e03a2a94b5f6a0ce7777ee5685ca56849403c8d17bd457a6540672f9a60696a6137c7a409097495b82c languageName: node linkType: hard +"code-block-writer@npm:^13.0.3": + version: 13.0.3 + resolution: "code-block-writer@npm:13.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcode-block-writer%2F-%2Fcode-block-writer-13.0.3.tgz" + checksum: 10/771546224f38610eecee0598e83c9e0f86dcd600ea316dbf27c2cfebaab4fed51b042325aa460b8e0f131fac5c1de208f6610a1ddbffe4b22e76f9b5256707cb + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 - resolution: "color-convert@npm:2.0.1" + resolution: "color-convert@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcolor-convert%2F-%2Fcolor-convert-2.0.1.tgz" dependencies: color-name: "npm:~1.1.4" checksum: 10/fa00c91b4332b294de06b443923246bccebe9fab1b253f7fe1772d37b06a2269b4039a85e309abe1fe11b267b11c08d1d0473fda3badd6167f57313af2887a64 @@ -1898,14 +2114,14 @@ __metadata: "color-name@npm:~1.1.4": version: 1.1.4 - resolution: "color-name@npm:1.1.4" + resolution: "color-name@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcolor-name%2F-%2Fcolor-name-1.1.4.tgz" checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard "combined-stream@npm:^1.0.8": version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" + resolution: "combined-stream@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcombined-stream%2F-%2Fcombined-stream-1.0.8.tgz" dependencies: delayed-stream: "npm:~1.0.0" checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 @@ -1914,35 +2130,35 @@ __metadata: "comma-separated-tokens@npm:^2.0.0": version: 2.0.3 - resolution: "comma-separated-tokens@npm:2.0.3" + resolution: "comma-separated-tokens@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcomma-separated-tokens%2F-%2Fcomma-separated-tokens-2.0.3.tgz" checksum: 10/e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 - resolution: "concat-map@npm:0.0.1" + resolution: "concat-map@npm:0.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fconcat-map%2F-%2Fconcat-map-0.0.1.tgz" checksum: 10/9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2 languageName: node linkType: hard "convert-source-map@npm:^2.0.0": version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" + resolution: "convert-source-map@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fconvert-source-map%2F-%2Fconvert-source-map-2.0.0.tgz" checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 languageName: node linkType: hard "cookie@npm:^1.0.1": version: 1.1.1 - resolution: "cookie@npm:1.1.1" + resolution: "cookie@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcookie%2F-%2Fcookie-1.1.1.tgz" checksum: 10/85538153054791155cf4d38d2e807e3b9382d71bf71d92fc46fca348515ea574049d0d9ef8eb84d2d54a681ad1d7a7316b1989b901dace50a6c0f4c3858dbdb2 languageName: node linkType: hard "cross-spawn@npm:^7.0.6": version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" + resolution: "cross-spawn@npm:7.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcross-spawn%2F-%2Fcross-spawn-7.0.6.tgz" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" @@ -1953,7 +2169,7 @@ __metadata: "cssstyle@npm:^4.0.1": version: 4.6.0 - resolution: "cssstyle@npm:4.6.0" + resolution: "cssstyle@npm:4.6.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcssstyle%2F-%2Fcssstyle-4.6.0.tgz" dependencies: "@asamuzakjp/css-color": "npm:^3.2.0" rrweb-cssom: "npm:^0.8.0" @@ -1963,21 +2179,21 @@ __metadata: "csstype@npm:^3.2.2": version: 3.2.3 - resolution: "csstype@npm:3.2.3" + resolution: "csstype@npm:3.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcsstype%2F-%2Fcsstype-3.2.3.tgz" checksum: 10/ad41baf7e2ffac65ab544d79107bf7cd1a4bb9bab9ac3302f59ab4ba655d5e30942a8ae46e10ba160c6f4ecea464cc95b975ca2fefbdeeacd6ac63f12f99fe1f languageName: node linkType: hard "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8" + resolution: "damerau-levenshtein@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdamerau-levenshtein%2F-%2Fdamerau-levenshtein-1.0.8.tgz" checksum: 10/f4eba1c90170f96be25d95fa3857141b5f81e254f7e4d530da929217b19990ea9a0390fc53d3c1cafac9152fda78e722ea4894f765cf6216be413b5af1fbf821 languageName: node linkType: hard "data-urls@npm:^5.0.0": version: 5.0.0 - resolution: "data-urls@npm:5.0.0" + resolution: "data-urls@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-urls%2F-%2Fdata-urls-5.0.0.tgz" dependencies: whatwg-mimetype: "npm:^4.0.0" whatwg-url: "npm:^14.0.0" @@ -1987,7 +2203,7 @@ __metadata: "data-view-buffer@npm:^1.0.2": version: 1.0.2 - resolution: "data-view-buffer@npm:1.0.2" + resolution: "data-view-buffer@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-view-buffer%2F-%2Fdata-view-buffer-1.0.2.tgz" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -1998,7 +2214,7 @@ __metadata: "data-view-byte-length@npm:^1.0.2": version: 1.0.2 - resolution: "data-view-byte-length@npm:1.0.2" + resolution: "data-view-byte-length@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-view-byte-length%2F-%2Fdata-view-byte-length-1.0.2.tgz" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -2009,7 +2225,7 @@ __metadata: "data-view-byte-offset@npm:^1.0.1": version: 1.0.1 - resolution: "data-view-byte-offset@npm:1.0.1" + resolution: "data-view-byte-offset@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-view-byte-offset%2F-%2Fdata-view-byte-offset-1.0.1.tgz" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -2020,7 +2236,7 @@ __metadata: "debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": version: 4.4.3 - resolution: "debug@npm:4.4.3" + resolution: "debug@npm:4.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdebug%2F-%2Fdebug-4.4.3.tgz" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: @@ -2032,14 +2248,14 @@ __metadata: "decimal.js@npm:^10.4.3": version: 10.6.0 - resolution: "decimal.js@npm:10.6.0" + resolution: "decimal.js@npm:10.6.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdecimal.js%2F-%2Fdecimal.js-10.6.0.tgz" checksum: 10/c0d45842d47c311d11b38ce7ccc911121953d4df3ebb1465d92b31970eb4f6738a065426a06094af59bee4b0d64e42e7c8984abd57b6767c64ea90cf90bb4a69 languageName: node linkType: hard "decode-named-character-reference@npm:^1.0.0": version: 1.3.0 - resolution: "decode-named-character-reference@npm:1.3.0" + resolution: "decode-named-character-reference@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdecode-named-character-reference%2F-%2Fdecode-named-character-reference-1.3.0.tgz" dependencies: character-entities: "npm:^2.0.0" checksum: 10/82eb1208abf59d1f1e368285b6880201a3c3f147a4d7ce74e44cd41374ef00c9a376e8595e38002031db63291f91f7f3ff56b9724f715befff8f5566593d6de0 @@ -2048,14 +2264,14 @@ __metadata: "deep-is@npm:^0.1.3": version: 0.1.4 - resolution: "deep-is@npm:0.1.4" + resolution: "deep-is@npm:0.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdeep-is%2F-%2Fdeep-is-0.1.4.tgz" checksum: 10/ec12d074aef5ae5e81fa470b9317c313142c9e8e2afe3f8efa124db309720db96d1d222b82b84c834e5f87e7a614b44a4684b6683583118b87c833b3be40d4d8 languageName: node linkType: hard "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" + resolution: "define-data-property@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdefine-data-property%2F-%2Fdefine-data-property-1.1.4.tgz" dependencies: es-define-property: "npm:^1.0.0" es-errors: "npm:^1.3.0" @@ -2066,7 +2282,7 @@ __metadata: "define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": version: 1.2.1 - resolution: "define-properties@npm:1.2.1" + resolution: "define-properties@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdefine-properties%2F-%2Fdefine-properties-1.2.1.tgz" dependencies: define-data-property: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.0" @@ -2077,21 +2293,28 @@ __metadata: "delayed-stream@npm:~1.0.0": version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" + resolution: "delayed-stream@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdelayed-stream%2F-%2Fdelayed-stream-1.0.0.tgz" checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 languageName: node linkType: hard "dequal@npm:^2.0.0, dequal@npm:^2.0.3": version: 2.0.3 - resolution: "dequal@npm:2.0.3" + resolution: "dequal@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdequal%2F-%2Fdequal-2.0.3.tgz" checksum: 10/6ff05a7561f33603df87c45e389c9ac0a95e3c056be3da1a0c4702149e3a7f6fe5ffbb294478687ba51a9e95f3a60e8b6b9005993acd79c292c7d15f71964b6b languageName: node linkType: hard +"detect-libc@npm:^2.0.3": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdetect-libc%2F-%2Fdetect-libc-2.1.2.tgz" + checksum: 10/b736c8d97d5d46164c0d1bed53eb4e6a3b1d8530d460211e2d52f1c552875e706c58a5376854e4e54f8b828c9cada58c855288c968522eb93ac7696d65970766 + languageName: node + linkType: hard + "devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 - resolution: "devlop@npm:1.1.0" + resolution: "devlop@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdevlop%2F-%2Fdevlop-1.1.0.tgz" dependencies: dequal: "npm:^2.0.0" checksum: 10/3cc5f903d02d279d6dc4aa71ab6ed9898b9f4d1f861cc5421ce7357893c21b9520de78afb203c92bd650a6977ad0ca98195453a0707a39958cf5fea3b0a8ddd8 @@ -2100,7 +2323,7 @@ __metadata: "doctrine@npm:^2.1.0": version: 2.1.0 - resolution: "doctrine@npm:2.1.0" + resolution: "doctrine@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdoctrine%2F-%2Fdoctrine-2.1.0.tgz" dependencies: esutils: "npm:^2.0.2" checksum: 10/555684f77e791b17173ea86e2eea45ef26c22219cb64670669c4f4bebd26dbc95cd90ec1f4159e9349a6bb9eb892ce4dde8cd0139e77bedd8bf4518238618474 @@ -2109,14 +2332,14 @@ __metadata: "dom-accessibility-api@npm:^0.5.9": version: 0.5.16 - resolution: "dom-accessibility-api@npm:0.5.16" + resolution: "dom-accessibility-api@npm:0.5.16::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdom-accessibility-api%2F-%2Fdom-accessibility-api-0.5.16.tgz" checksum: 10/377b4a7f9eae0a5d72e1068c369c99e0e4ca17fdfd5219f3abd32a73a590749a267475a59d7b03a891f9b673c27429133a818c44b2e47e32fec024b34274e2ca languageName: node linkType: hard "dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1" + resolution: "dunder-proto@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdunder-proto%2F-%2Fdunder-proto-1.0.1.tgz" dependencies: call-bind-apply-helpers: "npm:^1.0.1" es-errors: "npm:^1.3.0" @@ -2125,53 +2348,37 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.263": - version: 1.5.302 - resolution: "electron-to-chromium@npm:1.5.302" - checksum: 10/0d31470d04a0d1ea046dd363370081b67e6fe822949b10cfece0a64fd2f8180afb5ccaf14f4294251e444a0af627eb0dc0156242b714c0f10561adf2a21aa5f7 +"electron-to-chromium@npm:^1.5.328": + version: 1.5.349 + resolution: "electron-to-chromium@npm:1.5.349::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Felectron-to-chromium%2F-%2Felectron-to-chromium-1.5.349.tgz" + checksum: 10/f4247aae718e9bfd94d4ba0e5c77929d94d4d211a2f71c07b76fbeba8391fa2b979b7ccb9dab75c398e885c12128b22d6b4234c2a88c85e5cc5d3fe37530c945 languageName: node linkType: hard "emoji-regex@npm:^9.2.2": version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" + resolution: "emoji-regex@npm:9.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Femoji-regex%2F-%2Femoji-regex-9.2.2.tgz" checksum: 10/915acf859cea7131dac1b2b5c9c8e35c4849e325a1d114c30adb8cd615970f6dca0e27f64f3a4949d7d6ed86ecd79a1c5c63f02e697513cddd7b5835c90948b8 languageName: node linkType: hard -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - "entities@npm:^6.0.0": version: 6.0.1 - resolution: "entities@npm:6.0.1" + resolution: "entities@npm:6.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fentities%2F-%2Fentities-6.0.1.tgz" checksum: 10/62af1307202884349d2867f0aac5c60d8b57102ea0b0e768b16246099512c28e239254ad772d6834e7e14cb1b6f153fc3d0c031934e3183b086c86d3838d874a languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 - resolution: "env-paths@npm:2.2.1" + resolution: "env-paths@npm:2.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fenv-paths%2F-%2Fenv-paths-2.2.1.tgz" checksum: 10/65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e languageName: node linkType: hard -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd - languageName: node - linkType: hard - -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": - version: 1.24.1 - resolution: "es-abstract@npm:1.24.1" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.2": + version: 1.24.2 + resolution: "es-abstract@npm:1.24.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-abstract%2F-%2Fes-abstract-1.24.2.tgz" dependencies: array-buffer-byte-length: "npm:^1.0.2" arraybuffer.prototype.slice: "npm:^1.0.4" @@ -2227,32 +2434,32 @@ __metadata: typed-array-length: "npm:^1.0.7" unbox-primitive: "npm:^1.1.0" which-typed-array: "npm:^1.1.19" - checksum: 10/c84cb69ebae36781309a3ed70ff40b4767a921d3b3518060fac4e08f14ede04491b68e9f318aedf186e349d4af4a40f5d0e4111e46513800e8368551fd09de8c + checksum: 10/e2c97263d87b7faf65102d887074af421db7e48cd92b8b3cd308216cdd2547b647e8f61bf51429bdb13adc463bb7f421989544cbfd2e7f7469ef7a69ae8a4205 languageName: node linkType: hard "es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": version: 1.0.1 - resolution: "es-define-property@npm:1.0.1" + resolution: "es-define-property@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-define-property%2F-%2Fes-define-property-1.0.1.tgz" checksum: 10/f8dc9e660d90919f11084db0a893128f3592b781ce967e4fccfb8f3106cb83e400a4032c559184ec52ee1dbd4b01e7776c7cd0b3327b1961b1a4a7008920fe78 languageName: node linkType: hard "es-errors@npm:^1.3.0": version: 1.3.0 - resolution: "es-errors@npm:1.3.0" + resolution: "es-errors@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-errors%2F-%2Fes-errors-1.3.0.tgz" checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 languageName: node linkType: hard "es-iterator-helpers@npm:^1.2.1": - version: 1.2.2 - resolution: "es-iterator-helpers@npm:1.2.2" + version: 1.3.2 + resolution: "es-iterator-helpers@npm:1.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-iterator-helpers%2F-%2Fes-iterator-helpers-1.3.2.tgz" dependencies: - call-bind: "npm:^1.0.8" + call-bind: "npm:^1.0.9" call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.24.1" + es-abstract: "npm:^1.24.2" es-errors: "npm:^1.3.0" es-set-tostringtag: "npm:^2.1.0" function-bind: "npm:^1.1.2" @@ -2264,21 +2471,21 @@ __metadata: has-symbols: "npm:^1.1.0" internal-slot: "npm:^1.1.0" iterator.prototype: "npm:^1.1.5" - safe-array-concat: "npm:^1.1.3" - checksum: 10/17b5b2834c4f5719d6ce0e837a4d11c6ba4640bee28290d22ec4daf7106ec3d5fe0ff4f7e5dbaa2b4612e8335934360e964a8f08608d43f2889da106b25481ee + math-intrinsics: "npm:^1.1.0" + checksum: 10/6b8f9c55c6bb3d5edbae777e892a18e093a7d7a1aa7e8f14da908476b84fbf55769a51356a674819ec95e9655ecdc873a9b7fb5b719320ef67e1b203c77f0bad languageName: node linkType: hard -"es-module-lexer@npm:^1.7.0": - version: 1.7.0 - resolution: "es-module-lexer@npm:1.7.0" - checksum: 10/b6f3e576a3fed4d82b0d0ad4bbf6b3a5ad694d2e7ce8c4a069560da3db6399381eaba703616a182b16dde50ce998af64e07dcf49f2ae48153b9e07be3f107087 +"es-module-lexer@npm:^2.0.0": + version: 2.1.0 + resolution: "es-module-lexer@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-module-lexer%2F-%2Fes-module-lexer-2.1.0.tgz" + checksum: 10/554c4374e78a812a1fa3673871ce7d42236438c414ea80c2ec35521cd9bb26d1d9155287529057d07431fd91df50d6a26d9bee5afd755fb7f6f7c81905a03956 languageName: node linkType: hard "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 - resolution: "es-object-atoms@npm:1.1.1" + resolution: "es-object-atoms@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-object-atoms%2F-%2Fes-object-atoms-1.1.1.tgz" dependencies: es-errors: "npm:^1.3.0" checksum: 10/54fe77de288451dae51c37bfbfe3ec86732dc3778f98f3eb3bdb4bf48063b2c0b8f9c93542656986149d08aa5be3204286e2276053d19582b76753f1a2728867 @@ -2287,7 +2494,7 @@ __metadata: "es-set-tostringtag@npm:^2.1.0": version: 2.1.0 - resolution: "es-set-tostringtag@npm:2.1.0" + resolution: "es-set-tostringtag@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-set-tostringtag%2F-%2Fes-set-tostringtag-2.1.0.tgz" dependencies: es-errors: "npm:^1.3.0" get-intrinsic: "npm:^1.2.6" @@ -2299,7 +2506,7 @@ __metadata: "es-shim-unscopables@npm:^1.0.2": version: 1.1.0 - resolution: "es-shim-unscopables@npm:1.1.0" + resolution: "es-shim-unscopables@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-shim-unscopables%2F-%2Fes-shim-unscopables-1.1.0.tgz" dependencies: hasown: "npm:^2.0.2" checksum: 10/c351f586c30bbabc62355be49564b2435468b52c3532b8a1663672e3d10dc300197e69c247869dd173e56d86423ab95fc0c10b0939cdae597094e0fdca078cba @@ -2308,7 +2515,7 @@ __metadata: "es-to-primitive@npm:^1.3.0": version: 1.3.0 - resolution: "es-to-primitive@npm:1.3.0" + resolution: "es-to-primitive@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-to-primitive%2F-%2Fes-to-primitive-1.3.0.tgz" dependencies: is-callable: "npm:^1.2.7" is-date-object: "npm:^1.0.5" @@ -2318,35 +2525,35 @@ __metadata: linkType: hard "esbuild@npm:^0.27.0": - version: 0.27.3 - resolution: "esbuild@npm:0.27.3" - dependencies: - "@esbuild/aix-ppc64": "npm:0.27.3" - "@esbuild/android-arm": "npm:0.27.3" - "@esbuild/android-arm64": "npm:0.27.3" - "@esbuild/android-x64": "npm:0.27.3" - "@esbuild/darwin-arm64": "npm:0.27.3" - "@esbuild/darwin-x64": "npm:0.27.3" - "@esbuild/freebsd-arm64": "npm:0.27.3" - "@esbuild/freebsd-x64": "npm:0.27.3" - "@esbuild/linux-arm": "npm:0.27.3" - "@esbuild/linux-arm64": "npm:0.27.3" - "@esbuild/linux-ia32": "npm:0.27.3" - "@esbuild/linux-loong64": "npm:0.27.3" - "@esbuild/linux-mips64el": "npm:0.27.3" - "@esbuild/linux-ppc64": "npm:0.27.3" - "@esbuild/linux-riscv64": "npm:0.27.3" - "@esbuild/linux-s390x": "npm:0.27.3" - "@esbuild/linux-x64": "npm:0.27.3" - "@esbuild/netbsd-arm64": "npm:0.27.3" - "@esbuild/netbsd-x64": "npm:0.27.3" - "@esbuild/openbsd-arm64": "npm:0.27.3" - "@esbuild/openbsd-x64": "npm:0.27.3" - "@esbuild/openharmony-arm64": "npm:0.27.3" - "@esbuild/sunos-x64": "npm:0.27.3" - "@esbuild/win32-arm64": "npm:0.27.3" - "@esbuild/win32-ia32": "npm:0.27.3" - "@esbuild/win32-x64": "npm:0.27.3" + version: 0.27.7 + resolution: "esbuild@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesbuild%2F-%2Fesbuild-0.27.7.tgz" + dependencies: + "@esbuild/aix-ppc64": "npm:0.27.7" + "@esbuild/android-arm": "npm:0.27.7" + "@esbuild/android-arm64": "npm:0.27.7" + "@esbuild/android-x64": "npm:0.27.7" + "@esbuild/darwin-arm64": "npm:0.27.7" + "@esbuild/darwin-x64": "npm:0.27.7" + "@esbuild/freebsd-arm64": "npm:0.27.7" + "@esbuild/freebsd-x64": "npm:0.27.7" + "@esbuild/linux-arm": "npm:0.27.7" + "@esbuild/linux-arm64": "npm:0.27.7" + "@esbuild/linux-ia32": "npm:0.27.7" + "@esbuild/linux-loong64": "npm:0.27.7" + "@esbuild/linux-mips64el": "npm:0.27.7" + "@esbuild/linux-ppc64": "npm:0.27.7" + "@esbuild/linux-riscv64": "npm:0.27.7" + "@esbuild/linux-s390x": "npm:0.27.7" + "@esbuild/linux-x64": "npm:0.27.7" + "@esbuild/netbsd-arm64": "npm:0.27.7" + "@esbuild/netbsd-x64": "npm:0.27.7" + "@esbuild/openbsd-arm64": "npm:0.27.7" + "@esbuild/openbsd-x64": "npm:0.27.7" + "@esbuild/openharmony-arm64": "npm:0.27.7" + "@esbuild/sunos-x64": "npm:0.27.7" + "@esbuild/win32-arm64": "npm:0.27.7" + "@esbuild/win32-ia32": "npm:0.27.7" + "@esbuild/win32-x64": "npm:0.27.7" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -2402,34 +2609,34 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10/aa74b8d8a3ed8e2eea4d8421737b322f4d21215244e8fa2156c6402d49b5bda01343c220196f1e3f830a7ce92b54ef653c6c723a8cc2e912bb4d17b7398b51ae + checksum: 10/262b16c4a33cb70e9f054759a7ce420541649315eef7b064172c795021ccce322e56c3f5fd52e8842873f1c23745f3ab62311a24860950bd5406ba77b36b8529 languageName: node linkType: hard "escalade@npm:^3.2.0": version: 3.2.0 - resolution: "escalade@npm:3.2.0" + resolution: "escalade@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fescalade%2F-%2Fescalade-3.2.0.tgz" checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" + resolution: "escape-string-regexp@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fescape-string-regexp%2F-%2Fescape-string-regexp-4.0.0.tgz" checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 languageName: node linkType: hard "escape-string-regexp@npm:^5.0.0": version: 5.0.0 - resolution: "escape-string-regexp@npm:5.0.0" + resolution: "escape-string-regexp@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fescape-string-regexp%2F-%2Fescape-string-regexp-5.0.0.tgz" checksum: 10/20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e languageName: node linkType: hard "eslint-config-prettier@npm:^10.1.1": version: 10.1.8 - resolution: "eslint-config-prettier@npm:10.1.8" + resolution: "eslint-config-prettier@npm:10.1.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-config-prettier%2F-%2Feslint-config-prettier-10.1.8.tgz" peerDependencies: eslint: ">=7.0.0" bin: @@ -2440,7 +2647,7 @@ __metadata: "eslint-plugin-jsx-a11y@npm:^6.10.2": version: 6.10.2 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-plugin-jsx-a11y%2F-%2Feslint-plugin-jsx-a11y-6.10.2.tgz" dependencies: aria-query: "npm:^5.3.2" array-includes: "npm:^3.1.8" @@ -2465,7 +2672,7 @@ __metadata: "eslint-plugin-react-hooks@npm:7.0.1": version: 7.0.1 - resolution: "eslint-plugin-react-hooks@npm:7.0.1" + resolution: "eslint-plugin-react-hooks@npm:7.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-plugin-react-hooks%2F-%2Feslint-plugin-react-hooks-7.0.1.tgz" dependencies: "@babel/core": "npm:^7.24.4" "@babel/parser": "npm:^7.24.4" @@ -2480,7 +2687,7 @@ __metadata: "eslint-plugin-react@npm:^7.37.5": version: 7.37.5 - resolution: "eslint-plugin-react@npm:7.37.5" + resolution: "eslint-plugin-react@npm:7.37.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-plugin-react%2F-%2Feslint-plugin-react-7.37.5.tgz" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" @@ -2508,7 +2715,7 @@ __metadata: "eslint-scope@npm:^8.4.0": version: 8.4.0 - resolution: "eslint-scope@npm:8.4.0" + resolution: "eslint-scope@npm:8.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-scope%2F-%2Feslint-scope-8.4.0.tgz" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" @@ -2518,21 +2725,21 @@ __metadata: "eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" + resolution: "eslint-visitor-keys@npm:3.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-visitor-keys%2F-%2Feslint-visitor-keys-3.4.3.tgz" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b languageName: node linkType: hard "eslint-visitor-keys@npm:^4.2.1": version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1" + resolution: "eslint-visitor-keys@npm:4.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-visitor-keys%2F-%2Feslint-visitor-keys-4.2.1.tgz" checksum: 10/3ee00fc6a7002d4b0ffd9dc99e13a6a7882c557329e6c25ab254220d71e5c9c4f89dca4695352949ea678eb1f3ba912a18ef8aac0a7fe094196fd92f441bfce2 languageName: node linkType: hard "eslint@npm:9.39.2": version: 9.39.2 - resolution: "eslint@npm:9.39.2" + resolution: "eslint@npm:9.39.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint%2F-%2Feslint-9.39.2.tgz" dependencies: "@eslint-community/eslint-utils": "npm:^4.8.0" "@eslint-community/regexpp": "npm:^4.12.1" @@ -2581,7 +2788,7 @@ __metadata: "espree@npm:^10.0.1, espree@npm:^10.4.0": version: 10.4.0 - resolution: "espree@npm:10.4.0" + resolution: "espree@npm:10.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fespree%2F-%2Fespree-10.4.0.tgz" dependencies: acorn: "npm:^8.15.0" acorn-jsx: "npm:^5.3.2" @@ -2592,7 +2799,7 @@ __metadata: "esquery@npm:^1.5.0": version: 1.7.0 - resolution: "esquery@npm:1.7.0" + resolution: "esquery@npm:1.7.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesquery%2F-%2Fesquery-1.7.0.tgz" dependencies: estraverse: "npm:^5.1.0" checksum: 10/4afaf3089367e1f5885caa116ef386dffd8bfd64da21fd3d0e56e938d2667cfb2e5400ab4a825aa70e799bb3741e5b5d63c0b94d86e2d4cf3095c9e64b2f5a15 @@ -2601,7 +2808,7 @@ __metadata: "esrecurse@npm:^4.3.0": version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" + resolution: "esrecurse@npm:4.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesrecurse%2F-%2Fesrecurse-4.3.0.tgz" dependencies: estraverse: "npm:^5.2.0" checksum: 10/44ffcd89e714ea6b30143e7f119b104fc4d75e77ee913f34d59076b40ef2d21967f84e019f84e1fd0465b42cdbf725db449f232b5e47f29df29ed76194db8e16 @@ -2610,21 +2817,21 @@ __metadata: "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 - resolution: "estraverse@npm:5.3.0" + resolution: "estraverse@npm:5.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Festraverse%2F-%2Festraverse-5.3.0.tgz" checksum: 10/37cbe6e9a68014d34dbdc039f90d0baf72436809d02edffcc06ba3c2a12eb298048f877511353b130153e532aac8d68ba78430c0dd2f44806ebc7c014b01585e languageName: node linkType: hard "estree-util-is-identifier-name@npm:^3.0.0": version: 3.0.0 - resolution: "estree-util-is-identifier-name@npm:3.0.0" + resolution: "estree-util-is-identifier-name@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Festree-util-is-identifier-name%2F-%2Festree-util-is-identifier-name-3.0.0.tgz" checksum: 10/cdc9187614fdb269d714eddfdf72c270a79daa9ed51e259bb78527983be6dcc68da6a914ccc41175b662194c67fbd2a1cd262f85fac1eef7111cfddfaf6f77f8 languageName: node linkType: hard "estree-walker@npm:^3.0.3": version: 3.0.3 - resolution: "estree-walker@npm:3.0.3" + resolution: "estree-walker@npm:3.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Festree-walker%2F-%2Festree-walker-3.0.3.tgz" dependencies: "@types/estree": "npm:^1.0.0" checksum: 10/a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af @@ -2633,65 +2840,87 @@ __metadata: "esutils@npm:^2.0.2": version: 2.0.3 - resolution: "esutils@npm:2.0.3" + resolution: "esutils@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesutils%2F-%2Fesutils-2.0.3.tgz" checksum: 10/b23acd24791db11d8f65be5ea58fd9a6ce2df5120ae2da65c16cfc5331ff59d5ac4ef50af66cd4bde238881503ec839928a0135b99a036a9cdfa22d17fd56cdb languageName: node linkType: hard -"expect-type@npm:^1.2.2": +"expect-type@npm:^1.3.0": version: 1.3.0 - resolution: "expect-type@npm:1.3.0" + resolution: "expect-type@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fexpect-type%2F-%2Fexpect-type-1.3.0.tgz" checksum: 10/a5fada3d0c621649261f886e7d93e6bf80ce26d8a86e5d517e38301b8baec8450ab2cb94ba6e7a0a6bf2fc9ee55f54e1b06938ef1efa52ddcfeffbfa01acbbcc languageName: node linkType: hard "exponential-backoff@npm:^3.1.1": version: 3.1.3 - resolution: "exponential-backoff@npm:3.1.3" + resolution: "exponential-backoff@npm:3.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fexponential-backoff%2F-%2Fexponential-backoff-3.1.3.tgz" checksum: 10/ca25962b4bbab943b7c4ed0b5228e263833a5063c65e1cdeac4be9afad350aae5466e8e619b5051f4f8d37b2144a2d6e8fcc771b6cc82934f7dade2f964f652c languageName: node linkType: hard "extend@npm:^3.0.0": version: 3.0.2 - resolution: "extend@npm:3.0.2" + resolution: "extend@npm:3.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fextend%2F-%2Fextend-3.0.2.tgz" checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" + resolution: "fast-deep-equal@npm:3.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-deep-equal%2F-%2Ffast-deep-equal-3.1.3.tgz" checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d languageName: node linkType: hard +"fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-glob%2F-%2Ffast-glob-3.3.3.tgz" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10/dcc6432b269762dd47381d8b8358bf964d8f4f60286ac6aa41c01ade70bda459ff2001b516690b96d5365f68a49242966112b5d5cc9cd82395fa8f9d017c90ad + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" + resolution: "fast-json-stable-stringify@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-json-stable-stringify%2F-%2Ffast-json-stable-stringify-2.1.0.tgz" checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e languageName: node linkType: hard "fast-levenshtein@npm:^2.0.6": version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" + resolution: "fast-levenshtein@npm:2.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-levenshtein%2F-%2Ffast-levenshtein-2.0.6.tgz" checksum: 10/eb7e220ecf2bab5159d157350b81d01f75726a4382f5a9266f42b9150c4523b9795f7f5d9fbbbeaeac09a441b2369f05ee02db48ea938584205530fe5693cfe1 languageName: node linkType: hard "fastdom@npm:^1.0.11, fastdom@npm:^1.0.12": version: 1.0.12 - resolution: "fastdom@npm:1.0.12" + resolution: "fastdom@npm:1.0.12::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffastdom%2F-%2Ffastdom-1.0.12.tgz" dependencies: strictdom: "npm:^1.0.1" checksum: 10/e87d67aaed413de24680c9ec735231b6568b62e2b7740f320c3c9f0bc57ed8079ed16aaf8c83a1c27e14948f1a87a7dab98d83a375b85bf77f8bffc2ae55777f languageName: node linkType: hard +"fastq@npm:^1.6.0": + version: 1.20.1 + resolution: "fastq@npm:1.20.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffastq%2F-%2Ffastq-1.20.1.tgz" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10/ab2fe3a7a108112e7752cfe7fc11683c21e595913a6a593ad0b4415f31dddbfc283775ab66f2c8ccea6ab7cfc116157cbddcfae9798d9de98d08fe0a2c3e97b2 + languageName: node + linkType: hard + "fdir@npm:^6.5.0": version: 6.5.0 - resolution: "fdir@npm:6.5.0" + resolution: "fdir@npm:6.5.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffdir%2F-%2Ffdir-6.5.0.tgz" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2703,16 +2932,25 @@ __metadata: "file-entry-cache@npm:^8.0.0": version: 8.0.0 - resolution: "file-entry-cache@npm:8.0.0" + resolution: "file-entry-cache@npm:8.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffile-entry-cache%2F-%2Ffile-entry-cache-8.0.0.tgz" dependencies: flat-cache: "npm:^4.0.0" checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffill-range%2F-%2Ffill-range-7.1.1.tgz" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea + languageName: node + linkType: hard + "find-up@npm:^5.0.0": version: 5.0.0 - resolution: "find-up@npm:5.0.0" + resolution: "find-up@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffind-up%2F-%2Ffind-up-5.0.0.tgz" dependencies: locate-path: "npm:^6.0.0" path-exists: "npm:^4.0.0" @@ -2722,14 +2960,14 @@ __metadata: "fizban@npm:^0.7.2": version: 0.7.2 - resolution: "fizban@npm:0.7.2" + resolution: "fizban@npm:0.7.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffizban%2F-%2Ffizban-0.7.2.tgz" checksum: 10/ff7f96df55968bdccc132dec82de4aa2edfe87e92a6b3f19e0b8e8ef8e37f7d83617939bc643d38b57beb18e4b3e53765f497508c96aba6b8f037a000765ab77 languageName: node linkType: hard "flat-cache@npm:^4.0.0": version: 4.0.1 - resolution: "flat-cache@npm:4.0.1" + resolution: "flat-cache@npm:4.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fflat-cache%2F-%2Fflat-cache-4.0.1.tgz" dependencies: flatted: "npm:^3.2.9" keyv: "npm:^4.5.4" @@ -2738,15 +2976,15 @@ __metadata: linkType: hard "flatted@npm:^3.2.9": - version: 3.3.3 - resolution: "flatted@npm:3.3.3" - checksum: 10/8c96c02fbeadcf4e8ffd0fa24983241e27698b0781295622591fc13585e2f226609d95e422bcf2ef044146ffacb6b68b1f20871454eddf75ab3caa6ee5f4a1fe + version: 3.4.2 + resolution: "flatted@npm:3.4.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fflatted%2F-%2Fflatted-3.4.2.tgz" + checksum: 10/a9e78fe5c2c1fcd98209a015ccee3a6caa953e01729778e83c1fe92e68601a63e1e69cd4e573010ca99eaf585a581b80ccf1018b99283e6cbc2117bcba1e030f languageName: node linkType: hard "for-each@npm:^0.3.3, for-each@npm:^0.3.5": version: 0.3.5 - resolution: "for-each@npm:0.3.5" + resolution: "for-each@npm:0.3.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffor-each%2F-%2Ffor-each-0.3.5.tgz" dependencies: is-callable: "npm:^1.2.7" checksum: 10/330cc2439f85c94f4609de3ee1d32c5693ae15cdd7fe3d112c4fd9efd4ce7143f2c64ef6c2c9e0cfdb0058437f33ef05b5bdae5b98fcc903fb2143fbaf0fea0f @@ -2755,7 +2993,7 @@ __metadata: "form-data@npm:^4.0.0": version: 4.0.5 - resolution: "form-data@npm:4.0.5" + resolution: "form-data@npm:4.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fform-data%2F-%2Fform-data-4.0.5.tgz" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" @@ -2766,18 +3004,9 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10/af143246cf6884fe26fa281621d45cfe111d34b30535a475bfa38dafe343dadb466c047a924ffc7d6b7b18265df4110224ce3803806dbb07173bf2087b648d7f - languageName: node - linkType: hard - "fsevents@npm:2.3.2": version: 2.3.2 - resolution: "fsevents@npm:2.3.2" + resolution: "fsevents@npm:2.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffsevents%2F-%2Ffsevents-2.3.2.tgz" dependencies: node-gyp: "npm:latest" checksum: 10/6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256 @@ -2787,7 +3016,7 @@ __metadata: "fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 - resolution: "fsevents@npm:2.3.3" + resolution: "fsevents@npm:2.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffsevents%2F-%2Ffsevents-2.3.3.tgz" dependencies: node-gyp: "npm:latest" checksum: 10/4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0 @@ -2797,7 +3026,7 @@ __metadata: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin": version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" + resolution: "fsevents@patch:fsevents@npm%3A2.3.2%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Ffsevents%252F-%252Ffsevents-2.3.2.tgz#optional!builtin::version=2.3.2&hash=df0bf1" dependencies: node-gyp: "npm:latest" conditions: os=darwin @@ -2806,7 +3035,7 @@ __metadata: "fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + resolution: "fsevents@patch:fsevents@npm%3A2.3.3%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Ffsevents%252F-%252Ffsevents-2.3.3.tgz#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: node-gyp: "npm:latest" conditions: os=darwin @@ -2815,14 +3044,14 @@ __metadata: "function-bind@npm:^1.1.2": version: 1.1.2 - resolution: "function-bind@npm:1.1.2" + resolution: "function-bind@npm:1.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffunction-bind%2F-%2Ffunction-bind-1.1.2.tgz" checksum: 10/185e20d20f10c8d661d59aac0f3b63b31132d492e1b11fcc2a93cb2c47257ebaee7407c38513efd2b35cafdf972d9beb2ea4593c1e0f3bf8f2744836928d7454 languageName: node linkType: hard "function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": version: 1.1.8 - resolution: "function.prototype.name@npm:1.1.8" + resolution: "function.prototype.name@npm:1.1.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffunction.prototype.name%2F-%2Ffunction.prototype.name-1.1.8.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -2836,28 +3065,28 @@ __metadata: "functions-have-names@npm:^1.2.3": version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" + resolution: "functions-have-names@npm:1.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffunctions-have-names%2F-%2Ffunctions-have-names-1.2.3.tgz" checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 languageName: node linkType: hard "generator-function@npm:^2.0.0": version: 2.0.1 - resolution: "generator-function@npm:2.0.1" + resolution: "generator-function@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgenerator-function%2F-%2Fgenerator-function-2.0.1.tgz" checksum: 10/eb7e7eb896c5433f3d40982b2ccacdb3dd990dd3499f14040e002b5d54572476513be8a2e6f9609f6e41ab29f2c4469307611ddbfc37ff4e46b765c326663805 languageName: node linkType: hard "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" + resolution: "gensync@npm:1.0.0-beta.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgensync%2F-%2Fgensync-1.0.0-beta.2.tgz" checksum: 10/17d8333460204fbf1f9160d067e1e77f908a5447febb49424b8ab043026049835c9ef3974445c57dbd39161f4d2b04356d7de12b2eecaa27a7a7ea7d871cbedd languageName: node linkType: hard "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": version: 1.3.1 - resolution: "get-intrinsic@npm:1.3.1" + resolution: "get-intrinsic@npm:1.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fget-intrinsic%2F-%2Fget-intrinsic-1.3.1.tgz" dependencies: async-function: "npm:^1.0.0" async-generator-function: "npm:^1.0.0" @@ -2878,7 +3107,7 @@ __metadata: "get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": version: 1.0.1 - resolution: "get-proto@npm:1.0.1" + resolution: "get-proto@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fget-proto%2F-%2Fget-proto-1.0.1.tgz" dependencies: dunder-proto: "npm:^1.0.1" es-object-atoms: "npm:^1.0.0" @@ -2888,7 +3117,7 @@ __metadata: "get-symbol-description@npm:^1.1.0": version: 1.1.0 - resolution: "get-symbol-description@npm:1.1.0" + resolution: "get-symbol-description@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fget-symbol-description%2F-%2Fget-symbol-description-1.1.0.tgz" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -2897,18 +3126,27 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglob-parent%2F-%2Fglob-parent-5.1.2.tgz" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10/32cd106ce8c0d83731966d31517adb766d02c3812de49c30cfe0675c7c0ae6630c11214c54a5ae67aca882cf738d27fd7768f21aa19118b9245950554be07247 + languageName: node + linkType: hard + "glob-parent@npm:^6.0.2": version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" + resolution: "glob-parent@npm:6.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglob-parent%2F-%2Fglob-parent-6.0.2.tgz" dependencies: is-glob: "npm:^4.0.3" checksum: 10/c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 languageName: node linkType: hard -"glob@npm:^13.0.0, glob@npm:^13.0.3": +"glob@npm:^13.0.3": version: 13.0.6 - resolution: "glob@npm:13.0.6" + resolution: "glob@npm:13.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglob%2F-%2Fglob-13.0.6.tgz" dependencies: minimatch: "npm:^10.2.2" minipass: "npm:^7.1.3" @@ -2919,14 +3157,14 @@ __metadata: "globals@npm:^14.0.0": version: 14.0.0 - resolution: "globals@npm:14.0.0" + resolution: "globals@npm:14.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglobals%2F-%2Fglobals-14.0.0.tgz" checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 languageName: node linkType: hard "globalthis@npm:^1.0.4": version: 1.0.4 - resolution: "globalthis@npm:1.0.4" + resolution: "globalthis@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglobalthis%2F-%2Fglobalthis-1.0.4.tgz" dependencies: define-properties: "npm:^1.2.1" gopd: "npm:^1.0.1" @@ -2936,35 +3174,35 @@ __metadata: "gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 - resolution: "gopd@npm:1.2.0" + resolution: "gopd@npm:1.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgopd%2F-%2Fgopd-1.2.0.tgz" checksum: 10/94e296d69f92dc1c0768fcfeecfb3855582ab59a7c75e969d5f96ce50c3d201fd86d5a2857c22565764d5bb8a816c7b1e58f133ec318cd56274da36c5e3fb1a1 languageName: node linkType: hard "graceful-fs@npm:^4.2.6": version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" + resolution: "graceful-fs@npm:4.2.11::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgraceful-fs%2F-%2Fgraceful-fs-4.2.11.tgz" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 languageName: node linkType: hard "has-bigints@npm:^1.0.2": version: 1.1.0 - resolution: "has-bigints@npm:1.1.0" + resolution: "has-bigints@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-bigints%2F-%2Fhas-bigints-1.1.0.tgz" checksum: 10/90fb1b24d40d2472bcd1c8bd9dd479037ec240215869bdbff97b2be83acef57d28f7e96bdd003a21bed218d058b49097f4acc8821c05b1629cc5d48dd7bfcccd languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 - resolution: "has-flag@npm:4.0.0" + resolution: "has-flag@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-flag%2F-%2Fhas-flag-4.0.0.tgz" checksum: 10/261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad languageName: node linkType: hard "has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" + resolution: "has-property-descriptors@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-property-descriptors%2F-%2Fhas-property-descriptors-1.0.2.tgz" dependencies: es-define-property: "npm:^1.0.0" checksum: 10/2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2 @@ -2973,7 +3211,7 @@ __metadata: "has-proto@npm:^1.2.0": version: 1.2.0 - resolution: "has-proto@npm:1.2.0" + resolution: "has-proto@npm:1.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-proto%2F-%2Fhas-proto-1.2.0.tgz" dependencies: dunder-proto: "npm:^1.0.0" checksum: 10/7eaed07728eaa28b77fadccabce53f30de467ff186a766872669a833ac2e87d8922b76a22cc58339d7e0277aefe98d6d00762113b27a97cdf65adcf958970935 @@ -2982,14 +3220,14 @@ __metadata: "has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 - resolution: "has-symbols@npm:1.1.0" + resolution: "has-symbols@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-symbols%2F-%2Fhas-symbols-1.1.0.tgz" checksum: 10/959385c98696ebbca51e7534e0dc723ada325efa3475350951363cce216d27373e0259b63edb599f72eb94d6cde8577b4b2375f080b303947e560f85692834fa languageName: node linkType: hard "has-tostringtag@npm:^1.0.2": version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" + resolution: "has-tostringtag@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-tostringtag%2F-%2Fhas-tostringtag-1.0.2.tgz" dependencies: has-symbols: "npm:^1.0.3" checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe @@ -2997,17 +3235,17 @@ __metadata: linkType: hard "hasown@npm:^2.0.2": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" + version: 2.0.3 + resolution: "hasown@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhasown%2F-%2Fhasown-2.0.3.tgz" dependencies: function-bind: "npm:^1.1.2" - checksum: 10/7898a9c1788b2862cf0f9c345a6bec77ba4a0c0983c7f19d610c382343d4f98fa260686b225dfb1f88393a66679d2ec58ee310c1d6868c081eda7918f32cc70a + checksum: 10/619526379cda755409d856cbf3c65b82ea342151719a0a550920cf7d6a7f58f7cf079e5a78f3acd162324fc784a3d3d6f6f61aff613b47a0163c16fbe09ea89f languageName: node linkType: hard "hast-util-is-element@npm:^3.0.0": version: 3.0.0 - resolution: "hast-util-is-element@npm:3.0.0" + resolution: "hast-util-is-element@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-is-element%2F-%2Fhast-util-is-element-3.0.0.tgz" dependencies: "@types/hast": "npm:^3.0.0" checksum: 10/b4e6d84c763ffdc44198ba0c4a5a7430794a7b2c1eec699d37776ea9832eef79f129726c175982103eb3b21f531a6bfd2fa43ce26e1ed6d8f6a87c102ba212c8 @@ -3016,7 +3254,7 @@ __metadata: "hast-util-to-jsx-runtime@npm:^2.0.0": version: 2.3.6 - resolution: "hast-util-to-jsx-runtime@npm:2.3.6" + resolution: "hast-util-to-jsx-runtime@npm:2.3.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-to-jsx-runtime%2F-%2Fhast-util-to-jsx-runtime-2.3.6.tgz" dependencies: "@types/estree": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -3039,7 +3277,7 @@ __metadata: "hast-util-to-text@npm:^4.0.0": version: 4.0.2 - resolution: "hast-util-to-text@npm:4.0.2" + resolution: "hast-util-to-text@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-to-text%2F-%2Fhast-util-to-text-4.0.2.tgz" dependencies: "@types/hast": "npm:^3.0.0" "@types/unist": "npm:^3.0.0" @@ -3051,7 +3289,7 @@ __metadata: "hast-util-whitespace@npm:^3.0.0": version: 3.0.0 - resolution: "hast-util-whitespace@npm:3.0.0" + resolution: "hast-util-whitespace@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-whitespace%2F-%2Fhast-util-whitespace-3.0.0.tgz" dependencies: "@types/hast": "npm:^3.0.0" checksum: 10/8c7e9eeb8131fc18702f3a42623eb6b0b09d470347aa8badacac70e6d91f79657ab8c6b57c4c6fee3658cff405fac30e816d1cdfb3ed1fbf6045d0a4555cf4d4 @@ -3060,14 +3298,14 @@ __metadata: "hermes-estree@npm:0.25.1": version: 0.25.1 - resolution: "hermes-estree@npm:0.25.1" + resolution: "hermes-estree@npm:0.25.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhermes-estree%2F-%2Fhermes-estree-0.25.1.tgz" checksum: 10/7b1eca98b264a25632064cffa5771360d30cf452e77db1e191f9913ee45cf78c292b2dbca707e92fb71b0870abb97e94b506a5ab80abd96ba237fee169b601fe languageName: node linkType: hard "hermes-parser@npm:^0.25.1": version: 0.25.1 - resolution: "hermes-parser@npm:0.25.1" + resolution: "hermes-parser@npm:0.25.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhermes-parser%2F-%2Fhermes-parser-0.25.1.tgz" dependencies: hermes-estree: "npm:0.25.1" checksum: 10/805efc05691420f236654349872c70731121791fa54de521c7ee51059eae34f84dd19f22ee846741dcb60372f8fb5335719b96b4ecb010d2aed7d872f2eff9cc @@ -3076,14 +3314,14 @@ __metadata: "highlight.js@npm:~11.11.0": version: 11.11.1 - resolution: "highlight.js@npm:11.11.1" + resolution: "highlight.js@npm:11.11.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhighlight.js%2F-%2Fhighlight.js-11.11.1.tgz" checksum: 10/205272f12f2c8ab1760452a75c58b043b11129cf3a5d2a9c0c90d43993580d0f5c385a73a4b8aba197eef20c0ec37d64000e6b35c4ed5991324f4c2dc78f4e43 languageName: node linkType: hard "html-encoding-sniffer@npm:^4.0.0": version: 4.0.0 - resolution: "html-encoding-sniffer@npm:4.0.0" + resolution: "html-encoding-sniffer@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhtml-encoding-sniffer%2F-%2Fhtml-encoding-sniffer-4.0.0.tgz" dependencies: whatwg-encoding: "npm:^3.1.1" checksum: 10/e86efd493293a5671b8239bd099d42128433bb3c7b0fdc7819282ef8e118a21f5dead0ad6f358e024a4e5c84f17ebb7a9b36075220fac0a6222b207248bede6f @@ -3092,28 +3330,21 @@ __metadata: "html-escaper@npm:^2.0.0": version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" + resolution: "html-escaper@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhtml-escaper%2F-%2Fhtml-escaper-2.0.2.tgz" checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 languageName: node linkType: hard "html-url-attributes@npm:^3.0.0": version: 3.0.1 - resolution: "html-url-attributes@npm:3.0.1" + resolution: "html-url-attributes@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhtml-url-attributes%2F-%2Fhtml-url-attributes-3.0.1.tgz" checksum: 10/494074c2f730c5c0e517aa1b10111fb36732534a2d2b70427582c4a615472b47da472cf3a17562cc653826d378d20960f2783e0400f4f7cf0c3c2d91c6188d13 languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.1": - version: 4.2.0 - resolution: "http-cache-semantics@npm:4.2.0" - checksum: 10/4efd2dfcfeea9d5e88c84af450b9980be8a43c2c8179508b1c57c7b4421c855f3e8efe92fa53e0b3f4a43c85824ada930eabbc306d1b3beab750b6dcc5187693 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": +"http-proxy-agent@npm:^7.0.2": version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" + resolution: "http-proxy-agent@npm:7.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhttp-proxy-agent%2F-%2Fhttp-proxy-agent-7.0.2.tgz" dependencies: agent-base: "npm:^7.1.0" debug: "npm:^4.3.4" @@ -3121,9 +3352,9 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": +"https-proxy-agent@npm:^7.0.5": version: 7.0.6 - resolution: "https-proxy-agent@npm:7.0.6" + resolution: "https-proxy-agent@npm:7.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhttps-proxy-agent%2F-%2Fhttps-proxy-agent-7.0.6.tgz" dependencies: agent-base: "npm:^7.1.2" debug: "npm:4" @@ -3131,9 +3362,9 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.6.3": version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" + resolution: "iconv-lite@npm:0.6.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ficonv-lite%2F-%2Ficonv-lite-0.6.3.tgz" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f @@ -3142,21 +3373,21 @@ __metadata: "ignore@npm:^5.2.0": version: 5.3.2 - resolution: "ignore@npm:5.3.2" + resolution: "ignore@npm:5.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fignore%2F-%2Fignore-5.3.2.tgz" checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 languageName: node linkType: hard "ignore@npm:^7.0.0": version: 7.0.5 - resolution: "ignore@npm:7.0.5" + resolution: "ignore@npm:7.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fignore%2F-%2Fignore-7.0.5.tgz" checksum: 10/f134b96a4de0af419196f52c529d5c6120c4456ff8a6b5a14ceaaa399f883e15d58d2ce651c9b69b9388491d4669dda47285d307e827de9304a53a1824801bc6 languageName: node linkType: hard "import-fresh@npm:^3.2.1": version: 3.3.1 - resolution: "import-fresh@npm:3.3.1" + resolution: "import-fresh@npm:3.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fimport-fresh%2F-%2Fimport-fresh-3.3.1.tgz" dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" @@ -3166,14 +3397,14 @@ __metadata: "imurmurhash@npm:^0.1.4": version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" + resolution: "imurmurhash@npm:0.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fimurmurhash%2F-%2Fimurmurhash-0.1.4.tgz" checksum: 10/2d30b157a91fe1c1d7c6f653cbf263f039be6c5bfa959245a16d4ee191fc0f2af86c08545b6e6beeb041c56b574d2d5b9f95343d378ab49c0f37394d541e7fc8 languageName: node linkType: hard "inline-style-parser@npm:0.2.7": version: 0.2.7 - resolution: "inline-style-parser@npm:0.2.7" + resolution: "inline-style-parser@npm:0.2.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Finline-style-parser%2F-%2Finline-style-parser-0.2.7.tgz" checksum: 10/cdfe719bd694b53bfbad20a645a9a4dda89c3ff56ee2b95945ad4eea86c541501f49f852d23bc2f73cd8127b6b62ea9027f697838e323a7f7d0d9b760e27a632 languageName: node linkType: hard @@ -3196,7 +3427,7 @@ __metadata: "internal-slot@npm:^1.1.0": version: 1.1.0 - resolution: "internal-slot@npm:1.1.0" + resolution: "internal-slot@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Finternal-slot%2F-%2Finternal-slot-1.1.0.tgz" dependencies: es-errors: "npm:^1.3.0" hasown: "npm:^2.0.2" @@ -3205,23 +3436,16 @@ __metadata: languageName: node linkType: hard -"ip-address@npm:^10.0.1": - version: 10.1.0 - resolution: "ip-address@npm:10.1.0" - checksum: 10/a6979629d1ad9c1fb424bc25182203fad739b40225aebc55ec6243bbff5035faf7b9ed6efab3a097de6e713acbbfde944baacfa73e11852bb43989c45a68d79e - languageName: node - linkType: hard - "is-alphabetical@npm:^2.0.0": version: 2.0.1 - resolution: "is-alphabetical@npm:2.0.1" + resolution: "is-alphabetical@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-alphabetical%2F-%2Fis-alphabetical-2.0.1.tgz" checksum: 10/56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa languageName: node linkType: hard "is-alphanumerical@npm:^2.0.0": version: 2.0.1 - resolution: "is-alphanumerical@npm:2.0.1" + resolution: "is-alphanumerical@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-alphanumerical%2F-%2Fis-alphanumerical-2.0.1.tgz" dependencies: is-alphabetical: "npm:^2.0.0" is-decimal: "npm:^2.0.0" @@ -3231,7 +3455,7 @@ __metadata: "is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": version: 3.0.5 - resolution: "is-array-buffer@npm:3.0.5" + resolution: "is-array-buffer@npm:3.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-array-buffer%2F-%2Fis-array-buffer-3.0.5.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -3242,7 +3466,7 @@ __metadata: "is-async-function@npm:^2.0.0": version: 2.1.1 - resolution: "is-async-function@npm:2.1.1" + resolution: "is-async-function@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-async-function%2F-%2Fis-async-function-2.1.1.tgz" dependencies: async-function: "npm:^1.0.0" call-bound: "npm:^1.0.3" @@ -3255,7 +3479,7 @@ __metadata: "is-bigint@npm:^1.1.0": version: 1.1.0 - resolution: "is-bigint@npm:1.1.0" + resolution: "is-bigint@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-bigint%2F-%2Fis-bigint-1.1.0.tgz" dependencies: has-bigints: "npm:^1.0.2" checksum: 10/10cf327310d712fe227cfaa32d8b11814c214392b6ac18c827f157e1e85363cf9c8e2a22df526689bd5d25e53b58cc110894787afb54e138e7c504174dba15fd @@ -3264,7 +3488,7 @@ __metadata: "is-boolean-object@npm:^1.2.1": version: 1.2.2 - resolution: "is-boolean-object@npm:1.2.2" + resolution: "is-boolean-object@npm:1.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-boolean-object%2F-%2Fis-boolean-object-1.2.2.tgz" dependencies: call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" @@ -3274,14 +3498,14 @@ __metadata: "is-callable@npm:^1.2.7": version: 1.2.7 - resolution: "is-callable@npm:1.2.7" + resolution: "is-callable@npm:1.2.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-callable%2F-%2Fis-callable-1.2.7.tgz" checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 languageName: node linkType: hard "is-core-module@npm:^2.16.1": version: 2.16.1 - resolution: "is-core-module@npm:2.16.1" + resolution: "is-core-module@npm:2.16.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-core-module%2F-%2Fis-core-module-2.16.1.tgz" dependencies: hasown: "npm:^2.0.2" checksum: 10/452b2c2fb7f889cbbf7e54609ef92cf6c24637c568acc7e63d166812a0fb365ae8a504c333a29add8bdb1686704068caa7f4e4b639b650dde4f00a038b8941fb @@ -3290,7 +3514,7 @@ __metadata: "is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": version: 1.0.2 - resolution: "is-data-view@npm:1.0.2" + resolution: "is-data-view@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-data-view%2F-%2Fis-data-view-1.0.2.tgz" dependencies: call-bound: "npm:^1.0.2" get-intrinsic: "npm:^1.2.6" @@ -3301,7 +3525,7 @@ __metadata: "is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": version: 1.1.0 - resolution: "is-date-object@npm:1.1.0" + resolution: "is-date-object@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-date-object%2F-%2Fis-date-object-1.1.0.tgz" dependencies: call-bound: "npm:^1.0.2" has-tostringtag: "npm:^1.0.2" @@ -3311,21 +3535,21 @@ __metadata: "is-decimal@npm:^2.0.0": version: 2.0.1 - resolution: "is-decimal@npm:2.0.1" + resolution: "is-decimal@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-decimal%2F-%2Fis-decimal-2.0.1.tgz" checksum: 10/97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" + resolution: "is-extglob@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-extglob%2F-%2Fis-extglob-2.1.1.tgz" checksum: 10/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 languageName: node linkType: hard "is-finalizationregistry@npm:^1.1.0": version: 1.1.1 - resolution: "is-finalizationregistry@npm:1.1.1" + resolution: "is-finalizationregistry@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-finalizationregistry%2F-%2Fis-finalizationregistry-1.1.1.tgz" dependencies: call-bound: "npm:^1.0.3" checksum: 10/0bfb145e9a1ba852ddde423b0926d2169ae5fe9e37882cde9e8f69031281a986308df4d982283e152396e88b86562ed2256cbaa5e6390fb840a4c25ab54b8a80 @@ -3334,7 +3558,7 @@ __metadata: "is-generator-function@npm:^1.0.10": version: 1.1.2 - resolution: "is-generator-function@npm:1.1.2" + resolution: "is-generator-function@npm:1.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-generator-function%2F-%2Fis-generator-function-1.1.2.tgz" dependencies: call-bound: "npm:^1.0.4" generator-function: "npm:^2.0.0" @@ -3345,9 +3569,9 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 - resolution: "is-glob@npm:4.0.3" + resolution: "is-glob@npm:4.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-glob%2F-%2Fis-glob-4.0.3.tgz" dependencies: is-extglob: "npm:^2.1.1" checksum: 10/3ed74f2b0cdf4f401f38edb0442ddfde3092d79d7d35c9919c86641efdbcbb32e45aa3c0f70ce5eecc946896cd5a0f26e4188b9f2b881876f7cb6c505b82da11 @@ -3356,28 +3580,28 @@ __metadata: "is-hexadecimal@npm:^2.0.0": version: 2.0.1 - resolution: "is-hexadecimal@npm:2.0.1" + resolution: "is-hexadecimal@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-hexadecimal%2F-%2Fis-hexadecimal-2.0.1.tgz" checksum: 10/66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 languageName: node linkType: hard "is-map@npm:^2.0.3": version: 2.0.3 - resolution: "is-map@npm:2.0.3" + resolution: "is-map@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-map%2F-%2Fis-map-2.0.3.tgz" checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb languageName: node linkType: hard "is-negative-zero@npm:^2.0.3": version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" + resolution: "is-negative-zero@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-negative-zero%2F-%2Fis-negative-zero-2.0.3.tgz" checksum: 10/8fe5cffd8d4fb2ec7b49d657e1691889778d037494c6f40f4d1a524cadd658b4b53ad7b6b73a59bcb4b143ae9a3d15829af864b2c0f9d65ac1e678c4c80f17e5 languageName: node linkType: hard "is-number-object@npm:^1.1.1": version: 1.1.1 - resolution: "is-number-object@npm:1.1.1" + resolution: "is-number-object@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-number-object%2F-%2Fis-number-object-1.1.1.tgz" dependencies: call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" @@ -3385,23 +3609,30 @@ __metadata: languageName: node linkType: hard +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-number%2F-%2Fis-number-7.0.0.tgz" + checksum: 10/6a6c3383f68afa1e05b286af866017c78f1226d43ac8cb064e115ff9ed85eb33f5c4f7216c96a71e4dfea289ef52c5da3aef5bbfade8ffe47a0465d70c0c8e86 + languageName: node + linkType: hard + "is-plain-obj@npm:^4.0.0": version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0" + resolution: "is-plain-obj@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-plain-obj%2F-%2Fis-plain-obj-4.1.0.tgz" checksum: 10/6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce languageName: node linkType: hard "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" + resolution: "is-potential-custom-element-name@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-potential-custom-element-name%2F-%2Fis-potential-custom-element-name-1.0.1.tgz" checksum: 10/ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab languageName: node linkType: hard "is-regex@npm:^1.2.1": version: 1.2.1 - resolution: "is-regex@npm:1.2.1" + resolution: "is-regex@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-regex%2F-%2Fis-regex-1.2.1.tgz" dependencies: call-bound: "npm:^1.0.2" gopd: "npm:^1.2.0" @@ -3413,14 +3644,14 @@ __metadata: "is-set@npm:^2.0.3": version: 2.0.3 - resolution: "is-set@npm:2.0.3" + resolution: "is-set@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-set%2F-%2Fis-set-2.0.3.tgz" checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669 languageName: node linkType: hard "is-shared-array-buffer@npm:^1.0.4": version: 1.0.4 - resolution: "is-shared-array-buffer@npm:1.0.4" + resolution: "is-shared-array-buffer@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-shared-array-buffer%2F-%2Fis-shared-array-buffer-1.0.4.tgz" dependencies: call-bound: "npm:^1.0.3" checksum: 10/0380d7c60cc692856871526ffcd38a8133818a2ee42d47bb8008248a0cd2121d8c8b5f66b6da3cac24bc5784553cacb6faaf678f66bc88c6615b42af2825230e @@ -3429,7 +3660,7 @@ __metadata: "is-string@npm:^1.1.1": version: 1.1.1 - resolution: "is-string@npm:1.1.1" + resolution: "is-string@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-string%2F-%2Fis-string-1.1.1.tgz" dependencies: call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" @@ -3439,7 +3670,7 @@ __metadata: "is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": version: 1.1.1 - resolution: "is-symbol@npm:1.1.1" + resolution: "is-symbol@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-symbol%2F-%2Fis-symbol-1.1.1.tgz" dependencies: call-bound: "npm:^1.0.2" has-symbols: "npm:^1.1.0" @@ -3450,7 +3681,7 @@ __metadata: "is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" + resolution: "is-typed-array@npm:1.1.15::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-typed-array%2F-%2Fis-typed-array-1.1.15.tgz" dependencies: which-typed-array: "npm:^1.1.16" checksum: 10/e8cf60b9ea85667097a6ad68c209c9722cfe8c8edf04d6218366469e51944c5cc25bae45ffb845c23f811d262e4314d3b0168748eb16711aa34d12724cdf0735 @@ -3459,14 +3690,14 @@ __metadata: "is-weakmap@npm:^2.0.2": version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2" + resolution: "is-weakmap@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-weakmap%2F-%2Fis-weakmap-2.0.2.tgz" checksum: 10/a7b7e23206c542dcf2fa0abc483142731788771527e90e7e24f658c0833a0d91948a4f7b30d78f7a65255a48512e41a0288b778ba7fc396137515c12e201fd11 languageName: node linkType: hard "is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": version: 1.1.1 - resolution: "is-weakref@npm:1.1.1" + resolution: "is-weakref@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-weakref%2F-%2Fis-weakref-1.1.1.tgz" dependencies: call-bound: "npm:^1.0.3" checksum: 10/543506fd8259038b371bb083aac25b16cb4fd8b12fc58053aa3d45ac28dfd001cd5c6dffbba7aeea4213c74732d46b6cb2cfb5b412eed11f2db524f3f97d09a0 @@ -3475,7 +3706,7 @@ __metadata: "is-weakset@npm:^2.0.3": version: 2.0.4 - resolution: "is-weakset@npm:2.0.4" + resolution: "is-weakset@npm:2.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-weakset%2F-%2Fis-weakset-2.0.4.tgz" dependencies: call-bound: "npm:^1.0.3" get-intrinsic: "npm:^1.2.6" @@ -3485,35 +3716,35 @@ __metadata: "isarray@npm:^2.0.5": version: 2.0.5 - resolution: "isarray@npm:2.0.5" + resolution: "isarray@npm:2.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fisarray%2F-%2Fisarray-2.0.5.tgz" checksum: 10/1d8bc7911e13bb9f105b1b3e0b396c787a9e63046af0b8fe0ab1414488ab06b2b099b87a2d8a9e31d21c9a6fad773c7fc8b257c4880f2d957274479d28ca3414 languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 - resolution: "isexe@npm:2.0.0" + resolution: "isexe@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fisexe%2F-%2Fisexe-2.0.0.tgz" checksum: 10/7c9f715c03aff08f35e98b1fadae1b9267b38f0615d501824f9743f3aab99ef10e303ce7db3f186763a0b70a19de5791ebfc854ff884d5a8c4d92211f642ec92 languageName: node linkType: hard "isexe@npm:^4.0.0": version: 4.0.0 - resolution: "isexe@npm:4.0.0" + resolution: "isexe@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fisexe%2F-%2Fisexe-4.0.0.tgz" checksum: 10/2ead327ef596042ef9c9ec5f236b316acfaedb87f4bb61b3c3d574fb2e9c8a04b67305e04733bde52c24d9622fdebd3270aadb632adfbf9cadef88fe30f479e5 languageName: node linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" + resolution: "istanbul-lib-coverage@npm:3.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fistanbul-lib-coverage%2F-%2Fistanbul-lib-coverage-3.2.2.tgz" checksum: 10/40bbdd1e937dfd8c830fa286d0f665e81b7a78bdabcd4565f6d5667c99828bda3db7fb7ac6b96a3e2e8a2461ddbc5452d9f8bc7d00cb00075fa6a3e99f5b6a81 languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" + resolution: "istanbul-lib-report@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fistanbul-lib-report%2F-%2Fistanbul-lib-report-3.0.1.tgz" dependencies: istanbul-lib-coverage: "npm:^3.0.0" make-dir: "npm:^4.0.0" @@ -3524,7 +3755,7 @@ __metadata: "istanbul-reports@npm:^3.2.0": version: 3.2.0 - resolution: "istanbul-reports@npm:3.2.0" + resolution: "istanbul-reports@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fistanbul-reports%2F-%2Fistanbul-reports-3.2.0.tgz" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" @@ -3534,7 +3765,7 @@ __metadata: "iterator.prototype@npm:^1.1.5": version: 1.1.5 - resolution: "iterator.prototype@npm:1.1.5" + resolution: "iterator.prototype@npm:1.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fiterator.prototype%2F-%2Fiterator.prototype-1.1.5.tgz" dependencies: define-data-property: "npm:^1.1.4" es-object-atoms: "npm:^1.0.0" @@ -3548,21 +3779,21 @@ __metadata: "js-tokens@npm:^10.0.0": version: 10.0.0 - resolution: "js-tokens@npm:10.0.0" + resolution: "js-tokens@npm:10.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjs-tokens%2F-%2Fjs-tokens-10.0.0.tgz" checksum: 10/88f536ec89f076fc230d29df255b3c55531237669d746d1868fca716b1e3f5f2e4abf8e5b8701903216e3f00d2dc3918d078b35da87772d433ab6a513c3bf76d languageName: node linkType: hard "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" + resolution: "js-tokens@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjs-tokens%2F-%2Fjs-tokens-4.0.0.tgz" checksum: 10/af37d0d913fb56aec6dc0074c163cc71cd23c0b8aad5c2350747b6721d37ba118af35abdd8b33c47ec2800de07dedb16a527ca9c530ee004093e04958bd0cbf2 languageName: node linkType: hard "js-yaml@npm:^4.1.1": version: 4.1.1 - resolution: "js-yaml@npm:4.1.1" + resolution: "js-yaml@npm:4.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjs-yaml%2F-%2Fjs-yaml-4.1.1.tgz" dependencies: argparse: "npm:^2.0.1" bin: @@ -3573,7 +3804,7 @@ __metadata: "jsdom@npm:^24.0.0": version: 24.1.3 - resolution: "jsdom@npm:24.1.3" + resolution: "jsdom@npm:24.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjsdom%2F-%2Fjsdom-24.1.3.tgz" dependencies: cssstyle: "npm:^4.0.1" data-urls: "npm:^5.0.0" @@ -3607,7 +3838,7 @@ __metadata: "jsesc@npm:^3.0.2": version: 3.1.0 - resolution: "jsesc@npm:3.1.0" + resolution: "jsesc@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjsesc%2F-%2Fjsesc-3.1.0.tgz" bin: jsesc: bin/jsesc checksum: 10/20bd37a142eca5d1794f354db8f1c9aeb54d85e1f5c247b371de05d23a9751ecd7bd3a9c4fc5298ea6fa09a100dafb4190fa5c98c6610b75952c3487f3ce7967 @@ -3616,28 +3847,28 @@ __metadata: "json-buffer@npm:3.0.1": version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" + resolution: "json-buffer@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson-buffer%2F-%2Fjson-buffer-3.0.1.tgz" checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" + resolution: "json-schema-traverse@npm:0.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson-schema-traverse%2F-%2Fjson-schema-traverse-0.4.1.tgz" checksum: 10/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b languageName: node linkType: hard "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson-stable-stringify-without-jsonify%2F-%2Fjson-stable-stringify-without-jsonify-1.0.1.tgz" checksum: 10/12786c2e2f22c27439e6db0532ba321f1d0617c27ad8cb1c352a0e9249a50182fd1ba8b52a18899291604b0c32eafa8afd09e51203f19109a0537f68db2b652d languageName: node linkType: hard "json5@npm:^2.2.3": version: 2.2.3 - resolution: "json5@npm:2.2.3" + resolution: "json5@npm:2.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson5%2F-%2Fjson5-2.2.3.tgz" bin: json5: lib/cli.js checksum: 10/1db67b853ff0de3534085d630691d3247de53a2ed1390ba0ddff681ea43e9b3e30ecbdb65c5e9aab49435e44059c23dbd6fee8ee619419ba37465bb0dd7135da @@ -3646,7 +3877,7 @@ __metadata: "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": version: 3.3.5 - resolution: "jsx-ast-utils@npm:3.3.5" + resolution: "jsx-ast-utils@npm:3.3.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjsx-ast-utils%2F-%2Fjsx-ast-utils-3.3.5.tgz" dependencies: array-includes: "npm:^3.1.6" array.prototype.flat: "npm:^1.3.1" @@ -3658,7 +3889,7 @@ __metadata: "keyv@npm:^4.5.4": version: 4.5.4 - resolution: "keyv@npm:4.5.4" + resolution: "keyv@npm:4.5.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fkeyv%2F-%2Fkeyv-4.5.4.tgz" dependencies: json-buffer: "npm:3.0.1" checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 @@ -3667,21 +3898,21 @@ __metadata: "kuliso@npm:^0.4.13": version: 0.4.13 - resolution: "kuliso@npm:0.4.13" + resolution: "kuliso@npm:0.4.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fkuliso%2F-%2Fkuliso-0.4.13.tgz" checksum: 10/14682faf22ce6fec6f5197915e44563763be040aacfa13e279301f532d3b6d7862385048c8c141817b2fc9c40bedb75883785d7fa344eb4d1f59da91e6c5d90c languageName: node linkType: hard "language-subtag-registry@npm:^0.3.20": version: 0.3.23 - resolution: "language-subtag-registry@npm:0.3.23" + resolution: "language-subtag-registry@npm:0.3.23::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flanguage-subtag-registry%2F-%2Flanguage-subtag-registry-0.3.23.tgz" checksum: 10/fe13ed74ab9f862db8e5747b98cc9aa08d52a19f85b5cdb4975cd364c8539bd2da3380e4560d2dbbd728ec33dff8a4b4421fcb2e5b1b1bdaa21d16f91a54d0d4 languageName: node linkType: hard "language-tags@npm:^1.0.9": version: 1.0.9 - resolution: "language-tags@npm:1.0.9" + resolution: "language-tags@npm:1.0.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flanguage-tags%2F-%2Flanguage-tags-1.0.9.tgz" dependencies: language-subtag-registry: "npm:^0.3.20" checksum: 10/d3a7c14b694e67f519153d6df6cb200681648d38d623c3bfa9d6a66a5ec5493628acb88e9df5aceef3cf1902ab263a205e7d59ee4cf1d6bb67e707b83538bd6d @@ -3690,7 +3921,7 @@ __metadata: "levn@npm:^0.4.1": version: 0.4.1 - resolution: "levn@npm:0.4.1" + resolution: "levn@npm:0.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flevn%2F-%2Flevn-0.4.1.tgz" dependencies: prelude-ls: "npm:^1.2.1" type-check: "npm:~0.4.0" @@ -3698,9 +3929,129 @@ __metadata: languageName: node linkType: hard +"lightningcss-android-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-android-arm64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-android-arm64%2F-%2Flightningcss-android-arm64-1.32.0.tgz" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-arm64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-darwin-arm64%2F-%2Flightningcss-darwin-arm64-1.32.0.tgz" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-x64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-darwin-x64%2F-%2Flightningcss-darwin-x64-1.32.0.tgz" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-freebsd-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-freebsd-x64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-freebsd-x64%2F-%2Flightningcss-freebsd-x64-1.32.0.tgz" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-linux-arm-gnueabihf@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-arm-gnueabihf%2F-%2Flightningcss-linux-arm-gnueabihf-1.32.0.tgz" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"lightningcss-linux-arm64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-gnu@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-arm64-gnu%2F-%2Flightningcss-linux-arm64-gnu-1.32.0.tgz" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-arm64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-musl@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-arm64-musl%2F-%2Flightningcss-linux-arm64-musl-1.32.0.tgz" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-linux-x64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-gnu@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-x64-gnu%2F-%2Flightningcss-linux-x64-gnu-1.32.0.tgz" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-x64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-musl@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-x64-musl%2F-%2Flightningcss-linux-x64-musl-1.32.0.tgz" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-win32-arm64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-arm64-msvc@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-win32-arm64-msvc%2F-%2Flightningcss-win32-arm64-msvc-1.32.0.tgz" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-win32-x64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-x64-msvc@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-win32-x64-msvc%2F-%2Flightningcss-win32-x64-msvc-1.32.0.tgz" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"lightningcss@npm:^1.32.0": + version: 1.32.0 + resolution: "lightningcss@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss%2F-%2Flightningcss-1.32.0.tgz" + dependencies: + detect-libc: "npm:^2.0.3" + lightningcss-android-arm64: "npm:1.32.0" + lightningcss-darwin-arm64: "npm:1.32.0" + lightningcss-darwin-x64: "npm:1.32.0" + lightningcss-freebsd-x64: "npm:1.32.0" + lightningcss-linux-arm-gnueabihf: "npm:1.32.0" + lightningcss-linux-arm64-gnu: "npm:1.32.0" + lightningcss-linux-arm64-musl: "npm:1.32.0" + lightningcss-linux-x64-gnu: "npm:1.32.0" + lightningcss-linux-x64-musl: "npm:1.32.0" + lightningcss-win32-arm64-msvc: "npm:1.32.0" + lightningcss-win32-x64-msvc: "npm:1.32.0" + dependenciesMeta: + lightningcss-android-arm64: + optional: true + lightningcss-darwin-arm64: + optional: true + lightningcss-darwin-x64: + optional: true + lightningcss-freebsd-x64: + optional: true + lightningcss-linux-arm-gnueabihf: + optional: true + lightningcss-linux-arm64-gnu: + optional: true + lightningcss-linux-arm64-musl: + optional: true + lightningcss-linux-x64-gnu: + optional: true + lightningcss-linux-x64-musl: + optional: true + lightningcss-win32-arm64-msvc: + optional: true + lightningcss-win32-x64-msvc: + optional: true + checksum: 10/098e61007f0d0ec8b5c50884e33b543b551d1ff21bc7b062434b6638fd0b8596858f823b60dfc2a4aa756f3cb120ad79f2b7f4a55b1bda2c0269ab8cf476f114 + languageName: node + linkType: hard + "locate-path@npm:^6.0.0": version: 6.0.0 - resolution: "locate-path@npm:6.0.0" + resolution: "locate-path@npm:6.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flocate-path%2F-%2Flocate-path-6.0.0.tgz" dependencies: p-locate: "npm:^5.0.0" checksum: 10/72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a @@ -3709,21 +4060,21 @@ __metadata: "lodash.merge@npm:^4.6.2": version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" + resolution: "lodash.merge@npm:4.6.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flodash.merge%2F-%2Flodash.merge-4.6.2.tgz" checksum: 10/d0ea2dd0097e6201be083865d50c3fb54fbfbdb247d9cc5950e086c991f448b7ab0cdab0d57eacccb43473d3f2acd21e134db39f22dac2d6c9ba6bf26978e3d6 languageName: node linkType: hard "longest-streak@npm:^3.0.0": version: 3.1.0 - resolution: "longest-streak@npm:3.1.0" + resolution: "longest-streak@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flongest-streak%2F-%2Flongest-streak-3.1.0.tgz" checksum: 10/d7f952ed004cbdb5c8bcfc4f7f5c3d65449e6c5a9e9be4505a656e3df5a57ee125f284286b4bf8ecea0c21a7b3bf2b8f9001ad506c319b9815ad6a63a47d0fd0 languageName: node linkType: hard "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" + resolution: "loose-envify@npm:1.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Floose-envify%2F-%2Floose-envify-1.4.0.tgz" dependencies: js-tokens: "npm:^3.0.0 || ^4.0.0" bin: @@ -3734,7 +4085,7 @@ __metadata: "lowlight@npm:^3.0.0": version: 3.3.0 - resolution: "lowlight@npm:3.3.0" + resolution: "lowlight@npm:3.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flowlight%2F-%2Flowlight-3.3.0.tgz" dependencies: "@types/hast": "npm:^3.0.0" devlop: "npm:^1.0.0" @@ -3745,21 +4096,21 @@ __metadata: "lru-cache@npm:^10.4.3": version: 10.4.3 - resolution: "lru-cache@npm:10.4.3" + resolution: "lru-cache@npm:10.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flru-cache%2F-%2Flru-cache-10.4.3.tgz" checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a languageName: node linkType: hard -"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.6 - resolution: "lru-cache@npm:11.2.6" - checksum: 10/91222bbd59f793a0a0ad57789388f06b34ac9bb1613433c1d1810457d09db5cd3ec8943227ce2e1f5d6a0a15d6f1a9f129cb2c49ae9b6b10e82d4965fddecbef +"lru-cache@npm:^11.0.0": + version: 11.3.6 + resolution: "lru-cache@npm:11.3.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flru-cache%2F-%2Flru-cache-11.3.6.tgz" + checksum: 10/d69ab552776954c7d310a6b2843e7d6be3a1c36c0ce45fca373c225ce5a06b95fd4ed724305d9d15fa55aa24d3cd42f854aa061bc481241225b3accf32993eab languageName: node linkType: hard "lru-cache@npm:^5.1.1": version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" + resolution: "lru-cache@npm:5.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flru-cache%2F-%2Flru-cache-5.1.1.tgz" dependencies: yallist: "npm:^3.0.2" checksum: 10/951d2673dcc64a7fb888bf3d13bc2fdf923faca97d89cdb405ba3dfff77e2b26e5798d405e78fcd7094c9e7b8b4dab2ddc5a4f8a11928af24a207b7c738ca3f8 @@ -3768,7 +4119,7 @@ __metadata: "lz-string@npm:^1.5.0": version: 1.5.0 - resolution: "lz-string@npm:1.5.0" + resolution: "lz-string@npm:1.5.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flz-string%2F-%2Flz-string-1.5.0.tgz" bin: lz-string: bin/bin.js checksum: 10/e86f0280e99a8d8cd4eef24d8601ddae15ce54e43ac9990dfcb79e1e081c255ad24424a30d78d2ad8e51a8ce82a66a930047fed4b4aa38c6f0b392ff9300edfc @@ -3777,16 +4128,16 @@ __metadata: "magic-string@npm:^0.30.21": version: 0.30.21 - resolution: "magic-string@npm:0.30.21" + resolution: "magic-string@npm:0.30.21::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmagic-string%2F-%2Fmagic-string-0.30.21.tgz" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.5" checksum: 10/57d5691f41ed40d962d8bd300148114f53db67fadbff336207db10a99f2bdf4a1be9cac3a68ee85dba575912ee1d4402e4396408196ec2d3afd043b076156221 languageName: node linkType: hard -"magicast@npm:^0.5.1": +"magicast@npm:^0.5.2": version: 0.5.2 - resolution: "magicast@npm:0.5.2" + resolution: "magicast@npm:0.5.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmagicast%2F-%2Fmagicast-0.5.2.tgz" dependencies: "@babel/parser": "npm:^7.29.0" "@babel/types": "npm:^7.29.0" @@ -3797,49 +4148,30 @@ __metadata: "make-dir@npm:^4.0.0": version: 4.0.0 - resolution: "make-dir@npm:4.0.0" + resolution: "make-dir@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmake-dir%2F-%2Fmake-dir-4.0.0.tgz" dependencies: semver: "npm:^7.5.3" checksum: 10/bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a languageName: node linkType: hard -"make-fetch-happen@npm:^15.0.0": - version: 15.0.3 - resolution: "make-fetch-happen@npm:15.0.3" - dependencies: - "@npmcli/agent": "npm:^4.0.0" - cacache: "npm:^20.0.1" - http-cache-semantics: "npm:^4.1.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^5.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^1.0.0" - proc-log: "npm:^6.0.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^13.0.0" - checksum: 10/78da4fc1df83cb596e2bae25aa0653b8a9c6cbdd6674a104894e03be3acfcd08c70b78f06ef6407fbd6b173f6a60672480d78641e693d05eb71c09c13ee35278 - languageName: node - linkType: hard - "markdown-table@npm:^3.0.0": version: 3.0.4 - resolution: "markdown-table@npm:3.0.4" + resolution: "markdown-table@npm:3.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmarkdown-table%2F-%2Fmarkdown-table-3.0.4.tgz" checksum: 10/bc699819e6a15607e5def0f21aa862aa061cf1f49877baa93b0185574f6ab143591afe0e18b94d9b15ea80c6a693894150dbccfacf4f6767160dc32ae393dfe0 languageName: node linkType: hard "math-intrinsics@npm:^1.1.0": version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0" + resolution: "math-intrinsics@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmath-intrinsics%2F-%2Fmath-intrinsics-1.1.0.tgz" checksum: 10/11df2eda46d092a6035479632e1ec865b8134bdfc4bd9e571a656f4191525404f13a283a515938c3a8de934dbfd9c09674d9da9fa831e6eb7e22b50b197d2edd languageName: node linkType: hard "mdast-util-find-and-replace@npm:^3.0.0": version: 3.0.2 - resolution: "mdast-util-find-and-replace@npm:3.0.2" + resolution: "mdast-util-find-and-replace@npm:3.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-find-and-replace%2F-%2Fmdast-util-find-and-replace-3.0.2.tgz" dependencies: "@types/mdast": "npm:^4.0.0" escape-string-regexp: "npm:^5.0.0" @@ -3851,7 +4183,7 @@ __metadata: "mdast-util-from-markdown@npm:^2.0.0": version: 2.0.3 - resolution: "mdast-util-from-markdown@npm:2.0.3" + resolution: "mdast-util-from-markdown@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-from-markdown%2F-%2Fmdast-util-from-markdown-2.0.3.tgz" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -3871,7 +4203,7 @@ __metadata: "mdast-util-gfm-autolink-literal@npm:^2.0.0": version: 2.0.1 - resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1" + resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-autolink-literal%2F-%2Fmdast-util-gfm-autolink-literal-2.0.1.tgz" dependencies: "@types/mdast": "npm:^4.0.0" ccount: "npm:^2.0.0" @@ -3884,7 +4216,7 @@ __metadata: "mdast-util-gfm-footnote@npm:^2.0.0": version: 2.1.0 - resolution: "mdast-util-gfm-footnote@npm:2.1.0" + resolution: "mdast-util-gfm-footnote@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-footnote%2F-%2Fmdast-util-gfm-footnote-2.1.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" devlop: "npm:^1.1.0" @@ -3897,7 +4229,7 @@ __metadata: "mdast-util-gfm-strikethrough@npm:^2.0.0": version: 2.0.0 - resolution: "mdast-util-gfm-strikethrough@npm:2.0.0" + resolution: "mdast-util-gfm-strikethrough@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-strikethrough%2F-%2Fmdast-util-gfm-strikethrough-2.0.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-from-markdown: "npm:^2.0.0" @@ -3908,7 +4240,7 @@ __metadata: "mdast-util-gfm-table@npm:^2.0.0": version: 2.0.0 - resolution: "mdast-util-gfm-table@npm:2.0.0" + resolution: "mdast-util-gfm-table@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-table%2F-%2Fmdast-util-gfm-table-2.0.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" devlop: "npm:^1.0.0" @@ -3921,7 +4253,7 @@ __metadata: "mdast-util-gfm-task-list-item@npm:^2.0.0": version: 2.0.0 - resolution: "mdast-util-gfm-task-list-item@npm:2.0.0" + resolution: "mdast-util-gfm-task-list-item@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-task-list-item%2F-%2Fmdast-util-gfm-task-list-item-2.0.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" devlop: "npm:^1.0.0" @@ -3933,7 +4265,7 @@ __metadata: "mdast-util-gfm@npm:^3.0.0": version: 3.1.0 - resolution: "mdast-util-gfm@npm:3.1.0" + resolution: "mdast-util-gfm@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm%2F-%2Fmdast-util-gfm-3.1.0.tgz" dependencies: mdast-util-from-markdown: "npm:^2.0.0" mdast-util-gfm-autolink-literal: "npm:^2.0.0" @@ -3948,7 +4280,7 @@ __metadata: "mdast-util-mdx-expression@npm:^2.0.0": version: 2.0.1 - resolution: "mdast-util-mdx-expression@npm:2.0.1" + resolution: "mdast-util-mdx-expression@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-mdx-expression%2F-%2Fmdast-util-mdx-expression-2.0.1.tgz" dependencies: "@types/estree-jsx": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -3962,7 +4294,7 @@ __metadata: "mdast-util-mdx-jsx@npm:^3.0.0": version: 3.2.0 - resolution: "mdast-util-mdx-jsx@npm:3.2.0" + resolution: "mdast-util-mdx-jsx@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-mdx-jsx%2F-%2Fmdast-util-mdx-jsx-3.2.0.tgz" dependencies: "@types/estree-jsx": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -3982,7 +4314,7 @@ __metadata: "mdast-util-mdxjs-esm@npm:^2.0.0": version: 2.0.1 - resolution: "mdast-util-mdxjs-esm@npm:2.0.1" + resolution: "mdast-util-mdxjs-esm@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-mdxjs-esm%2F-%2Fmdast-util-mdxjs-esm-2.0.1.tgz" dependencies: "@types/estree-jsx": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -3996,7 +4328,7 @@ __metadata: "mdast-util-phrasing@npm:^4.0.0": version: 4.1.0 - resolution: "mdast-util-phrasing@npm:4.1.0" + resolution: "mdast-util-phrasing@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-phrasing%2F-%2Fmdast-util-phrasing-4.1.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" unist-util-is: "npm:^6.0.0" @@ -4006,7 +4338,7 @@ __metadata: "mdast-util-to-hast@npm:^13.0.0": version: 13.2.1 - resolution: "mdast-util-to-hast@npm:13.2.1" + resolution: "mdast-util-to-hast@npm:13.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-to-hast%2F-%2Fmdast-util-to-hast-13.2.1.tgz" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" @@ -4023,7 +4355,7 @@ __metadata: "mdast-util-to-markdown@npm:^2.0.0": version: 2.1.2 - resolution: "mdast-util-to-markdown@npm:2.1.2" + resolution: "mdast-util-to-markdown@npm:2.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-to-markdown%2F-%2Fmdast-util-to-markdown-2.1.2.tgz" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -4040,16 +4372,23 @@ __metadata: "mdast-util-to-string@npm:^4.0.0": version: 4.0.0 - resolution: "mdast-util-to-string@npm:4.0.0" + resolution: "mdast-util-to-string@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-to-string%2F-%2Fmdast-util-to-string-4.0.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" checksum: 10/f4a5dbb9ea03521d7d3e26a9ba5652a1d6fbd55706dddd2155427517085688830e0ecd3f12418cfd40892640886eb39a4034c3c967d85e01e2fa64cfb53cff05 languageName: node linkType: hard +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmerge2%2F-%2Fmerge2-1.4.1.tgz" + checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + "micromark-core-commonmark@npm:^2.0.0": version: 2.0.3 - resolution: "micromark-core-commonmark@npm:2.0.3" + resolution: "micromark-core-commonmark@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-core-commonmark%2F-%2Fmicromark-core-commonmark-2.0.3.tgz" dependencies: decode-named-character-reference: "npm:^1.0.0" devlop: "npm:^1.0.0" @@ -4073,7 +4412,7 @@ __metadata: "micromark-extension-gfm-autolink-literal@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0" + resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-autolink-literal%2F-%2Fmicromark-extension-gfm-autolink-literal-2.1.0.tgz" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-sanitize-uri: "npm:^2.0.0" @@ -4085,7 +4424,7 @@ __metadata: "micromark-extension-gfm-footnote@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-footnote@npm:2.1.0" + resolution: "micromark-extension-gfm-footnote@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-footnote%2F-%2Fmicromark-extension-gfm-footnote-2.1.0.tgz" dependencies: devlop: "npm:^1.0.0" micromark-core-commonmark: "npm:^2.0.0" @@ -4101,7 +4440,7 @@ __metadata: "micromark-extension-gfm-strikethrough@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0" + resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-strikethrough%2F-%2Fmicromark-extension-gfm-strikethrough-2.1.0.tgz" dependencies: devlop: "npm:^1.0.0" micromark-util-chunked: "npm:^2.0.0" @@ -4115,7 +4454,7 @@ __metadata: "micromark-extension-gfm-table@npm:^2.0.0": version: 2.1.1 - resolution: "micromark-extension-gfm-table@npm:2.1.1" + resolution: "micromark-extension-gfm-table@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-table%2F-%2Fmicromark-extension-gfm-table-2.1.1.tgz" dependencies: devlop: "npm:^1.0.0" micromark-factory-space: "npm:^2.0.0" @@ -4128,7 +4467,7 @@ __metadata: "micromark-extension-gfm-tagfilter@npm:^2.0.0": version: 2.0.0 - resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" + resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-tagfilter%2F-%2Fmicromark-extension-gfm-tagfilter-2.0.0.tgz" dependencies: micromark-util-types: "npm:^2.0.0" checksum: 10/c5e3f8cdf22e184de3f55968e6b010876a100dff31f509b7d2975f2b981a7fdda6c2d9e452238b9fe54dc51f5d7b069e86de509d421d4efbdfc9194749b3f132 @@ -4137,7 +4476,7 @@ __metadata: "micromark-extension-gfm-task-list-item@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0" + resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-task-list-item%2F-%2Fmicromark-extension-gfm-task-list-item-2.1.0.tgz" dependencies: devlop: "npm:^1.0.0" micromark-factory-space: "npm:^2.0.0" @@ -4150,7 +4489,7 @@ __metadata: "micromark-extension-gfm@npm:^3.0.0": version: 3.0.0 - resolution: "micromark-extension-gfm@npm:3.0.0" + resolution: "micromark-extension-gfm@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm%2F-%2Fmicromark-extension-gfm-3.0.0.tgz" dependencies: micromark-extension-gfm-autolink-literal: "npm:^2.0.0" micromark-extension-gfm-footnote: "npm:^2.0.0" @@ -4166,7 +4505,7 @@ __metadata: "micromark-factory-destination@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-destination@npm:2.0.1" + resolution: "micromark-factory-destination@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-destination%2F-%2Fmicromark-factory-destination-2.0.1.tgz" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" @@ -4177,7 +4516,7 @@ __metadata: "micromark-factory-label@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-label@npm:2.0.1" + resolution: "micromark-factory-label@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-label%2F-%2Fmicromark-factory-label-2.0.1.tgz" dependencies: devlop: "npm:^1.0.0" micromark-util-character: "npm:^2.0.0" @@ -4189,7 +4528,7 @@ __metadata: "micromark-factory-space@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-space@npm:2.0.1" + resolution: "micromark-factory-space@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-space%2F-%2Fmicromark-factory-space-2.0.1.tgz" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" @@ -4199,7 +4538,7 @@ __metadata: "micromark-factory-title@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-title@npm:2.0.1" + resolution: "micromark-factory-title@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-title%2F-%2Fmicromark-factory-title-2.0.1.tgz" dependencies: micromark-factory-space: "npm:^2.0.0" micromark-util-character: "npm:^2.0.0" @@ -4211,7 +4550,7 @@ __metadata: "micromark-factory-whitespace@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-whitespace@npm:2.0.1" + resolution: "micromark-factory-whitespace@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-whitespace%2F-%2Fmicromark-factory-whitespace-2.0.1.tgz" dependencies: micromark-factory-space: "npm:^2.0.0" micromark-util-character: "npm:^2.0.0" @@ -4223,7 +4562,7 @@ __metadata: "micromark-util-character@npm:^2.0.0": version: 2.1.1 - resolution: "micromark-util-character@npm:2.1.1" + resolution: "micromark-util-character@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-character%2F-%2Fmicromark-util-character-2.1.1.tgz" dependencies: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" @@ -4233,7 +4572,7 @@ __metadata: "micromark-util-chunked@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-chunked@npm:2.0.1" + resolution: "micromark-util-chunked@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-chunked%2F-%2Fmicromark-util-chunked-2.0.1.tgz" dependencies: micromark-util-symbol: "npm:^2.0.0" checksum: 10/f8cb2a67bcefe4bd2846d838c97b777101f0043b9f1de4f69baf3e26bb1f9885948444e3c3aec66db7595cad8173bd4567a000eb933576c233d54631f6323fe4 @@ -4242,7 +4581,7 @@ __metadata: "micromark-util-classify-character@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-classify-character@npm:2.0.1" + resolution: "micromark-util-classify-character@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-classify-character%2F-%2Fmicromark-util-classify-character-2.0.1.tgz" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" @@ -4253,7 +4592,7 @@ __metadata: "micromark-util-combine-extensions@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-combine-extensions@npm:2.0.1" + resolution: "micromark-util-combine-extensions@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-combine-extensions%2F-%2Fmicromark-util-combine-extensions-2.0.1.tgz" dependencies: micromark-util-chunked: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" @@ -4263,7 +4602,7 @@ __metadata: "micromark-util-decode-numeric-character-reference@npm:^2.0.0": version: 2.0.2 - resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2" + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-decode-numeric-character-reference%2F-%2Fmicromark-util-decode-numeric-character-reference-2.0.2.tgz" dependencies: micromark-util-symbol: "npm:^2.0.0" checksum: 10/ee11c8bde51e250e302050474c4a2adca094bca05c69f6cdd241af12df285c48c88d19ee6e022b9728281c280be16328904adca994605680c43af56019f4b0b6 @@ -4272,7 +4611,7 @@ __metadata: "micromark-util-decode-string@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-decode-string@npm:2.0.1" + resolution: "micromark-util-decode-string@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-decode-string%2F-%2Fmicromark-util-decode-string-2.0.1.tgz" dependencies: decode-named-character-reference: "npm:^1.0.0" micromark-util-character: "npm:^2.0.0" @@ -4284,21 +4623,21 @@ __metadata: "micromark-util-encode@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-encode@npm:2.0.1" + resolution: "micromark-util-encode@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-encode%2F-%2Fmicromark-util-encode-2.0.1.tgz" checksum: 10/be890b98e78dd0cdd953a313f4148c4692cc2fb05533e56fef5f421287d3c08feee38ca679f318e740530791fc251bfe8c80efa926fcceb4419b269c9343d226 languageName: node linkType: hard "micromark-util-html-tag-name@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-html-tag-name@npm:2.0.1" + resolution: "micromark-util-html-tag-name@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-html-tag-name%2F-%2Fmicromark-util-html-tag-name-2.0.1.tgz" checksum: 10/dea365f5ad28ad74ff29fcb581f7b74fc1f80271c5141b3b2bc91c454cbb6dfca753f28ae03730d657874fcbd89d0494d0e3965dfdca06d9855f467c576afa9d languageName: node linkType: hard "micromark-util-normalize-identifier@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-normalize-identifier@npm:2.0.1" + resolution: "micromark-util-normalize-identifier@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-normalize-identifier%2F-%2Fmicromark-util-normalize-identifier-2.0.1.tgz" dependencies: micromark-util-symbol: "npm:^2.0.0" checksum: 10/1eb9a289d7da067323df9fdc78bfa90ca3207ad8fd893ca02f3133e973adcb3743b233393d23d95c84ccaf5d220ae7f5a28402a644f135dcd4b8cfa60a7b5f84 @@ -4307,7 +4646,7 @@ __metadata: "micromark-util-resolve-all@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-resolve-all@npm:2.0.1" + resolution: "micromark-util-resolve-all@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-resolve-all%2F-%2Fmicromark-util-resolve-all-2.0.1.tgz" dependencies: micromark-util-types: "npm:^2.0.0" checksum: 10/9275f3ddb6c26f254dd2158e66215d050454b279707a7d9ce5a3cd0eba23201021cedcb78ae1a746c1b23227dcc418ee40dd074ade195359506797a5493550cc @@ -4316,7 +4655,7 @@ __metadata: "micromark-util-sanitize-uri@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-sanitize-uri@npm:2.0.1" + resolution: "micromark-util-sanitize-uri@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-sanitize-uri%2F-%2Fmicromark-util-sanitize-uri-2.0.1.tgz" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-encode: "npm:^2.0.0" @@ -4327,7 +4666,7 @@ __metadata: "micromark-util-subtokenize@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-util-subtokenize@npm:2.1.0" + resolution: "micromark-util-subtokenize@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-subtokenize%2F-%2Fmicromark-util-subtokenize-2.1.0.tgz" dependencies: devlop: "npm:^1.0.0" micromark-util-chunked: "npm:^2.0.0" @@ -4339,21 +4678,21 @@ __metadata: "micromark-util-symbol@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-symbol@npm:2.0.1" + resolution: "micromark-util-symbol@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-symbol%2F-%2Fmicromark-util-symbol-2.0.1.tgz" checksum: 10/497e6d95fc21c2bb5265b78a6a60db518c376dc438739b2e7d4aee6f9f165222711724b456c63163314f32b8eea68a064687711d41e986262926eab23ddb9229 languageName: node linkType: hard "micromark-util-types@npm:^2.0.0": version: 2.0.2 - resolution: "micromark-util-types@npm:2.0.2" + resolution: "micromark-util-types@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-types%2F-%2Fmicromark-util-types-2.0.2.tgz" checksum: 10/a9eb067bd9384eab61942285d53738aa22f3fef4819eaf20249bec6ec13f1e4da2800230fd0ceb7e705108987aa9062fe3e9a8e5e48aa60180db80b9489dc3e2 languageName: node linkType: hard "micromark@npm:^4.0.0": version: 4.0.2 - resolution: "micromark@npm:4.0.2" + resolution: "micromark@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark%2F-%2Fmicromark-4.0.2.tgz" dependencies: "@types/debug": "npm:^4.0.0" debug: "npm:^4.0.0" @@ -4376,16 +4715,26 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromatch%2F-%2Fmicromatch-4.0.8.tgz" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10/6bf2a01672e7965eb9941d1f02044fad2bd12486b5553dc1116ff24c09a8723157601dc992e74c911d896175918448762df3b3fd0a6b61037dd1a9766ddfbf58 + languageName: node + linkType: hard + "mime-db@npm:1.52.0": version: 1.52.0 - resolution: "mime-db@npm:1.52.0" + resolution: "mime-db@npm:1.52.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmime-db%2F-%2Fmime-db-1.52.0.tgz" checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 languageName: node linkType: hard "mime-types@npm:^2.1.12": version: 2.1.35 - resolution: "mime-types@npm:2.1.35" + resolution: "mime-types@npm:2.1.35::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmime-types%2F-%2Fmime-types-2.1.35.tgz" dependencies: mime-db: "npm:1.52.0" checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a @@ -4393,102 +4742,42 @@ __metadata: linkType: hard "minimatch@npm:^10.2.2": - version: 10.2.2 - resolution: "minimatch@npm:10.2.2" + version: 10.2.5 + resolution: "minimatch@npm:10.2.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminimatch%2F-%2Fminimatch-10.2.5.tgz" dependencies: - brace-expansion: "npm:^5.0.2" - checksum: 10/e135be7b502ac97c02bcee42ccc1c55dc26dbac036c0f4acde69e42fe339d7fb53fae711e57b3546cb533426382ea492c73a073c7f78832e0453d120d48dd015 + brace-expansion: "npm:^5.0.5" + checksum: 10/19e87a931aff60ee7b9d80f39f817b8bfc54f61f8356ee3549fbf636dbccacacfec8d803eac73293955c4527cd085247dfc064bce4a5e349f8f3b85e2bf5da0f languageName: node linkType: hard -"minimatch@npm:^3.1.2": - version: 3.1.3 - resolution: "minimatch@npm:3.1.3" +"minimatch@npm:^3.1.2, minimatch@npm:^3.1.5": + version: 3.1.5 + resolution: "minimatch@npm:3.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminimatch%2F-%2Fminimatch-3.1.5.tgz" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 10/d430c40785fdb42c9fc1a36b9c9e3b08146044bd0f2fd043b05afb436aa4eaf6cdcb7756939ab8fc01664cd75d6335fd5043b2fe2aa084756927ffc77c1e3597 + checksum: 10/b11a7ee5773cd34c1a0c8436cdbe910901018fb4b6cb47aa508a18d567f6efd2148507959e35fba798389b161b8604a2d704ccef751ea36bd4582f9852b7d63f languageName: node linkType: hard "minimatch@npm:^9.0.4": - version: 9.0.6 - resolution: "minimatch@npm:9.0.6" - dependencies: - brace-expansion: "npm:^5.0.2" - checksum: 10/c7a46134aaf349f386de9a3f6c5b48c53bc3a4e2ef4b8b6365184504e28cc31cc261a388e181648cbc756b40e213dbce115c8087a47eff8f54ee28d62bc17b08 - languageName: node - linkType: hard - -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10/b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 - languageName: node - linkType: hard - -"minipass-fetch@npm:^5.0.0": - version: 5.0.1 - resolution: "minipass-fetch@npm:5.0.1" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^2.0.0" - minizlib: "npm:^3.0.1" - dependenciesMeta: - encoding: - optional: true - checksum: 10/08bf0c9866e7f344bf1863ce0d99c0a6fe96b43ef5a4119e23d84a21e613a3f55ecf302adf28d9e228b4ebd50e81d5e84c397e0535089090427319379f478d94 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10/56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" + version: 9.0.9 + resolution: "minimatch@npm:9.0.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminimatch%2F-%2Fminimatch-9.0.9.tgz" dependencies: - minipass: "npm:^3.0.0" - checksum: 10/b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + brace-expansion: "npm:^2.0.2" + checksum: 10/b91fad937deaffb68a45a2cb731ff3cff1c3baf9b6469c879477ed16f15c8f4ce39d63a3f75c2455107c2fdff0f3ab597d97dc09e2e93b883aafcf926ef0c8f9 languageName: node linkType: hard -"minipass-sized@npm:^2.0.0": - version: 2.0.0 - resolution: "minipass-sized@npm:2.0.0" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10/3b89adf64ca705662f77481e278eff5ec0a57aeffb5feba7cc8843722b1e7770efc880f2a17d1d4877b2d7bf227873cd46afb4da44c0fd18088b601ea50f96bb - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10/a5c6ef069f70d9a524d3428af39f2b117ff8cd84172e19b754e7264a33df460873e6eb3d6e55758531580970de50ae950c496256bb4ad3691a2974cddff189f0 - languageName: node - linkType: hard - -"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": +"minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": version: 7.1.3 - resolution: "minipass@npm:7.1.3" + resolution: "minipass@npm:7.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminipass%2F-%2Fminipass-7.1.3.tgz" checksum: 10/175e4d5e20980c3cd316ae82d2c031c42f6c746467d8b1905b51060a0ba4461441a0c25bb67c025fd9617f9a3873e152c7b543c6b5ac83a1846be8ade80dffd6 languageName: node linkType: hard -"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": +"minizlib@npm:^3.1.0": version: 3.1.0 - resolution: "minizlib@npm:3.1.0" + resolution: "minizlib@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminizlib%2F-%2Fminizlib-3.1.0.tgz" dependencies: minipass: "npm:^7.1.2" checksum: 10/f47365cc2cb7f078cbe7e046eb52655e2e7e97f8c0a9a674f4da60d94fb0624edfcec9b5db32e8ba5a99a5f036f595680ae6fe02a262beaa73026e505cc52f99 @@ -4497,37 +4786,30 @@ __metadata: "ms@npm:^2.1.3": version: 2.1.3 - resolution: "ms@npm:2.1.3" + resolution: "ms@npm:2.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fms%2F-%2Fms-2.1.3.tgz" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard "nanoid@npm:^3.3.11": - version: 3.3.11 - resolution: "nanoid@npm:3.3.11" + version: 3.3.12 + resolution: "nanoid@npm:3.3.12::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnanoid%2F-%2Fnanoid-3.3.12.tgz" bin: nanoid: bin/nanoid.cjs - checksum: 10/73b5afe5975a307aaa3c95dfe3334c52cdf9ae71518176895229b8d65ab0d1c0417dd081426134eb7571c055720428ea5d57c645138161e7d10df80815527c48 + checksum: 10/6eec280694e2088d18fb802b1e3bfc4578e27b665b7ecfbe36c7356612fea2f814277056e671e2a1529dff551588a652efdc0bfa39f8a3185bc2247be311872e languageName: node linkType: hard "natural-compare@npm:^1.4.0": version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" + resolution: "natural-compare@npm:1.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnatural-compare%2F-%2Fnatural-compare-1.4.0.tgz" checksum: 10/23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d languageName: node linkType: hard -"negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 10/b5734e87295324fabf868e36fb97c84b7d7f3156ec5f4ee5bf6e488079c11054f818290fc33804cef7b1ee21f55eeb14caea83e7dafae6492a409b3e573153e5 - languageName: node - linkType: hard - "node-exports-info@npm:^1.6.0": version: 1.6.0 - resolution: "node-exports-info@npm:1.6.0" + resolution: "node-exports-info@npm:1.6.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnode-exports-info%2F-%2Fnode-exports-info-1.6.0.tgz" dependencies: array.prototype.flatmap: "npm:^1.3.3" es-errors: "npm:^1.3.0" @@ -4538,35 +4820,35 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 12.2.0 - resolution: "node-gyp@npm:12.2.0" + version: 12.3.0 + resolution: "node-gyp@npm:12.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnode-gyp%2F-%2Fnode-gyp-12.3.0.tgz" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^15.0.0" nopt: "npm:^9.0.0" proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" tar: "npm:^7.5.4" tinyglobby: "npm:^0.2.12" + undici: "npm:^6.25.0" which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/4ebab5b77585a637315e969c2274b5520562473fe75de850639a580c2599652fb9f33959ec782ea45a2e149d8f04b548030f472eeeb3dbdf19a7f2ccbc30b908 + checksum: 10/cd97bf17f0f3e6288c42cc23a6db8528a98e7530abdb72ab558272906d603362e4558069f99f8a5250bc78f65ff305b1438caca4f1b31c81904a8798c242603e languageName: node linkType: hard -"node-releases@npm:^2.0.27": - version: 2.0.27 - resolution: "node-releases@npm:2.0.27" - checksum: 10/f6c78ddb392ae500719644afcbe68a9ea533242c02312eb6a34e8478506eb7482a3fb709c70235b01c32fe65625b68dfa9665113f816d87f163bc3819b62b106 +"node-releases@npm:^2.0.36": + version: 2.0.38 + resolution: "node-releases@npm:2.0.38::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnode-releases%2F-%2Fnode-releases-2.0.38.tgz" + checksum: 10/0e6bba9d7e75dddf7d45c099f202ac7cb0eaeb363c36a34880c219e1697cf7369b6548e48f538490b706501ff9aa017e102adf3362184b9b64786de8377e0501 languageName: node linkType: hard "nopt@npm:^9.0.0": version: 9.0.0 - resolution: "nopt@npm:9.0.0" + resolution: "nopt@npm:9.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnopt%2F-%2Fnopt-9.0.0.tgz" dependencies: abbrev: "npm:^4.0.0" bin: @@ -4577,35 +4859,35 @@ __metadata: "nwsapi@npm:^2.2.12": version: 2.2.23 - resolution: "nwsapi@npm:2.2.23" + resolution: "nwsapi@npm:2.2.23::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnwsapi%2F-%2Fnwsapi-2.2.23.tgz" checksum: 10/aa4a570039c33d70b51436d1bb533f3e2c33c488ccbe9b09285c46a6cee5ef266fd60103461085c6954ba52460786a8138f042958328c7c1b4763898eb3dadfa languageName: node linkType: hard "object-assign@npm:^4.1.1": version: 4.1.1 - resolution: "object-assign@npm:4.1.1" + resolution: "object-assign@npm:4.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject-assign%2F-%2Fobject-assign-4.1.1.tgz" checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard "object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": version: 1.13.4 - resolution: "object-inspect@npm:1.13.4" + resolution: "object-inspect@npm:1.13.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject-inspect%2F-%2Fobject-inspect-1.13.4.tgz" checksum: 10/aa13b1190ad3e366f6c83ad8a16ed37a19ed57d267385aa4bfdccda833d7b90465c057ff6c55d035a6b2e52c1a2295582b294217a0a3a1ae7abdd6877ef781fb languageName: node linkType: hard "object-keys@npm:^1.1.1": version: 1.1.1 - resolution: "object-keys@npm:1.1.1" + resolution: "object-keys@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject-keys%2F-%2Fobject-keys-1.1.1.tgz" checksum: 10/3d81d02674115973df0b7117628ea4110d56042e5326413e4b4313f0bcdf7dd78d4a3acef2c831463fa3796a66762c49daef306f4a0ea1af44877d7086d73bde languageName: node linkType: hard "object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": version: 4.1.7 - resolution: "object.assign@npm:4.1.7" + resolution: "object.assign@npm:4.1.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.assign%2F-%2Fobject.assign-4.1.7.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -4619,7 +4901,7 @@ __metadata: "object.entries@npm:^1.1.9": version: 1.1.9 - resolution: "object.entries@npm:1.1.9" + resolution: "object.entries@npm:1.1.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.entries%2F-%2Fobject.entries-1.1.9.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.4" @@ -4631,7 +4913,7 @@ __metadata: "object.fromentries@npm:^2.0.8": version: 2.0.8 - resolution: "object.fromentries@npm:2.0.8" + resolution: "object.fromentries@npm:2.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.fromentries%2F-%2Fobject.fromentries-2.0.8.tgz" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -4643,7 +4925,7 @@ __metadata: "object.values@npm:^1.1.6, object.values@npm:^1.2.1": version: 1.2.1 - resolution: "object.values@npm:1.2.1" + resolution: "object.values@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.values%2F-%2Fobject.values-1.2.1.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -4655,14 +4937,14 @@ __metadata: "obug@npm:^2.1.1": version: 2.1.1 - resolution: "obug@npm:2.1.1" + resolution: "obug@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobug%2F-%2Fobug-2.1.1.tgz" checksum: 10/bdcf9213361786688019345f3452b95a1dc73710e4b403c82a1994b98bad6abc31b26cb72a482128c5fd53ea9daf6fbb7d0e0e7b2b7e9c8be6d779deeccee07f languageName: node linkType: hard "optionator@npm:^0.9.3": version: 0.9.4 - resolution: "optionator@npm:0.9.4" + resolution: "optionator@npm:0.9.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Foptionator%2F-%2Foptionator-0.9.4.tgz" dependencies: deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" @@ -4676,7 +4958,7 @@ __metadata: "own-keys@npm:^1.0.1": version: 1.0.1 - resolution: "own-keys@npm:1.0.1" + resolution: "own-keys@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fown-keys%2F-%2Fown-keys-1.0.1.tgz" dependencies: get-intrinsic: "npm:^1.2.6" object-keys: "npm:^1.1.1" @@ -4687,7 +4969,7 @@ __metadata: "p-limit@npm:^3.0.2": version: 3.1.0 - resolution: "p-limit@npm:3.1.0" + resolution: "p-limit@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fp-limit%2F-%2Fp-limit-3.1.0.tgz" dependencies: yocto-queue: "npm:^0.1.0" checksum: 10/7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 @@ -4696,30 +4978,23 @@ __metadata: "p-locate@npm:^5.0.0": version: 5.0.0 - resolution: "p-locate@npm:5.0.0" + resolution: "p-locate@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fp-locate%2F-%2Fp-locate-5.0.0.tgz" dependencies: p-limit: "npm:^3.0.2" checksum: 10/1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 languageName: node linkType: hard -"p-map@npm:^7.0.2": - version: 7.0.4 - resolution: "p-map@npm:7.0.4" - checksum: 10/ef48c3b2e488f31c693c9fcc0df0ef76518cf6426a495cf9486ebbb0fd7f31aef7f90e96f72e0070c0ff6e3177c9318f644b512e2c29e3feee8d7153fcb6782e - languageName: node - linkType: hard - "package-json-from-dist@npm:^1.0.1": version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" + resolution: "package-json-from-dist@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpackage-json-from-dist%2F-%2Fpackage-json-from-dist-1.0.1.tgz" checksum: 10/58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 languageName: node linkType: hard "parent-module@npm:^1.0.0": version: 1.0.1 - resolution: "parent-module@npm:1.0.1" + resolution: "parent-module@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fparent-module%2F-%2Fparent-module-1.0.1.tgz" dependencies: callsites: "npm:^3.0.0" checksum: 10/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff @@ -4728,7 +5003,7 @@ __metadata: "parse-entities@npm:^4.0.0": version: 4.0.2 - resolution: "parse-entities@npm:4.0.2" + resolution: "parse-entities@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fparse-entities%2F-%2Fparse-entities-4.0.2.tgz" dependencies: "@types/unist": "npm:^2.0.0" character-entities-legacy: "npm:^3.0.0" @@ -4743,37 +5018,44 @@ __metadata: "parse5@npm:^7.1.2": version: 7.3.0 - resolution: "parse5@npm:7.3.0" + resolution: "parse5@npm:7.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fparse5%2F-%2Fparse5-7.3.0.tgz" dependencies: entities: "npm:^6.0.0" checksum: 10/b0e48be20b820c655b138b86fa6fb3a790de6c891aa2aba536524f8027b4dca4fe538f11a0e5cf2f6f847d120dbb9e4822dcaeb933ff1e10850a2ef0154d1d88 languageName: node linkType: hard +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-browserify%2F-%2Fpath-browserify-1.0.1.tgz" + checksum: 10/7e7368a5207e7c6b9051ef045711d0dc3c2b6203e96057e408e6e74d09f383061010d2be95cb8593fe6258a767c3e9fc6b2bfc7ce8d48ae8c3d9f6994cca9ad8 + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 - resolution: "path-exists@npm:4.0.0" + resolution: "path-exists@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-exists%2F-%2Fpath-exists-4.0.0.tgz" checksum: 10/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 languageName: node linkType: hard "path-key@npm:^3.1.0": version: 3.1.1 - resolution: "path-key@npm:3.1.1" + resolution: "path-key@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-key%2F-%2Fpath-key-3.1.1.tgz" checksum: 10/55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 languageName: node linkType: hard "path-parse@npm:^1.0.7": version: 1.0.7 - resolution: "path-parse@npm:1.0.7" + resolution: "path-parse@npm:1.0.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-parse%2F-%2Fpath-parse-1.0.7.tgz" checksum: 10/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a languageName: node linkType: hard "path-scurry@npm:^2.0.2": version: 2.0.2 - resolution: "path-scurry@npm:2.0.2" + resolution: "path-scurry@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-scurry%2F-%2Fpath-scurry-2.0.2.tgz" dependencies: lru-cache: "npm:^11.0.0" minipass: "npm:^7.1.2" @@ -4783,77 +5065,84 @@ __metadata: "pathe@npm:^2.0.3": version: 2.0.3 - resolution: "pathe@npm:2.0.3" + resolution: "pathe@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpathe%2F-%2Fpathe-2.0.3.tgz" checksum: 10/01e9a69928f39087d96e1751ce7d6d50da8c39abf9a12e0ac2389c42c83bc76f78c45a475bd9026a02e6a6f79be63acc75667df855862fe567d99a00a540d23d languageName: node linkType: hard "picocolors@npm:1.1.1, picocolors@npm:^1.1.1": version: 1.1.1 - resolution: "picocolors@npm:1.1.1" + resolution: "picocolors@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpicocolors%2F-%2Fpicocolors-1.1.1.tgz" checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard -"picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10/57b99055f40b16798f2802916d9c17e9744e620a0db136554af01d19598b96e45e2f00014c91d1b8b13874b80caa8c295b3d589a3f72373ec4aaf54baa5962d5 +"picomatch@npm:^2.3.1": + version: 2.3.2 + resolution: "picomatch@npm:2.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpicomatch%2F-%2Fpicomatch-2.3.2.tgz" + checksum: 10/b788ef8148a2415b9dec12f0bb350ae6a5830f8f1950e472abc2f5225494debf7d1b75eb031df0ceaea9e8ec3e7bad599e8dbf3c60d61b42be429ba41bff4426 languageName: node linkType: hard -"playwright-core@npm:1.58.2": - version: 1.58.2 - resolution: "playwright-core@npm:1.58.2" +"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": + version: 4.0.4 + resolution: "picomatch@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpicomatch%2F-%2Fpicomatch-4.0.4.tgz" + checksum: 10/f6ef80a3590827ce20378ae110ac78209cc4f74d39236370f1780f957b7ee41c12acde0e4651b90f39983506fd2f5e449994716f516db2e9752924aff8de93ce + languageName: node + linkType: hard + +"playwright-core@npm:1.59.1": + version: 1.59.1 + resolution: "playwright-core@npm:1.59.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fplaywright-core%2F-%2Fplaywright-core-1.59.1.tgz" bin: playwright-core: cli.js - checksum: 10/8a98fcf122167e8703d525db2252de0e3da4ab9110ab6ea9951247e52d846310eb25ea2c805e1b7ccb54b4010c44e5adc3a76aae6da02f34324ccc3e76683bb1 + checksum: 10/d27857a6701587c2a9bfa26fed9a5d8c617a392299b99b187f2ddc198d012a1e296449806bc907220debea938152677e8b4d91d304ed00645f762f778de3abec languageName: node linkType: hard -"playwright@npm:1.58.2": - version: 1.58.2 - resolution: "playwright@npm:1.58.2" +"playwright@npm:1.59.1": + version: 1.59.1 + resolution: "playwright@npm:1.59.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fplaywright%2F-%2Fplaywright-1.59.1.tgz" dependencies: fsevents: "npm:2.3.2" - playwright-core: "npm:1.58.2" + playwright-core: "npm:1.59.1" dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 10/d89d6c8a32388911b9aff9ee0f1a90076219f15c804f2b287db048b9e9cde182aea3131fac1959051d25189ed4218ec4272b137c83cd7f9cd24781cbc77edd86 + checksum: 10/17b2df42effa362adc6aa3192b625bd80f26b91a0c253a2375ac89ace68407b746dd87b4081629c50c58c3cb031c5b837a32fef43a3c98c60ea504e0b001e5fa languageName: node linkType: hard "possible-typed-array-names@npm:^1.0.0": version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0" + resolution: "possible-typed-array-names@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpossible-typed-array-names%2F-%2Fpossible-typed-array-names-1.1.0.tgz" checksum: 10/2f44137b8d3dd35f4a7ba7469eec1cd9cfbb46ec164b93a5bc1f4c3d68599c9910ee3b91da1d28b4560e9cc8414c3cd56fedc07259c67e52cc774476270d3302 languageName: node linkType: hard -"postcss@npm:^8.5.6": - version: 8.5.6 - resolution: "postcss@npm:8.5.6" +"postcss@npm:^8.5.10, postcss@npm:^8.5.6": + version: 8.5.14 + resolution: "postcss@npm:8.5.14::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpostcss%2F-%2Fpostcss-8.5.14.tgz" dependencies: nanoid: "npm:^3.3.11" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10/9e4fbe97574091e9736d0e82a591e29aa100a0bf60276a926308f8c57249698935f35c5d2f4e80de778d0cbb8dcffab4f383d85fd50c5649aca421c3df729b86 + checksum: 10/2e3f4dea69692918fe9df5402beb0e54df84499995a094f2fbf63d1a9e38bc1b7a42854df47f09e02593213e01a5eb0627b1d1bd6d1b0ea90767b2e072f7167c languageName: node linkType: hard "prelude-ls@npm:^1.2.1": version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" + resolution: "prelude-ls@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fprelude-ls%2F-%2Fprelude-ls-1.2.1.tgz" checksum: 10/0b9d2c76801ca652a7f64892dd37b7e3fab149a37d2424920099bf894acccc62abb4424af2155ab36dea8744843060a2d8ddc983518d0b1e22265a22324b72ed languageName: node linkType: hard "prettier@npm:3.7.4": version: 3.7.4 - resolution: "prettier@npm:3.7.4" + resolution: "prettier@npm:3.7.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fprettier%2F-%2Fprettier-3.7.4.tgz" bin: prettier: bin/prettier.cjs checksum: 10/b4d00ea13baed813cb777c444506632fb10faaef52dea526cacd03085f01f6db11fc969ccebedf05bf7d93c3960900994c6adf1b150e28a31afd5cfe7089b313 @@ -4862,7 +5151,7 @@ __metadata: "pretty-format@npm:^27.0.2": version: 27.5.1 - resolution: "pretty-format@npm:27.5.1" + resolution: "pretty-format@npm:27.5.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpretty-format%2F-%2Fpretty-format-27.5.1.tgz" dependencies: ansi-regex: "npm:^5.0.1" ansi-styles: "npm:^5.0.0" @@ -4873,24 +5162,14 @@ __metadata: "proc-log@npm:^6.0.0": version: 6.1.0 - resolution: "proc-log@npm:6.1.0" + resolution: "proc-log@npm:6.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fproc-log%2F-%2Fproc-log-6.1.0.tgz" checksum: 10/9033f30f168ed5a0991b773d0c50ff88384c4738e9a0a67d341de36bf7293771eed648ab6a0562f62276da12fde91f3bbfc75ffff6e71ad49aafd74fc646be66 languageName: node linkType: hard -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 - languageName: node - linkType: hard - "prop-types@npm:^15.8.1": version: 15.8.1 - resolution: "prop-types@npm:15.8.1" + resolution: "prop-types@npm:15.8.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fprop-types%2F-%2Fprop-types-15.8.1.tgz" dependencies: loose-envify: "npm:^1.4.0" object-assign: "npm:^4.1.1" @@ -4901,14 +5180,14 @@ __metadata: "property-information@npm:^7.0.0": version: 7.1.0 - resolution: "property-information@npm:7.1.0" + resolution: "property-information@npm:7.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fproperty-information%2F-%2Fproperty-information-7.1.0.tgz" checksum: 10/896d38a52ad7170de73f832d277c69e76a9605d941ebb3f0d6e56271414a7fdf95ff6d2819e68036b8a0c7d2d4d88bf1d4a5765c032cb19c2343567ee3a14b15 languageName: node linkType: hard "psl@npm:^1.1.33": version: 1.15.0 - resolution: "psl@npm:1.15.0" + resolution: "psl@npm:1.15.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpsl%2F-%2Fpsl-1.15.0.tgz" dependencies: punycode: "npm:^2.3.1" checksum: 10/5e7467eb5196eb7900d156783d12907d445c0122f76c73203ce96b148a6ccf8c5450cc805887ffada38ff92d634afcf33720c24053cb01d5b6598d1c913c5caf @@ -4917,21 +5196,28 @@ __metadata: "punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": version: 2.3.1 - resolution: "punycode@npm:2.3.1" + resolution: "punycode@npm:2.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpunycode%2F-%2Fpunycode-2.3.1.tgz" checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 languageName: node linkType: hard "querystringify@npm:^2.1.1": version: 2.2.0 - resolution: "querystringify@npm:2.2.0" + resolution: "querystringify@npm:2.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fquerystringify%2F-%2Fquerystringify-2.2.0.tgz" checksum: 10/46ab16f252fd892fc29d6af60966d338cdfeea68a231e9457631ffd22d67cec1e00141e0a5236a2eb16c0d7d74175d9ec1d6f963660c6f2b1c2fc85b194c5680 languageName: node linkType: hard +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fqueue-microtask%2F-%2Fqueue-microtask-1.2.3.tgz" + checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b + languageName: node + linkType: hard + "react-dom@npm:^18.3.1": version: 18.3.1 - resolution: "react-dom@npm:18.3.1" + resolution: "react-dom@npm:18.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-dom%2F-%2Freact-dom-18.3.1.tgz" dependencies: loose-envify: "npm:^1.1.0" scheduler: "npm:^0.23.2" @@ -4943,21 +5229,21 @@ __metadata: "react-is@npm:^16.13.1": version: 16.13.1 - resolution: "react-is@npm:16.13.1" + resolution: "react-is@npm:16.13.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-is%2F-%2Freact-is-16.13.1.tgz" checksum: 10/5aa564a1cde7d391ac980bedee21202fc90bdea3b399952117f54fb71a932af1e5902020144fb354b4690b2414a0c7aafe798eb617b76a3d441d956db7726fdf languageName: node linkType: hard "react-is@npm:^17.0.1": version: 17.0.2 - resolution: "react-is@npm:17.0.2" + resolution: "react-is@npm:17.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-is%2F-%2Freact-is-17.0.2.tgz" checksum: 10/73b36281e58eeb27c9cc6031301b6ae19ecdc9f18ae2d518bdb39b0ac564e65c5779405d623f1df9abf378a13858b79442480244bd579968afc1faf9a2ce5e05 languageName: node linkType: hard "react-markdown@npm:^9.0.1": version: 9.1.0 - resolution: "react-markdown@npm:9.1.0" + resolution: "react-markdown@npm:9.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-markdown%2F-%2Freact-markdown-9.1.0.tgz" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" @@ -4979,26 +5265,26 @@ __metadata: "react-refresh@npm:^0.17.0": version: 0.17.0 - resolution: "react-refresh@npm:0.17.0" + resolution: "react-refresh@npm:0.17.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-refresh%2F-%2Freact-refresh-0.17.0.tgz" checksum: 10/5e94f07d43bb1cfdc9b0c6e0c8c73e754005489950dcff1edb53aa8451d1d69a47b740b195c7c80fb4eb511c56a3585dc55eddd83f0097fb5e015116a1460467 languageName: node linkType: hard "react-router-dom@npm:^7.1.1": - version: 7.13.0 - resolution: "react-router-dom@npm:7.13.0" + version: 7.14.2 + resolution: "react-router-dom@npm:7.14.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-router-dom%2F-%2Freact-router-dom-7.14.2.tgz" dependencies: - react-router: "npm:7.13.0" + react-router: "npm:7.14.2" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10/7d0f283302710b54a24254aecdfc680832e0f28256a1743f7190e5742ac6072be70c30f731ee9350dcc4ef832d645e701aeef501b9a075da53ce1668d050322c + checksum: 10/1819cf481a581941509d390800cd6e5fbf6feae27e6a82a96b1e2a14af35e8ffe9667870e73dab6d973462a2b5136e3c3f54a30ccd6925e011be01fceb56a8fb languageName: node linkType: hard -"react-router@npm:7.13.0": - version: 7.13.0 - resolution: "react-router@npm:7.13.0" +"react-router@npm:7.14.2": + version: 7.14.2 + resolution: "react-router@npm:7.14.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-router%2F-%2Freact-router-7.14.2.tgz" dependencies: cookie: "npm:^1.0.1" set-cookie-parser: "npm:^2.6.0" @@ -5008,13 +5294,13 @@ __metadata: peerDependenciesMeta: react-dom: optional: true - checksum: 10/8bc0a1eebf37136851ee345e53b137b5a7ec0de10c842861a06810bb54c0a389826734a7454f4afe8731daf39499948ba73657e60a6bd2acb93b3e567fd79127 + checksum: 10/6a12db0f6c8fd9b08631da98ba5e8c63675f4830cb7dccf1d70f3da23acbbc39079f48479b7c2c94b4ecd138fb1e0d4d8efd60914c48b224bfd8f1fd87b3b8cd languageName: node linkType: hard "react@npm:^18.3.1": version: 18.3.1 - resolution: "react@npm:18.3.1" + resolution: "react@npm:18.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact%2F-%2Freact-18.3.1.tgz" dependencies: loose-envify: "npm:^1.1.0" checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf @@ -5023,7 +5309,7 @@ __metadata: "reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": version: 1.0.10 - resolution: "reflect.getprototypeof@npm:1.0.10" + resolution: "reflect.getprototypeof@npm:1.0.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freflect.getprototypeof%2F-%2Freflect.getprototypeof-1.0.10.tgz" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -5039,7 +5325,7 @@ __metadata: "regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": version: 1.5.4 - resolution: "regexp.prototype.flags@npm:1.5.4" + resolution: "regexp.prototype.flags@npm:1.5.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fregexp.prototype.flags%2F-%2Fregexp.prototype.flags-1.5.4.tgz" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -5053,7 +5339,7 @@ __metadata: "rehype-highlight@npm:^7.0.1": version: 7.0.2 - resolution: "rehype-highlight@npm:7.0.2" + resolution: "rehype-highlight@npm:7.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frehype-highlight%2F-%2Frehype-highlight-7.0.2.tgz" dependencies: "@types/hast": "npm:^3.0.0" hast-util-to-text: "npm:^4.0.0" @@ -5066,7 +5352,7 @@ __metadata: "remark-gfm@npm:^4.0.0": version: 4.0.1 - resolution: "remark-gfm@npm:4.0.1" + resolution: "remark-gfm@npm:4.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-gfm%2F-%2Fremark-gfm-4.0.1.tgz" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-gfm: "npm:^3.0.0" @@ -5080,7 +5366,7 @@ __metadata: "remark-parse@npm:^11.0.0": version: 11.0.0 - resolution: "remark-parse@npm:11.0.0" + resolution: "remark-parse@npm:11.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-parse%2F-%2Fremark-parse-11.0.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-from-markdown: "npm:^2.0.0" @@ -5092,7 +5378,7 @@ __metadata: "remark-rehype@npm:^11.0.0": version: 11.1.2 - resolution: "remark-rehype@npm:11.1.2" + resolution: "remark-rehype@npm:11.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-rehype%2F-%2Fremark-rehype-11.1.2.tgz" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" @@ -5105,7 +5391,7 @@ __metadata: "remark-stringify@npm:^11.0.0": version: 11.0.0 - resolution: "remark-stringify@npm:11.0.0" + resolution: "remark-stringify@npm:11.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-stringify%2F-%2Fremark-stringify-11.0.0.tgz" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-to-markdown: "npm:^2.0.0" @@ -5116,21 +5402,21 @@ __metadata: "requires-port@npm:^1.0.0": version: 1.0.0 - resolution: "requires-port@npm:1.0.0" + resolution: "requires-port@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frequires-port%2F-%2Frequires-port-1.0.0.tgz" checksum: 10/878880ee78ccdce372784f62f52a272048e2d0827c29ae31e7f99da18b62a2b9463ea03a75f277352f4697c100183debb0532371ad515a2d49d4bfe596dd4c20 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" + resolution: "resolve-from@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fresolve-from%2F-%2Fresolve-from-4.0.0.tgz" checksum: 10/91eb76ce83621eea7bbdd9b55121a5c1c4a39e54a9ce04a9ad4517f102f8b5131c2cf07622c738a6683991bf54f2ce178f5a42803ecbd527ddc5105f362cc9e3 languageName: node linkType: hard "resolve@npm:^2.0.0-next.5": version: 2.0.0-next.6 - resolution: "resolve@npm:2.0.0-next.6" + resolution: "resolve@npm:2.0.0-next.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fresolve%2F-%2Fresolve-2.0.0-next.6.tgz" dependencies: es-errors: "npm:^1.3.0" is-core-module: "npm:^2.16.1" @@ -5146,7 +5432,7 @@ __metadata: "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": version: 2.0.0-next.6 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Fresolve%252F-%252Fresolve-2.0.0-next.6.tgz#optional!builtin::version=2.0.0-next.6&hash=c3c19d" dependencies: es-errors: "npm:^1.3.0" is-core-module: "npm:^2.16.1" @@ -5160,16 +5446,16 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freusify%2F-%2Freusify-1.1.0.tgz" + checksum: 10/af47851b547e8a8dc89af144fceee17b80d5beaf5e6f57ed086432d79943434ff67ca526e92275be6f54b6189f6920a24eace75c2657eed32d02c400312b21ec languageName: node linkType: hard "rimraf@npm:^6.0.1": version: 6.1.3 - resolution: "rimraf@npm:6.1.3" + resolution: "rimraf@npm:6.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frimraf%2F-%2Frimraf-6.1.3.tgz" dependencies: glob: "npm:^13.0.3" package-json-from-dist: "npm:^1.0.1" @@ -5179,35 +5465,93 @@ __metadata: languageName: node linkType: hard +"rolldown@npm:1.0.0-rc.17": + version: 1.0.0-rc.17 + resolution: "rolldown@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frolldown%2F-%2Frolldown-1.0.0-rc.17.tgz" + dependencies: + "@oxc-project/types": "npm:=0.127.0" + "@rolldown/binding-android-arm64": "npm:1.0.0-rc.17" + "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.17" + "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.17" + "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.17" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.17" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.17" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.17" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.17" + "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.17" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.17" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.17" + "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.17" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.17" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.17" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.17" + "@rolldown/pluginutils": "npm:1.0.0-rc.17" + dependenciesMeta: + "@rolldown/binding-android-arm64": + optional: true + "@rolldown/binding-darwin-arm64": + optional: true + "@rolldown/binding-darwin-x64": + optional: true + "@rolldown/binding-freebsd-x64": + optional: true + "@rolldown/binding-linux-arm-gnueabihf": + optional: true + "@rolldown/binding-linux-arm64-gnu": + optional: true + "@rolldown/binding-linux-arm64-musl": + optional: true + "@rolldown/binding-linux-ppc64-gnu": + optional: true + "@rolldown/binding-linux-s390x-gnu": + optional: true + "@rolldown/binding-linux-x64-gnu": + optional: true + "@rolldown/binding-linux-x64-musl": + optional: true + "@rolldown/binding-openharmony-arm64": + optional: true + "@rolldown/binding-wasm32-wasi": + optional: true + "@rolldown/binding-win32-arm64-msvc": + optional: true + "@rolldown/binding-win32-x64-msvc": + optional: true + bin: + rolldown: bin/cli.mjs + checksum: 10/5e7415a7cb732c4f7168ab6dcc841ed9ec4ad614058294a53d94821a762c274a69b009e41e9c8e4983a059907f02d462030a36b42543c0f41ce702fcd68d10d5 + languageName: node + linkType: hard + "rollup@npm:^4.43.0": - version: 4.59.0 - resolution: "rollup@npm:4.59.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.59.0" - "@rollup/rollup-android-arm64": "npm:4.59.0" - "@rollup/rollup-darwin-arm64": "npm:4.59.0" - "@rollup/rollup-darwin-x64": "npm:4.59.0" - "@rollup/rollup-freebsd-arm64": "npm:4.59.0" - "@rollup/rollup-freebsd-x64": "npm:4.59.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.59.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.59.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.59.0" - "@rollup/rollup-linux-loong64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-loong64-musl": "npm:4.59.0" - "@rollup/rollup-linux-ppc64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-ppc64-musl": "npm:4.59.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-riscv64-musl": "npm:4.59.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.59.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-x64-musl": "npm:4.59.0" - "@rollup/rollup-openbsd-x64": "npm:4.59.0" - "@rollup/rollup-openharmony-arm64": "npm:4.59.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.59.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.59.0" - "@rollup/rollup-win32-x64-gnu": "npm:4.59.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.59.0" + version: 4.60.3 + resolution: "rollup@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frollup%2F-%2Frollup-4.60.3.tgz" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.60.3" + "@rollup/rollup-android-arm64": "npm:4.60.3" + "@rollup/rollup-darwin-arm64": "npm:4.60.3" + "@rollup/rollup-darwin-x64": "npm:4.60.3" + "@rollup/rollup-freebsd-arm64": "npm:4.60.3" + "@rollup/rollup-freebsd-x64": "npm:4.60.3" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.60.3" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.60.3" + "@rollup/rollup-linux-arm64-gnu": "npm:4.60.3" + "@rollup/rollup-linux-arm64-musl": "npm:4.60.3" + "@rollup/rollup-linux-loong64-gnu": "npm:4.60.3" + "@rollup/rollup-linux-loong64-musl": "npm:4.60.3" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.60.3" + "@rollup/rollup-linux-ppc64-musl": "npm:4.60.3" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.60.3" + "@rollup/rollup-linux-riscv64-musl": "npm:4.60.3" + "@rollup/rollup-linux-s390x-gnu": "npm:4.60.3" + "@rollup/rollup-linux-x64-gnu": "npm:4.60.3" + "@rollup/rollup-linux-x64-musl": "npm:4.60.3" + "@rollup/rollup-openbsd-x64": "npm:4.60.3" + "@rollup/rollup-openharmony-arm64": "npm:4.60.3" + "@rollup/rollup-win32-arm64-msvc": "npm:4.60.3" + "@rollup/rollup-win32-ia32-msvc": "npm:4.60.3" + "@rollup/rollup-win32-x64-gnu": "npm:4.60.3" + "@rollup/rollup-win32-x64-msvc": "npm:4.60.3" "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -5265,40 +5609,49 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/728237932aad7022c0640cd126b9fe5285f2578099f22a0542229a17785320a6553b74582fa5977877541c1faf27de65ed2750bc89dbb55b525405244a46d9f1 + checksum: 10/576a68253d3d8ad6ae390e4ad70e13726923ed5d0dc8e74f663ce691fa862dc326c3855a296ebf79a95d28761a62556af956e5ec14aa743f1c701e97eda60636 languageName: node linkType: hard "rrweb-cssom@npm:^0.7.1": version: 0.7.1 - resolution: "rrweb-cssom@npm:0.7.1" + resolution: "rrweb-cssom@npm:0.7.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frrweb-cssom%2F-%2Frrweb-cssom-0.7.1.tgz" checksum: 10/e80cf25c223a823921d7ab57c0ce78f5b7ebceab857b400cce99dd4913420ce679834bc5707e8ada47d062e21ad368108a9534c314dc8d72c20aa4a4fa0ed16a languageName: node linkType: hard "rrweb-cssom@npm:^0.8.0": version: 0.8.0 - resolution: "rrweb-cssom@npm:0.8.0" + resolution: "rrweb-cssom@npm:0.8.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frrweb-cssom%2F-%2Frrweb-cssom-0.8.0.tgz" checksum: 10/07521ee36fb6569c17906afad1ac7ff8f099d49ade9249e190693ac36cdf27f88d9acf0cc66978935d5d0a23fca105643d7e9125b9a9d91ed9db9e02d31d7d80 languageName: node linkType: hard +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frun-parallel%2F-%2Frun-parallel-1.2.0.tgz" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + "safe-array-concat@npm:^1.1.3": - version: 1.1.3 - resolution: "safe-array-concat@npm:1.1.3" + version: 1.1.4 + resolution: "safe-array-concat@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafe-array-concat%2F-%2Fsafe-array-concat-1.1.4.tgz" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" + call-bind: "npm:^1.0.9" + call-bound: "npm:^1.0.4" + get-intrinsic: "npm:^1.3.0" has-symbols: "npm:^1.1.0" isarray: "npm:^2.0.5" - checksum: 10/fac4f40f20a3f7da024b54792fcc61059e814566dcbb04586bfefef4d3b942b2408933f25b7b3dd024affd3f2a6bbc916bef04807855e4f192413941369db864 + checksum: 10/89e6a4d2759225515e5ea6b9f21a62dfad74c3aef45c769c9bf000b1c681f15568183e62935711ec9d10c35712c4f21f0d6acb094bd35138608b4a57fa64667d languageName: node linkType: hard "safe-push-apply@npm:^1.0.0": version: 1.0.0 - resolution: "safe-push-apply@npm:1.0.0" + resolution: "safe-push-apply@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafe-push-apply%2F-%2Fsafe-push-apply-1.0.0.tgz" dependencies: es-errors: "npm:^1.3.0" isarray: "npm:^2.0.5" @@ -5308,7 +5661,7 @@ __metadata: "safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0" + resolution: "safe-regex-test@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafe-regex-test%2F-%2Fsafe-regex-test-1.1.0.tgz" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -5319,14 +5672,14 @@ __metadata: "safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" + resolution: "safer-buffer@npm:2.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafer-buffer%2F-%2Fsafer-buffer-2.1.2.tgz" checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 languageName: node linkType: hard "saxes@npm:^6.0.0": version: 6.0.0 - resolution: "saxes@npm:6.0.0" + resolution: "saxes@npm:6.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsaxes%2F-%2Fsaxes-6.0.0.tgz" dependencies: xmlchars: "npm:^2.2.0" checksum: 10/97b50daf6ca3a153e89842efa18a862e446248296622b7473c169c84c823ee8a16e4a43bac2f73f11fc8cb9168c73fbb0d73340f26552bac17970e9052367aa9 @@ -5335,7 +5688,7 @@ __metadata: "scheduler@npm:^0.23.2": version: 0.23.2 - resolution: "scheduler@npm:0.23.2" + resolution: "scheduler@npm:0.23.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fscheduler%2F-%2Fscheduler-0.23.2.tgz" dependencies: loose-envify: "npm:^1.1.0" checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9 @@ -5344,7 +5697,7 @@ __metadata: "semver@npm:^6.3.1": version: 6.3.1 - resolution: "semver@npm:6.3.1" + resolution: "semver@npm:6.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsemver%2F-%2Fsemver-6.3.1.tgz" bin: semver: bin/semver.js checksum: 10/1ef3a85bd02a760c6ef76a45b8c1ce18226de40831e02a00bad78485390b98b6ccaa31046245fc63bba4a47a6a592b6c7eedc65cc47126e60489f9cc1ce3ed7e @@ -5353,7 +5706,7 @@ __metadata: "semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.6.0": version: 7.7.4 - resolution: "semver@npm:7.7.4" + resolution: "semver@npm:7.7.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsemver%2F-%2Fsemver-7.7.4.tgz" bin: semver: bin/semver.js checksum: 10/26bdc6d58b29528f4142d29afb8526bc335f4fc04c4a10f2b98b217f277a031c66736bf82d3d3bb354a2f6a3ae50f18fd62b053c4ac3f294a3d10a61f5075b75 @@ -5362,14 +5715,14 @@ __metadata: "set-cookie-parser@npm:^2.6.0": version: 2.7.2 - resolution: "set-cookie-parser@npm:2.7.2" + resolution: "set-cookie-parser@npm:2.7.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-cookie-parser%2F-%2Fset-cookie-parser-2.7.2.tgz" checksum: 10/4b6f5ec4e3fa1aef471d9207117704d217ba6bb6443400b41f5ea945c4a7f6fc08e405a122c1a32b4ebde41f06dea75e02c2af87cee9abb27f3e3fe911e5839b languageName: node linkType: hard "set-function-length@npm:^1.2.2": version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" + resolution: "set-function-length@npm:1.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-function-length%2F-%2Fset-function-length-1.2.2.tgz" dependencies: define-data-property: "npm:^1.1.4" es-errors: "npm:^1.3.0" @@ -5383,7 +5736,7 @@ __metadata: "set-function-name@npm:^2.0.2": version: 2.0.2 - resolution: "set-function-name@npm:2.0.2" + resolution: "set-function-name@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-function-name%2F-%2Fset-function-name-2.0.2.tgz" dependencies: define-data-property: "npm:^1.1.4" es-errors: "npm:^1.3.0" @@ -5395,7 +5748,7 @@ __metadata: "set-proto@npm:^1.0.0": version: 1.0.0 - resolution: "set-proto@npm:1.0.0" + resolution: "set-proto@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-proto%2F-%2Fset-proto-1.0.0.tgz" dependencies: dunder-proto: "npm:^1.0.1" es-errors: "npm:^1.3.0" @@ -5406,7 +5759,7 @@ __metadata: "shebang-command@npm:^2.0.0": version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" + resolution: "shebang-command@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fshebang-command%2F-%2Fshebang-command-2.0.0.tgz" dependencies: shebang-regex: "npm:^3.0.0" checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa @@ -5415,24 +5768,24 @@ __metadata: "shebang-regex@npm:^3.0.0": version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" + resolution: "shebang-regex@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fshebang-regex%2F-%2Fshebang-regex-3.0.0.tgz" checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 languageName: node linkType: hard "side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" + version: 1.0.1 + resolution: "side-channel-list@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel-list%2F-%2Fside-channel-list-1.0.1.tgz" dependencies: es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10/603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + object-inspect: "npm:^1.13.4" + checksum: 10/3499671cd52adaee739eac1e14d07530b8e3530192741aeb05e7fe4ad1b51d1368ceea2cd3c21b0f62b05410a5c70a7c4d997ba4b143303ef73d0c65dfd1c252 languageName: node linkType: hard "side-channel-map@npm:^1.0.1": version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" + resolution: "side-channel-map@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel-map%2F-%2Fside-channel-map-1.0.1.tgz" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -5444,7 +5797,7 @@ __metadata: "side-channel-weakmap@npm:^1.0.2": version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" + resolution: "side-channel-weakmap@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel-weakmap%2F-%2Fside-channel-weakmap-1.0.2.tgz" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -5457,7 +5810,7 @@ __metadata: "side-channel@npm:^1.1.0": version: 1.1.0 - resolution: "side-channel@npm:1.1.0" + resolution: "side-channel@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel%2F-%2Fside-channel-1.1.0.tgz" dependencies: es-errors: "npm:^1.3.0" object-inspect: "npm:^1.13.3" @@ -5470,79 +5823,42 @@ __metadata: "siginfo@npm:^2.0.0": version: 2.0.0 - resolution: "siginfo@npm:2.0.0" + resolution: "siginfo@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsiginfo%2F-%2Fsiginfo-2.0.0.tgz" checksum: 10/e93ff66c6531a079af8fb217240df01f980155b5dc408d2d7bebc398dd284e383eb318153bf8acd4db3c4fe799aa5b9a641e38b0ba3b1975700b1c89547ea4e7 languageName: node linkType: hard -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10/927484aa0b1640fd9473cee3e0a0bcad6fce93fd7bbc18bac9ad0c33686f5d2e2c422fba24b5899c184524af01e11dd2bd051c2bf2b07e47aff8ca72cbfc60d2 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.3": - version: 8.0.5 - resolution: "socks-proxy-agent@npm:8.0.5" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:^4.3.4" - socks: "npm:^2.8.3" - checksum: 10/ee99e1dacab0985b52cbe5a75640be6e604135e9489ebdc3048635d186012fbaecc20fbbe04b177dee434c319ba20f09b3e7dfefb7d932466c0d707744eac05c - languageName: node - linkType: hard - -"socks@npm:^2.8.3": - version: 2.8.7 - resolution: "socks@npm:2.8.7" - dependencies: - ip-address: "npm:^10.0.1" - smart-buffer: "npm:^4.2.0" - checksum: 10/d19366c95908c19db154f329bbe94c2317d315dc933a7c2b5101e73f32a555c84fb199b62174e1490082a593a4933d8d5a9b297bde7d1419c14a11a965f51356 - languageName: node - linkType: hard - "source-map-js@npm:^1.2.1": version: 1.2.1 - resolution: "source-map-js@npm:1.2.1" + resolution: "source-map-js@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsource-map-js%2F-%2Fsource-map-js-1.2.1.tgz" checksum: 10/ff9d8c8bf096d534a5b7707e0382ef827b4dd360a577d3f34d2b9f48e12c9d230b5747974ee7c607f0df65113732711bb701fe9ece3c7edbd43cb2294d707df3 languageName: node linkType: hard "space-separated-tokens@npm:^2.0.0": version: 2.0.2 - resolution: "space-separated-tokens@npm:2.0.2" + resolution: "space-separated-tokens@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fspace-separated-tokens%2F-%2Fspace-separated-tokens-2.0.2.tgz" checksum: 10/202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 languageName: node linkType: hard -"ssri@npm:^13.0.0": - version: 13.0.1 - resolution: "ssri@npm:13.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10/ae560d0378d074006a71b06af71bfbe84a3fe1ac6e16c1f07575f69e670d40170507fe52b21bcc23399429bc6a15f4bc3ea8d9bc88e9dfd7e87de564e6da6a72 - languageName: node - linkType: hard - "stackback@npm:0.0.2": version: 0.0.2 - resolution: "stackback@npm:0.0.2" + resolution: "stackback@npm:0.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstackback%2F-%2Fstackback-0.0.2.tgz" checksum: 10/2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 languageName: node linkType: hard -"std-env@npm:^3.10.0": - version: 3.10.0 - resolution: "std-env@npm:3.10.0" - checksum: 10/19c9cda4f370b1ffae2b8b08c72167d8c3e5cfa972aaf5c6873f85d0ed2faa729407f5abb194dc33380708c00315002febb6f1e1b484736bfcf9361ad366013a +"std-env@npm:^4.0.0-rc.1": + version: 4.1.0 + resolution: "std-env@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstd-env%2F-%2Fstd-env-4.1.0.tgz" + checksum: 10/008146cdb834010383138d356e0dd3e3b0ac127a8229f711b8c518bb22940813cc0dcd654fc76b17f0b18179f56089f8b8e52bd6a7ffa0041a966581e7a44dbe languageName: node linkType: hard "stop-iteration-iterator@npm:^1.1.0": version: 1.1.0 - resolution: "stop-iteration-iterator@npm:1.1.0" + resolution: "stop-iteration-iterator@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstop-iteration-iterator%2F-%2Fstop-iteration-iterator-1.1.0.tgz" dependencies: es-errors: "npm:^1.3.0" internal-slot: "npm:^1.1.0" @@ -5552,14 +5868,14 @@ __metadata: "strictdom@npm:^1.0.1": version: 1.0.1 - resolution: "strictdom@npm:1.0.1" + resolution: "strictdom@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstrictdom%2F-%2Fstrictdom-1.0.1.tgz" checksum: 10/e9e030dd9b14eaee81e698044e405aaaceec6e09f32c920fa24c2ee9fe8153bf30780a06028b6c185dc6348b54cc803addb4bfa498246b9d26583b23b359b9fa languageName: node linkType: hard "string.prototype.includes@npm:^2.0.1": version: 2.0.1 - resolution: "string.prototype.includes@npm:2.0.1" + resolution: "string.prototype.includes@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.includes%2F-%2Fstring.prototype.includes-2.0.1.tgz" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -5570,7 +5886,7 @@ __metadata: "string.prototype.matchall@npm:^4.0.12": version: 4.0.12 - resolution: "string.prototype.matchall@npm:4.0.12" + resolution: "string.prototype.matchall@npm:4.0.12::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.matchall%2F-%2Fstring.prototype.matchall-4.0.12.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -5591,7 +5907,7 @@ __metadata: "string.prototype.repeat@npm:^1.0.0": version: 1.0.0 - resolution: "string.prototype.repeat@npm:1.0.0" + resolution: "string.prototype.repeat@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.repeat%2F-%2Fstring.prototype.repeat-1.0.0.tgz" dependencies: define-properties: "npm:^1.1.3" es-abstract: "npm:^1.17.5" @@ -5601,7 +5917,7 @@ __metadata: "string.prototype.trim@npm:^1.2.10": version: 1.2.10 - resolution: "string.prototype.trim@npm:1.2.10" + resolution: "string.prototype.trim@npm:1.2.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.trim%2F-%2Fstring.prototype.trim-1.2.10.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.2" @@ -5616,7 +5932,7 @@ __metadata: "string.prototype.trimend@npm:^1.0.9": version: 1.0.9 - resolution: "string.prototype.trimend@npm:1.0.9" + resolution: "string.prototype.trimend@npm:1.0.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.trimend%2F-%2Fstring.prototype.trimend-1.0.9.tgz" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.2" @@ -5628,7 +5944,7 @@ __metadata: "string.prototype.trimstart@npm:^1.0.8": version: 1.0.8 - resolution: "string.prototype.trimstart@npm:1.0.8" + resolution: "string.prototype.trimstart@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.trimstart%2F-%2Fstring.prototype.trimstart-1.0.8.tgz" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -5639,7 +5955,7 @@ __metadata: "stringify-entities@npm:^4.0.0": version: 4.0.4 - resolution: "stringify-entities@npm:4.0.4" + resolution: "stringify-entities@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstringify-entities%2F-%2Fstringify-entities-4.0.4.tgz" dependencies: character-entities-html4: "npm:^2.0.0" character-entities-legacy: "npm:^3.0.0" @@ -5649,14 +5965,14 @@ __metadata: "strip-json-comments@npm:^3.1.1": version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" + resolution: "strip-json-comments@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstrip-json-comments%2F-%2Fstrip-json-comments-3.1.1.tgz" checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 languageName: node linkType: hard "style-to-js@npm:^1.0.0": version: 1.1.21 - resolution: "style-to-js@npm:1.1.21" + resolution: "style-to-js@npm:1.1.21::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstyle-to-js%2F-%2Fstyle-to-js-1.1.21.tgz" dependencies: style-to-object: "npm:1.0.14" checksum: 10/5e30b4c52ed4e0294324adab2a43a0438b5495a77a72a6b1258637eebfc4dc8e0614f5ac7bf38a2f514879b3b448215d01fecf1f8d7468b8b95d90bed1d05d57 @@ -5665,7 +5981,7 @@ __metadata: "style-to-object@npm:1.0.14": version: 1.0.14 - resolution: "style-to-object@npm:1.0.14" + resolution: "style-to-object@npm:1.0.14::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstyle-to-object%2F-%2Fstyle-to-object-1.0.14.tgz" dependencies: inline-style-parser: "npm:0.2.7" checksum: 10/06b86a5cf435dafac908d19082842983f9052d8cf3682915b1bd9251e3fe9b8065dbd2aef060dc5dfa0fa2ee24d717b587a5205f571513a10f30e3947f9d28ff @@ -5674,7 +5990,7 @@ __metadata: "supports-color@npm:^7.1.0": version: 7.2.0 - resolution: "supports-color@npm:7.2.0" + resolution: "supports-color@npm:7.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsupports-color%2F-%2Fsupports-color-7.2.0.tgz" dependencies: has-flag: "npm:^4.0.0" checksum: 10/c8bb7afd564e3b26b50ca6ee47572c217526a1389fe018d00345856d4a9b08ffbd61fadaf283a87368d94c3dcdb8f5ffe2650a5a65863e21ad2730ca0f05210a @@ -5683,65 +5999,74 @@ __metadata: "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + resolution: "supports-preserve-symlinks-flag@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsupports-preserve-symlinks-flag%2F-%2Fsupports-preserve-symlinks-flag-1.0.0.tgz" checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e languageName: node linkType: hard "symbol-tree@npm:^3.2.4": version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" + resolution: "symbol-tree@npm:3.2.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsymbol-tree%2F-%2Fsymbol-tree-3.2.4.tgz" checksum: 10/c09a00aadf279d47d0c5c46ca3b6b2fbaeb45f0a184976d599637d412d3a70bbdc043ff33effe1206dea0e36e0ad226cb957112e7ce9a4bf2daedf7fa4f85c53 languageName: node linkType: hard "tar@npm:^7.5.4": - version: 7.5.9 - resolution: "tar@npm:7.5.9" + version: 7.5.13 + resolution: "tar@npm:7.5.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftar%2F-%2Ftar-7.5.13.tgz" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/1213cdde9c22d6acf8809ba5d2a025212ce3517bc99c4a4c6981b7dc0489bf3b164db9c826c9517680889194c9ba57448c8ff0da35eca9a60bb7689bf0b3897d + checksum: 10/2bc2b6f0349038a6621dbba1c4522d45752d5071b2994692257113c2050cd23fafc30308f820e5f8ad6fda3f7d7f92adc9a432aa733daa04c42af2061c021c3f languageName: node linkType: hard "tinybench@npm:^2.9.0": version: 2.9.0 - resolution: "tinybench@npm:2.9.0" + resolution: "tinybench@npm:2.9.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinybench%2F-%2Ftinybench-2.9.0.tgz" checksum: 10/cfa1e1418e91289219501703c4693c70708c91ffb7f040fd318d24aef419fb5a43e0c0160df9471499191968b2451d8da7f8087b08c3133c251c40d24aced06c languageName: node linkType: hard "tinyexec@npm:^1.0.2": - version: 1.0.2 - resolution: "tinyexec@npm:1.0.2" - checksum: 10/cb709ed4240e873d3816e67f851d445f5676e0ae3a52931a60ff571d93d388da09108c8057b62351766133ee05ff3159dd56c3a0fbd39a5933c6639ce8771405 + version: 1.1.2 + resolution: "tinyexec@npm:1.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinyexec%2F-%2Ftinyexec-1.1.2.tgz" + checksum: 10/2bbe37f9001c6f5723ab39eb8dc1e88f77e830d7cf2e8f34bb75019eb505fcfe3b061b4799c502ff31fa63aa1a9adc649add5ff1e17b7fbd8c16e1afb75d0b9e languageName: node linkType: hard -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.16": + version: 0.2.16 + resolution: "tinyglobby@npm:0.2.16::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinyglobby%2F-%2Ftinyglobby-0.2.16.tgz" dependencies: fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10/d72bd826a8b0fa5fa3929e7fe5ba48fceb2ae495df3a231b6c5408cd7d8c00b58ab5a9c2a76ba56a62ee9b5e083626f1f33599734bed1ffc4b792406408f0ca2 + picomatch: "npm:^4.0.4" + checksum: 10/5c2c41b572ada38449e7c86a5fe034f204a1dbba577225a761a14f29f48dc3f2fc0d81a6c56fcc67c5a742cc3aa9fb5e2ca18dbf22b610b0bc0e549b34d5a0f8 languageName: node linkType: hard -"tinyrainbow@npm:^3.0.3": - version: 3.0.3 - resolution: "tinyrainbow@npm:3.0.3" - checksum: 10/169cc63c15e1378674180f3207c82c05bfa58fc79992e48792e8d97b4b759012f48e95297900ede24a81f0087cf329a0d85bb81109739eacf03c650127b3f6c1 +"tinyrainbow@npm:^3.1.0": + version: 3.1.0 + resolution: "tinyrainbow@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinyrainbow%2F-%2Ftinyrainbow-3.1.0.tgz" + checksum: 10/4c2c01dde1e5bb9a74973daaae141d4d733d246280b2f9a7f6a9e7dd8e940d48b2580a6086125278777897bc44635d6ccec5f9f563c2179dd2129f4542d0ec05 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fto-regex-range%2F-%2Fto-regex-range-5.0.1.tgz" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10/10dda13571e1f5ad37546827e9b6d4252d2e0bc176c24a101252153ef435d83696e2557fe128c4678e4e78f5f01e83711c703eef9814eb12dab028580d45980a languageName: node linkType: hard "tough-cookie@npm:^4.1.4": version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" + resolution: "tough-cookie@npm:4.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftough-cookie%2F-%2Ftough-cookie-4.1.4.tgz" dependencies: psl: "npm:^1.1.33" punycode: "npm:^2.1.1" @@ -5753,7 +6078,7 @@ __metadata: "tr46@npm:^5.1.0": version: 5.1.1 - resolution: "tr46@npm:5.1.1" + resolution: "tr46@npm:5.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftr46%2F-%2Ftr46-5.1.1.tgz" dependencies: punycode: "npm:^2.3.1" checksum: 10/833a0e1044574da5790148fd17866d4ddaea89e022de50279967bcd6b28b4ce0d30d59eb3acf9702b60918975b3bad481400337e3a2e6326cffa5c77b874753d @@ -5762,30 +6087,47 @@ __metadata: "trim-lines@npm:^3.0.0": version: 3.0.1 - resolution: "trim-lines@npm:3.0.1" + resolution: "trim-lines@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftrim-lines%2F-%2Ftrim-lines-3.0.1.tgz" checksum: 10/7a1325e4ce8ff7e9e52007600e9c9862a166d0db1f1cf0c9357e359e410acab1278fcd91cc279dfa5123fc37b69f080de02f471e91dbbc61b155b9ca92597929 languageName: node linkType: hard "trough@npm:^2.0.0": version: 2.2.0 - resolution: "trough@npm:2.2.0" + resolution: "trough@npm:2.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftrough%2F-%2Ftrough-2.2.0.tgz" checksum: 10/999c1cb3db6ec63e1663f911146a90125065da37f66ba342b031d53edb22a62f56c1f934bbc61a55b2b29dd74207544cfd78875b414665c1ffadcd9a9a009eeb languageName: node linkType: hard "ts-api-utils@npm:^2.2.0": - version: 2.4.0 - resolution: "ts-api-utils@npm:2.4.0" + version: 2.5.0 + resolution: "ts-api-utils@npm:2.5.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fts-api-utils%2F-%2Fts-api-utils-2.5.0.tgz" peerDependencies: typescript: ">=4.8.4" - checksum: 10/d6b2b3b6caad8d2f4ddc0c3785d22bb1a6041773335a1c71d73a5d67d11d993763fe8e4faefc4a4d03bb42b26c6126bbcf2e34826baed1def5369d0ebad358fa + checksum: 10/d5f1936f5618c6ab6942a97b78802217540ced00e7501862ae1f578d9a3aa189fc06050e64cb8951d21f7088e5fd35f53d2bf0d0370a883861c7b05e993ebc44 + languageName: node + linkType: hard + +"ts-morph@npm:^25.0.0": + version: 25.0.1 + resolution: "ts-morph@npm:25.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fts-morph%2F-%2Fts-morph-25.0.1.tgz" + dependencies: + "@ts-morph/common": "npm:~0.26.0" + code-block-writer: "npm:^13.0.3" + checksum: 10/caeec1532dfb2d9338a797a7c7f0c52517c65f757538f0931db9f9a95b0e4be173ca62c28efa59f4e018db4458d07af403baf6cccd2c467eadc69144a01c0d19 + languageName: node + linkType: hard + +"tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftslib%2F-%2Ftslib-2.8.1.tgz" + checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 languageName: node linkType: hard "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 - resolution: "type-check@npm:0.4.0" + resolution: "type-check@npm:0.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftype-check%2F-%2Ftype-check-0.4.0.tgz" dependencies: prelude-ls: "npm:^1.2.1" checksum: 10/14687776479d048e3c1dbfe58a2409e00367810d6960c0f619b33793271ff2a27f81b52461f14a162f1f89a9b1d8da1b237fc7c99b0e1fdcec28ec63a86b1fec @@ -5794,7 +6136,7 @@ __metadata: "typed-array-buffer@npm:^1.0.3": version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" + resolution: "typed-array-buffer@npm:1.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-buffer%2F-%2Ftyped-array-buffer-1.0.3.tgz" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -5805,7 +6147,7 @@ __metadata: "typed-array-byte-length@npm:^1.0.3": version: 1.0.3 - resolution: "typed-array-byte-length@npm:1.0.3" + resolution: "typed-array-byte-length@npm:1.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-byte-length%2F-%2Ftyped-array-byte-length-1.0.3.tgz" dependencies: call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" @@ -5818,7 +6160,7 @@ __metadata: "typed-array-byte-offset@npm:^1.0.4": version: 1.0.4 - resolution: "typed-array-byte-offset@npm:1.0.4" + resolution: "typed-array-byte-offset@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-byte-offset%2F-%2Ftyped-array-byte-offset-1.0.4.tgz" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -5833,7 +6175,7 @@ __metadata: "typed-array-length@npm:^1.0.7": version: 1.0.7 - resolution: "typed-array-length@npm:1.0.7" + resolution: "typed-array-length@npm:1.0.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-length%2F-%2Ftyped-array-length-1.0.7.tgz" dependencies: call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" @@ -5847,7 +6189,7 @@ __metadata: "typescript@npm:^5.9.3": version: 5.9.3 - resolution: "typescript@npm:5.9.3" + resolution: "typescript@npm:5.9.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftypescript%2F-%2Ftypescript-5.9.3.tgz" bin: tsc: bin/tsc tsserver: bin/tsserver @@ -5857,7 +6199,7 @@ __metadata: "typescript@patch:typescript@npm%3A^5.9.3#optional!builtin": version: 5.9.3 - resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" + resolution: "typescript@patch:typescript@npm%3A5.9.3%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Ftypescript%252F-%252Ftypescript-5.9.3.tgz#optional!builtin::version=5.9.3&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver @@ -5867,7 +6209,7 @@ __metadata: "unbox-primitive@npm:^1.1.0": version: 1.1.0 - resolution: "unbox-primitive@npm:1.1.0" + resolution: "unbox-primitive@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funbox-primitive%2F-%2Funbox-primitive-1.1.0.tgz" dependencies: call-bound: "npm:^1.0.3" has-bigints: "npm:^1.0.2" @@ -5877,9 +6219,16 @@ __metadata: languageName: node linkType: hard +"undici@npm:^6.25.0": + version: 6.25.0 + resolution: "undici@npm:6.25.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fundici%2F-%2Fundici-6.25.0.tgz" + checksum: 10/a475e45da3e1d1073283bb70531666f09a432eabff2b857bd7063d469a1ee1486192ff61dc0dadbb526673ce1120fee14d66a59b6b17d1e0bd3a4d5f0a52d0a6 + languageName: node + linkType: hard + "unified@npm:^11.0.0": version: 11.0.5 - resolution: "unified@npm:11.0.5" + resolution: "unified@npm:11.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funified%2F-%2Funified-11.0.5.tgz" dependencies: "@types/unist": "npm:^3.0.0" bail: "npm:^2.0.0" @@ -5892,27 +6241,9 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-filename@npm:5.0.0" - dependencies: - unique-slug: "npm:^6.0.0" - checksum: 10/a5f67085caef74bdd2a6869a200ed5d68d171f5cc38435a836b5fd12cce4e4eb55e6a190298035c325053a5687ed7a3c96f0a91e82215fd14729769d9ac57d9b - languageName: node - linkType: hard - -"unique-slug@npm:^6.0.0": - version: 6.0.0 - resolution: "unique-slug@npm:6.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10/b78ed9d5b01ff465f80975f17387750ed3639909ac487fa82c4ae4326759f6de87c2131c0c39eca4c68cf06c537a8d104fba1dfc8a30308f99bc505345e1eba3 - languageName: node - linkType: hard - "unist-util-find-after@npm:^5.0.0": version: 5.0.0 - resolution: "unist-util-find-after@npm:5.0.0" + resolution: "unist-util-find-after@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-find-after%2F-%2Funist-util-find-after-5.0.0.tgz" dependencies: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" @@ -5922,7 +6253,7 @@ __metadata: "unist-util-is@npm:^6.0.0": version: 6.0.1 - resolution: "unist-util-is@npm:6.0.1" + resolution: "unist-util-is@npm:6.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-is%2F-%2Funist-util-is-6.0.1.tgz" dependencies: "@types/unist": "npm:^3.0.0" checksum: 10/dc3ebfb481f097863ae3674c440add6fe2d51a4cfcd565b13fb759c8a2eaefb71903a619b385e892c2ad6db6a5b60d068dfc5592b6dd57f4b60180082b3136d6 @@ -5931,7 +6262,7 @@ __metadata: "unist-util-position@npm:^5.0.0": version: 5.0.0 - resolution: "unist-util-position@npm:5.0.0" + resolution: "unist-util-position@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-position%2F-%2Funist-util-position-5.0.0.tgz" dependencies: "@types/unist": "npm:^3.0.0" checksum: 10/89d4da00e74618d7562ac7ac288961df9bcd4ccca6df3b5a90650f018eceb6b95de6e771e88bdbef46cc9d96861d456abe57b7ad1108921e0feb67c6292aa29d @@ -5940,7 +6271,7 @@ __metadata: "unist-util-stringify-position@npm:^4.0.0": version: 4.0.0 - resolution: "unist-util-stringify-position@npm:4.0.0" + resolution: "unist-util-stringify-position@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-stringify-position%2F-%2Funist-util-stringify-position-4.0.0.tgz" dependencies: "@types/unist": "npm:^3.0.0" checksum: 10/d15c88aca7a31902d95d5b5355bbe09583cf6f6ff6e59e134ef76c76d3c30bc1021f2d7ea5b7897c6d0858ed5f3770c1b19de9c78274f50d72f95a0d05f1af71 @@ -5949,7 +6280,7 @@ __metadata: "unist-util-visit-parents@npm:^6.0.0": version: 6.0.2 - resolution: "unist-util-visit-parents@npm:6.0.2" + resolution: "unist-util-visit-parents@npm:6.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-visit-parents%2F-%2Funist-util-visit-parents-6.0.2.tgz" dependencies: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" @@ -5959,7 +6290,7 @@ __metadata: "unist-util-visit@npm:^5.0.0": version: 5.1.0 - resolution: "unist-util-visit@npm:5.1.0" + resolution: "unist-util-visit@npm:5.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-visit%2F-%2Funist-util-visit-5.1.0.tgz" dependencies: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" @@ -5970,14 +6301,14 @@ __metadata: "universalify@npm:^0.2.0": version: 0.2.0 - resolution: "universalify@npm:0.2.0" + resolution: "universalify@npm:0.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funiversalify%2F-%2Funiversalify-0.2.0.tgz" checksum: 10/e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 languageName: node linkType: hard -"update-browserslist-db@npm:^1.2.0": +"update-browserslist-db@npm:^1.2.3": version: 1.2.3 - resolution: "update-browserslist-db@npm:1.2.3" + resolution: "update-browserslist-db@npm:1.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fupdate-browserslist-db%2F-%2Fupdate-browserslist-db-1.2.3.tgz" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -5991,7 +6322,7 @@ __metadata: "uri-js@npm:^4.2.2": version: 4.4.1 - resolution: "uri-js@npm:4.4.1" + resolution: "uri-js@npm:4.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Furi-js%2F-%2Furi-js-4.4.1.tgz" dependencies: punycode: "npm:^2.1.0" checksum: 10/b271ca7e3d46b7160222e3afa3e531505161c9a4e097febae9664e4b59912f4cbe94861361a4175edac3a03fee99d91e44b6a58c17a634bc5a664b19fc76fbcb @@ -6000,7 +6331,7 @@ __metadata: "url-parse@npm:^1.5.3": version: 1.5.10 - resolution: "url-parse@npm:1.5.10" + resolution: "url-parse@npm:1.5.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Furl-parse%2F-%2Furl-parse-1.5.10.tgz" dependencies: querystringify: "npm:^2.1.1" requires-port: "npm:^1.0.0" @@ -6010,7 +6341,7 @@ __metadata: "vfile-message@npm:^4.0.0": version: 4.0.3 - resolution: "vfile-message@npm:4.0.3" + resolution: "vfile-message@npm:4.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvfile-message%2F-%2Fvfile-message-4.0.3.tgz" dependencies: "@types/unist": "npm:^3.0.0" unist-util-stringify-position: "npm:^4.0.0" @@ -6020,7 +6351,7 @@ __metadata: "vfile@npm:^6.0.0": version: 6.0.3 - resolution: "vfile@npm:6.0.3" + resolution: "vfile@npm:6.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvfile%2F-%2Fvfile-6.0.3.tgz" dependencies: "@types/unist": "npm:^3.0.0" vfile-message: "npm:^4.0.0" @@ -6028,9 +6359,66 @@ __metadata: languageName: node linkType: hard -"vite@npm:^6.0.0 || ^7.0.0, vite@npm:^7.2.2": - version: 7.3.1 - resolution: "vite@npm:7.3.1" +"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0": + version: 8.0.10 + resolution: "vite@npm:8.0.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvite%2F-%2Fvite-8.0.10.tgz" + dependencies: + fsevents: "npm:~2.3.3" + lightningcss: "npm:^1.32.0" + picomatch: "npm:^4.0.4" + postcss: "npm:^8.5.10" + rolldown: "npm:1.0.0-rc.17" + tinyglobby: "npm:^0.2.16" + peerDependencies: + "@types/node": ^20.19.0 || >=22.12.0 + "@vitejs/devtools": ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: ">=1.21.0" + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + "@vitejs/devtools": + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10/64c6fa4efa1a9ca3e1cacbcca16487b75ea25d62efbfb99c4e571b5f716296dc4f8af825eb624e273b11c3bee4e87daec35815fb6a56e01c843659c003ed2bcd + languageName: node + linkType: hard + +"vite@npm:^7.2.2": + version: 7.3.2 + resolution: "vite@npm:7.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvite%2F-%2Fvite-7.3.2.tgz" dependencies: esbuild: "npm:^0.27.0" fdir: "npm:^6.5.0" @@ -6079,44 +6467,47 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/62e48ffa4283b688f0049005405a004447ad38ffc99a0efea4c3aa9b7eed739f7402b43f00668c0ee5a895b684dc953d62f0722d8a92c5b2f6c95f051bceb208 + checksum: 10/c5f7a9a60011c41c836cedf31c8ee7624102aff9b6a7f3aab2ff47639721bba0916f81994c3a3ea6577a16c4f0dfee1e7dbd244e0da8edd5954e3c6d48daaaa2 languageName: node linkType: hard "vitest@npm:^4.0.14": - version: 4.0.18 - resolution: "vitest@npm:4.0.18" - dependencies: - "@vitest/expect": "npm:4.0.18" - "@vitest/mocker": "npm:4.0.18" - "@vitest/pretty-format": "npm:4.0.18" - "@vitest/runner": "npm:4.0.18" - "@vitest/snapshot": "npm:4.0.18" - "@vitest/spy": "npm:4.0.18" - "@vitest/utils": "npm:4.0.18" - es-module-lexer: "npm:^1.7.0" - expect-type: "npm:^1.2.2" + version: 4.1.5 + resolution: "vitest@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvitest%2F-%2Fvitest-4.1.5.tgz" + dependencies: + "@vitest/expect": "npm:4.1.5" + "@vitest/mocker": "npm:4.1.5" + "@vitest/pretty-format": "npm:4.1.5" + "@vitest/runner": "npm:4.1.5" + "@vitest/snapshot": "npm:4.1.5" + "@vitest/spy": "npm:4.1.5" + "@vitest/utils": "npm:4.1.5" + es-module-lexer: "npm:^2.0.0" + expect-type: "npm:^1.3.0" magic-string: "npm:^0.30.21" obug: "npm:^2.1.1" pathe: "npm:^2.0.3" picomatch: "npm:^4.0.3" - std-env: "npm:^3.10.0" + std-env: "npm:^4.0.0-rc.1" tinybench: "npm:^2.9.0" tinyexec: "npm:^1.0.2" tinyglobby: "npm:^0.2.15" - tinyrainbow: "npm:^3.0.3" - vite: "npm:^6.0.0 || ^7.0.0" + tinyrainbow: "npm:^3.1.0" + vite: "npm:^6.0.0 || ^7.0.0 || ^8.0.0" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" "@opentelemetry/api": ^1.9.0 "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 - "@vitest/browser-playwright": 4.0.18 - "@vitest/browser-preview": 4.0.18 - "@vitest/browser-webdriverio": 4.0.18 - "@vitest/ui": 4.0.18 + "@vitest/browser-playwright": 4.1.5 + "@vitest/browser-preview": 4.1.5 + "@vitest/browser-webdriverio": 4.1.5 + "@vitest/coverage-istanbul": 4.1.5 + "@vitest/coverage-v8": 4.1.5 + "@vitest/ui": 4.1.5 happy-dom: "*" jsdom: "*" + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: "@edge-runtime/vm": optional: true @@ -6130,21 +6521,27 @@ __metadata: optional: true "@vitest/browser-webdriverio": optional: true + "@vitest/coverage-istanbul": + optional: true + "@vitest/coverage-v8": + optional: true "@vitest/ui": optional: true happy-dom: optional: true jsdom: optional: true + vite: + optional: false bin: vitest: vitest.mjs - checksum: 10/6c6464ebcf3af83546862896fd1b5f10cb6607261bffce39df60033a288b8c1687ae1dd20002b6e4997a7a05303376d1eb58ce20afe63be052529a4378a8c165 + checksum: 10/8b768514993d8908fc9b5f2d619943d23b81aaba9443132583bd58aeb441bf76d152961326de9ca328ff0efcddbf8a58f4568a7b66a4391202542ed772613d81 languageName: node linkType: hard "w3c-xmlserializer@npm:^5.0.0": version: 5.0.0 - resolution: "w3c-xmlserializer@npm:5.0.0" + resolution: "w3c-xmlserializer@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fw3c-xmlserializer%2F-%2Fw3c-xmlserializer-5.0.0.tgz" dependencies: xml-name-validator: "npm:^5.0.0" checksum: 10/d78f59e6b4f924aa53b6dfc56949959229cae7fe05ea9374eb38d11edcec01398b7f5d7a12576bd5acc57ff446abb5c9115cd83b9d882555015437cf858d42f0 @@ -6153,14 +6550,14 @@ __metadata: "webidl-conversions@npm:^7.0.0": version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" + resolution: "webidl-conversions@npm:7.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwebidl-conversions%2F-%2Fwebidl-conversions-7.0.0.tgz" checksum: 10/4c4f65472c010eddbe648c11b977d048dd96956a625f7f8b9d64e1b30c3c1f23ea1acfd654648426ce5c743c2108a5a757c0592f02902cf7367adb7d14e67721 languageName: node linkType: hard "whatwg-encoding@npm:^3.1.1": version: 3.1.1 - resolution: "whatwg-encoding@npm:3.1.1" + resolution: "whatwg-encoding@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhatwg-encoding%2F-%2Fwhatwg-encoding-3.1.1.tgz" dependencies: iconv-lite: "npm:0.6.3" checksum: 10/bbef815eb67f91487c7f2ef96329743f5fd8357d7d62b1119237d25d41c7e452dff8197235b2d3c031365a17f61d3bb73ca49d0ed1582475aa4a670815e79534 @@ -6169,14 +6566,14 @@ __metadata: "whatwg-mimetype@npm:^4.0.0": version: 4.0.0 - resolution: "whatwg-mimetype@npm:4.0.0" + resolution: "whatwg-mimetype@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhatwg-mimetype%2F-%2Fwhatwg-mimetype-4.0.0.tgz" checksum: 10/894a618e2d90bf444b6f309f3ceb6e58cf21b2beaa00c8b333696958c4076f0c7b30b9d33413c9ffff7c5832a0a0c8569e5bb347ef44beded72aeefd0acd62e8 languageName: node linkType: hard "whatwg-url@npm:^14.0.0": version: 14.2.0 - resolution: "whatwg-url@npm:14.2.0" + resolution: "whatwg-url@npm:14.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhatwg-url%2F-%2Fwhatwg-url-14.2.0.tgz" dependencies: tr46: "npm:^5.1.0" webidl-conversions: "npm:^7.0.0" @@ -6186,7 +6583,7 @@ __metadata: "which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": version: 1.1.1 - resolution: "which-boxed-primitive@npm:1.1.1" + resolution: "which-boxed-primitive@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-boxed-primitive%2F-%2Fwhich-boxed-primitive-1.1.1.tgz" dependencies: is-bigint: "npm:^1.1.0" is-boolean-object: "npm:^1.2.1" @@ -6199,7 +6596,7 @@ __metadata: "which-builtin-type@npm:^1.2.1": version: 1.2.1 - resolution: "which-builtin-type@npm:1.2.1" + resolution: "which-builtin-type@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-builtin-type%2F-%2Fwhich-builtin-type-1.2.1.tgz" dependencies: call-bound: "npm:^1.0.2" function.prototype.name: "npm:^1.1.6" @@ -6220,7 +6617,7 @@ __metadata: "which-collection@npm:^1.0.2": version: 1.0.2 - resolution: "which-collection@npm:1.0.2" + resolution: "which-collection@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-collection%2F-%2Fwhich-collection-1.0.2.tgz" dependencies: is-map: "npm:^2.0.3" is-set: "npm:^2.0.3" @@ -6232,7 +6629,7 @@ __metadata: "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": version: 1.1.20 - resolution: "which-typed-array@npm:1.1.20" + resolution: "which-typed-array@npm:1.1.20::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-typed-array%2F-%2Fwhich-typed-array-1.1.20.tgz" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -6247,7 +6644,7 @@ __metadata: "which@npm:^2.0.1": version: 2.0.2 - resolution: "which@npm:2.0.2" + resolution: "which@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich%2F-%2Fwhich-2.0.2.tgz" dependencies: isexe: "npm:^2.0.0" bin: @@ -6258,7 +6655,7 @@ __metadata: "which@npm:^6.0.0": version: 6.0.1 - resolution: "which@npm:6.0.1" + resolution: "which@npm:6.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich%2F-%2Fwhich-6.0.1.tgz" dependencies: isexe: "npm:^4.0.0" bin: @@ -6269,7 +6666,7 @@ __metadata: "why-is-node-running@npm:^2.3.0": version: 2.3.0 - resolution: "why-is-node-running@npm:2.3.0" + resolution: "why-is-node-running@npm:2.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhy-is-node-running%2F-%2Fwhy-is-node-running-2.3.0.tgz" dependencies: siginfo: "npm:^2.0.0" stackback: "npm:0.0.2" @@ -6281,14 +6678,14 @@ __metadata: "word-wrap@npm:^1.2.5": version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" + resolution: "word-wrap@npm:1.2.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fword-wrap%2F-%2Fword-wrap-1.2.5.tgz" checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854 languageName: node linkType: hard "ws@npm:^8.18.0": - version: 8.19.0 - resolution: "ws@npm:8.19.0" + version: 8.20.0 + resolution: "ws@npm:8.20.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fws%2F-%2Fws-8.20.0.tgz" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -6297,55 +6694,57 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/26e4901e93abaf73af9f26a93707c95b4845e91a7a347ec8c569e6e9be7f9df066f6c2b817b2d685544e208207898a750b78461e6e8d810c11a370771450c31b + checksum: 10/b7ab934b21ffdea9f25a5af5097e8c1ec7625db553bca026c5a23e35b7c236f3fb89782f2b57fab9da553864512f9aa7d245827ef998d26ffa1b2187a19a6d10 languageName: node linkType: hard "xml-name-validator@npm:^5.0.0": version: 5.0.0 - resolution: "xml-name-validator@npm:5.0.0" + resolution: "xml-name-validator@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fxml-name-validator%2F-%2Fxml-name-validator-5.0.0.tgz" checksum: 10/43f30f3f6786e406dd665acf08cd742d5f8a46486bd72517edb04b27d1bcd1599664c2a4a99fc3f1e56a3194bff588b12f178b7972bc45c8047bdc4c3ac8d4a1 languageName: node linkType: hard "xmlchars@npm:^2.2.0": version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" + resolution: "xmlchars@npm:2.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fxmlchars%2F-%2Fxmlchars-2.2.0.tgz" checksum: 10/4ad5924974efd004a47cce6acf5c0269aee0e62f9a805a426db3337af7bcbd331099df174b024ace4fb18971b8a56de386d2e73a1c4b020e3abd63a4a9b917f1 languageName: node linkType: hard "yallist@npm:^3.0.2": version: 3.1.1 - resolution: "yallist@npm:3.1.1" + resolution: "yallist@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyallist%2F-%2Fyallist-3.1.1.tgz" checksum: 10/9af0a4329c3c6b779ac4736c69fae4190ac03029fa27c1aef4e6bcc92119b73dea6fe5db5fe881fb0ce2a0e9539a42cdf60c7c21eda04d1a0b8c082e38509efb languageName: node linkType: hard -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10/4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd - languageName: node - linkType: hard - "yallist@npm:^5.0.0": version: 5.0.0 - resolution: "yallist@npm:5.0.0" + resolution: "yallist@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyallist%2F-%2Fyallist-5.0.0.tgz" checksum: 10/1884d272d485845ad04759a255c71775db0fac56308764b4c77ea56a20d56679fad340213054c8c9c9c26fcfd4c4b2a90df993b7e0aaf3cdb73c618d1d1a802a languageName: node linkType: hard +"yaml@npm:^2.7.0": + version: 2.8.4 + resolution: "yaml@npm:2.8.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyaml%2F-%2Fyaml-2.8.4.tgz" + bin: + yaml: bin.mjs + checksum: 10/1ccf5d9692c6521141515c2df24c30dd3f633fdb96b548ccc744094893cc58868ad0b3220e040b914a6308c52d258dc2d228a0330343e544a13c871569b92305 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" + resolution: "yocto-queue@npm:0.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyocto-queue%2F-%2Fyocto-queue-0.1.0.tgz" checksum: 10/f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 languageName: node linkType: hard "zod-validation-error@npm:^3.5.0 || ^4.0.0": version: 4.0.2 - resolution: "zod-validation-error@npm:4.0.2" + resolution: "zod-validation-error@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fzod-validation-error%2F-%2Fzod-validation-error-4.0.2.tgz" peerDependencies: zod: ^3.25.0 || ^4.0.0 checksum: 10/5e35ca8ebb4602dcb526e122d7e9fca695c4a479bd97535f3400a732d49160f24f7213a9ed64986fc9dc3a2e8a6c4e1241ec0c4d8a4e3e69ea91a0328ded2192 @@ -6353,15 +6752,15 @@ __metadata: linkType: hard "zod@npm:^3.25.0 || ^4.0.0": - version: 4.3.6 - resolution: "zod@npm:4.3.6" - checksum: 10/25fc0f62e01b557b4644bf0b393bbaf47542ab30877c37837ea8caf314a8713d220c7d7fe51f68ffa72f0e1018ddfa34d96f1973d23033f5a2a5a9b6b9d9da01 + version: 4.4.3 + resolution: "zod@npm:4.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fzod%2F-%2Fzod-4.4.3.tgz" + checksum: 10/804b9a42aa8f35f2b3c5a8dff906291cb749115f83ee2afe3576d70b5b5c53c965365c7f4967690647a9c54af9838ff232a85ff9577a0a36c44b68bc6cdefe36 languageName: node linkType: hard "zwitch@npm:^2.0.0": version: 2.0.4 - resolution: "zwitch@npm:2.0.4" + resolution: "zwitch@npm:2.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fzwitch%2F-%2Fzwitch-2.0.4.tgz" checksum: 10/f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 languageName: node linkType: hard From b26c2ef70519320246819c8e5e42506824e972c0 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Mon, 18 May 2026 18:50:42 +0300 Subject: [PATCH 04/18] second review round - phase 0 --- .yarnrc.yml | 2 +- context_ssot_spec.md | 17 +++--- scripts/build-context.test.js | 59 ++++++++++++++++++ scripts/context/cli-helpers.js | 11 +++- scripts/context/glossary-schema.js | 7 +++ scripts/context/renderers.js | 4 +- scripts/context/template-processor.js | 86 +++++++++++++++------------ scripts/context/ts-extractor.js | 6 +- 8 files changed, 140 insertions(+), 52 deletions(-) diff --git a/.yarnrc.yml b/.yarnrc.yml index be098390..d06c71c9 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -11,4 +11,4 @@ npmMinimalAgeGate: 14d npmPreapprovedPackages: - "@wix/*" -npmRegistryServer: "https://npm.dev.wixpress.com/" +npmRegistryServer: "https://registry.npmjs.org/" diff --git a/context_ssot_spec.md b/context_ssot_spec.md index 30af2adc..58ee6790 100644 --- a/context_ssot_spec.md +++ b/context_ssot_spec.md @@ -859,20 +859,20 @@ If someone edits the glossary or templates but forgets to re-run the build, CI c ## 7. Root `package.json` Changes -Add two new scripts to the root `package.json`: +The `scripts/` directory is registered as a Yarn workspace (`@wix/context-scripts`) with its own `package.json` that holds the `yaml`, `ts-morph`, and `vitest` devDependencies. Three new scripts delegate to it from the root: ```json { "scripts": { - "build:context": "node scripts/build-context.js --all", - "validate:context": "node scripts/validate-context.js --all" - } + "build:context": "yarn workspace @wix/context-scripts run build", + "validate:context": "yarn workspace @wix/context-scripts run validate", + "test:context": "yarn workspace @wix/context-scripts run test" + }, + "workspaces": ["packages/*", "apps/*", "scripts"] } ``` -These sit alongside the existing `build`, `lint`, `test` scripts. They are not wired into the main `build` command — context building is a separate concern that runs less frequently than code builds. - -Per-package `package.json` files are **not modified**. The context scripts are monorepo-level tooling. +This uses Yarn workspace delegation rather than direct `node` invocation so that dependencies resolve correctly through the workspace's own `package.json`. The scripts are not wired into the main `build` command — context building is a separate concern that runs less frequently than code builds. --- @@ -885,10 +885,9 @@ Per-package `package.json` files are **not modified**. The context scripts are m The scripts also use: - `node:fs` / `node:path` / `node:process` — built-in -- `node:url` — for `import.meta.url` resolution - `node:util` — for `parseArgs` (built-in since Node 18.3, available in this repo's Node 22) -**Both packages are added to the root `package.json` devDependencies**, not to individual packages. +**Dependencies live in `scripts/package.json`** (the `@wix/context-scripts` workspace), not in the root `package.json`. --- diff --git a/scripts/build-context.test.js b/scripts/build-context.test.js index e66a1fc2..0d898e07 100644 --- a/scripts/build-context.test.js +++ b/scripts/build-context.test.js @@ -92,6 +92,19 @@ describe('glossary-schema', () => { expect(warnings.some((w) => w.includes('@motion/api-registerEffects'))).toBe(false); }); + it('warns when term has multiple structured fields', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [{ + id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', + params: [{ name: 'a', type: 'string', default: null, description: 'd' }], + fields: [{ name: 'b', type: 'string', required: true, description: 'd' }], + }], + }; + const { warnings } = validateGlossary(data); + expect(warnings.some((w) => w.includes('params') && w.includes('fields'))).toBe(true); + }); + it('exports VALID_CATEGORIES', () => { expect(VALID_CATEGORIES).toContain('trigger'); expect(VALID_CATEGORIES).toContain('preset'); @@ -127,6 +140,13 @@ describe('renderers', () => { expect(result).not.toContain('`foo`'); }); + it('renders — when required: false with default: null', () => { + const params = [{ name: 'x', type: 'string', default: null, required: false, description: 'desc' }]; + const result = renderParamsTable(params); + expect(result).toContain('—'); + expect(result).not.toContain('**required**'); + }); + it('escapes pipe characters in type and description', () => { const params = [{ name: 'axis', type: "'x' | 'y'", default: "'x'", description: "Axis: x | y" }]; const result = renderParamsTable(params); @@ -351,12 +371,51 @@ describe('template-processor', () => { expect(errors.length).toBe(2); }); + it('handles nested code fences (4-backtick wrapping 3-backtick)', () => { + const content = [ + '# Test', + '````markdown', + '```typescript', + '{{term:trigger-hover.name}}', + '```', + '````', + '{{term:trigger-hover.name}}', + ].join('\n'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('{{term:trigger-hover.name}}'); + expect(output).toMatch(/````\nhover$/m); + }); + + it('does not close backtick fence with tilde fence', () => { + const content = [ + '```typescript', + '{{term:trigger-hover.name}}', + '~~~', + '{{term:trigger-hover.name}}', + '```', + '{{term:trigger-hover.name}}', + ].join('\n'); + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + const lines = output.split('\n'); + expect(lines[1]).toBe('{{term:trigger-hover.name}}'); + expect(lines[3]).toBe('{{term:trigger-hover.name}}'); + expect(lines[5]).toBe('hover'); + }); + it('reports unterminated code fence', () => { const content = '# Title\n\n```typescript\nconst x = 1;\n'; const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); expect(errors.some((e) => e.includes('Unterminated code fence'))).toBe(true); }); + it('warns on unterminated frontmatter', () => { + const content = '---\nname: test\nno closing delimiter\n'; + const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors.some((e) => e.includes('Unterminated frontmatter'))).toBe(true); + }); + it('preserves failed include marker in output', () => { const content = 'Before {{include:fragments/does-not-exist.md}} After'; const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); diff --git a/scripts/context/cli-helpers.js b/scripts/context/cli-helpers.js index d08a6573..23ddba32 100644 --- a/scripts/context/cli-helpers.js +++ b/scripts/context/cli-helpers.js @@ -12,5 +12,14 @@ export function discoverPackages(flags) { return existsSync(contextDir) && statSync(contextDir).isDirectory(); }); } - return flags.package || []; + + const names = flags.package || []; + for (const name of names) { + const pkgDir = join(PACKAGES_DIR, name); + if (!existsSync(pkgDir)) { + console.error(`Package directory not found: ${pkgDir}`); + process.exit(1); + } + } + return names; } diff --git a/scripts/context/glossary-schema.js b/scripts/context/glossary-schema.js index 6b6ccebe..3af72b17 100644 --- a/scripts/context/glossary-schema.js +++ b/scripts/context/glossary-schema.js @@ -107,6 +107,13 @@ function validateTerms(terms, errors, warnings) { validateTermValues(term.values, term.id ?? i, errors); } + const structuredKeys = ['params', 'fields', 'values'].filter((k) => Array.isArray(term[k]) && term[k].length > 0); + if (structuredKeys.length > 1) { + warnings.push( + `${termLabel}: has multiple structured fields (${structuredKeys.join(', ')}); only one of params/fields/values should be present`, + ); + } + }); const allIds = new Set(terms.filter((t) => t.id).map((t) => t.id)); diff --git a/scripts/context/renderers.js b/scripts/context/renderers.js index f9d22c6f..0cf10fc0 100644 --- a/scripts/context/renderers.js +++ b/scripts/context/renderers.js @@ -9,8 +9,10 @@ export function renderParamsTable(params) { const name = `\`${p.name}\``; const type = `\`${escapeCell(p.type)}\``; let def; - if (p.required === true || p.default === null) { + if (p.required === true) { def = '**required**'; + } else if (p.default === null) { + def = p.required === false ? '—' : '**required**'; } else if (p.default === 'undefined') { def = '—'; } else { diff --git a/scripts/context/template-processor.js b/scripts/context/template-processor.js index 91f5bd22..bae95051 100644 --- a/scripts/context/template-processor.js +++ b/scripts/context/template-processor.js @@ -2,10 +2,13 @@ import { readFileSync } from 'node:fs'; import { resolve } from 'node:path'; import { resolveRenderer } from './renderers.js'; -const MARKER_RE = /(? { + const markerRe = /(? { if (type === 'term') { const dotIdx = arg.indexOf('.'); if (dotIdx === -1) { @@ -43,73 +46,78 @@ function processMarkers(line, termIndex, templatesDir, errors, resolveIncludes, if (options.verbose) { console.log(` {{include:${arg}}} → resolved`); } - return processInclude(fileContent, termIndex, templatesDir, errors); + return processLines(fileContent.split('\n'), termIndex, templatesDir, errors, false).result.join('\n'); } return match; }); + + return processed.replaceAll(ESCAPE_PLACEHOLDER, '{{'); } -function processInclude(content, termIndex, templatesDir, errors) { - const lines = content.split('\n'); +function tryToggleFence(trimmed, currentFence) { + const fenceMatch = trimmed.match(/^(`{3,}|~{3,})/); + if (!fenceMatch) return { fence: currentFence, matched: false }; + + const fence = fenceMatch[1]; + if (currentFence === null) { + return { fence, matched: true }; + } + if (fence[0] === currentFence[0] && fence.length >= currentFence.length && trimmed.slice(fence.length).trim() === '') { + return { fence: null, matched: true }; + } + return { fence: currentFence, matched: false }; +} + +function processLines(lines, termIndex, templatesDir, errors, resolveIncludes, options = {}) { const result = []; - let inCodeBlock = false; + let codeBlockFence = null; for (const line of lines) { const trimmed = line.trimStart(); - if (trimmed.startsWith('```') || trimmed.startsWith('~~~')) { - inCodeBlock = !inCodeBlock; - result.push(line); - continue; - } - if (inCodeBlock) { + const { fence, matched } = tryToggleFence(trimmed, codeBlockFence); + codeBlockFence = fence; + + if (matched || codeBlockFence !== null) { result.push(line); continue; } - result.push(processMarkers(line, termIndex, templatesDir, errors, false)); + + result.push(processMarkers(line, termIndex, templatesDir, errors, resolveIncludes, options)); } - return result.join('\n'); + return { result, unterminatedFence: codeBlockFence !== null }; } export function processTemplate(content, termIndex, templatesDir, options = {}) { const errors = []; const lines = content.split('\n'); - const result = []; - let inCodeBlock = false; - let inFrontmatter = lines.length > 0 && lines[0].trim() === '---'; - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; + let inFrontmatter = lines.length > 0 && lines[0].trim() === '---'; + let frontmatterEnd = 0; - if (inFrontmatter) { - result.push(line); - if (i > 0 && line.trim() === '---') { - inFrontmatter = false; + if (inFrontmatter) { + for (let i = 1; i < lines.length; i++) { + if (lines[i].trim() === '---') { + frontmatterEnd = i + 1; + break; } - continue; } - - const trimmed = line.trimStart(); - if (trimmed.startsWith('```') || trimmed.startsWith('~~~')) { - inCodeBlock = !inCodeBlock; - result.push(line); - continue; + if (frontmatterEnd === 0) { + errors.push('Unterminated frontmatter (opening --- without closing ---)'); + frontmatterEnd = lines.length; } + } - if (inCodeBlock) { - result.push(line); - continue; - } + const frontmatterLines = lines.slice(0, frontmatterEnd); + const bodyLines = lines.slice(frontmatterEnd); - result.push(processMarkers(line, termIndex, templatesDir, errors, true, options)); - } + const { result: processedBody, unterminatedFence } = processLines(bodyLines, termIndex, templatesDir, errors, true, options); - if (inCodeBlock) { + if (unterminatedFence) { errors.push('Unterminated code fence (odd number of ``` or ~~~ lines)'); } - const output = result.join('\n').replace(/\\\{\{/g, '{{'); - + const output = [...frontmatterLines, ...processedBody].join('\n'); return { output, errors }; } diff --git a/scripts/context/ts-extractor.js b/scripts/context/ts-extractor.js index 2c9350e1..b4b885fe 100644 --- a/scripts/context/ts-extractor.js +++ b/scripts/context/ts-extractor.js @@ -4,8 +4,12 @@ import { existsSync } from 'node:fs'; export function createProject(packageDir) { const tsConfigPath = join(packageDir, 'tsconfig.json'); + const hasTsConfig = existsSync(tsConfigPath); + if (!hasTsConfig) { + console.warn(`Warning: No tsconfig.json found at ${tsConfigPath} — using default compiler options`); + } const project = new Project({ - tsConfigFilePath: existsSync(tsConfigPath) ? tsConfigPath : undefined, + tsConfigFilePath: hasTsConfig ? tsConfigPath : undefined, skipAddingFilesFromTsConfig: true, }); return project; From cbff15c357d4ecacf80bbbdd2f745b54b1dbdd65 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Mon, 18 May 2026 19:17:39 +0300 Subject: [PATCH 05/18] 3rd review round - phase 0 --- scripts/build-context.js | 17 ++--- scripts/build-context.test.js | 76 +++++++++++++++++++ scripts/context/cli-helpers.js | 3 +- scripts/context/glossary-loader.js | 6 +- scripts/context/glossary-schema.js | 16 ++-- scripts/context/renderers.js | 8 ++ scripts/context/template-processor.js | 2 +- scripts/context/ts-extractor.js | 41 +++++----- scripts/test-fixtures/malformed.yaml | 5 ++ .../fragments/with-nested-include.md | 2 + scripts/validate-context.js | 8 +- 11 files changed, 143 insertions(+), 41 deletions(-) create mode 100644 scripts/test-fixtures/malformed.yaml create mode 100644 scripts/test-fixtures/templates/fragments/with-nested-include.md diff --git a/scripts/build-context.js b/scripts/build-context.js index 9ba32fbb..a413a4ca 100644 --- a/scripts/build-context.js +++ b/scripts/build-context.js @@ -3,6 +3,7 @@ import { readFileSync, writeFileSync, mkdirSync, readdirSync, existsSync } from import { resolve, join, relative, dirname } from 'node:path'; import { loadAndValidateGlossary, buildTermIndex } from './context/glossary-loader.js'; import { processTemplate } from './context/template-processor.js'; +import { generateHeader } from './context/renderers.js'; import { discoverPackages } from './context/cli-helpers.js'; const { values: flags } = parseArgs({ @@ -18,7 +19,13 @@ const { values: flags } = parseArgs({ const REPO_ROOT = resolve(import.meta.dirname, '..'); const PACKAGES_DIR = join(REPO_ROOT, 'packages'); -const packages = discoverPackages(flags); +let packages; +try { + packages = discoverPackages(flags); +} catch (e) { + console.error(e.message); + process.exit(1); +} const OUTPUT_SUBDIRS = ['rules', 'docs']; @@ -45,14 +52,6 @@ function discoverTemplates(templatesDir) { return files; } -function generateHeader(templateRelPath) { - return [ - '', - ``, - '', - ].join('\n'); -} - function buildPackage(pkgName) { const pkgDir = join(PACKAGES_DIR, pkgName); const glossaryPath = join(pkgDir, 'context', 'glossary.yaml'); diff --git a/scripts/build-context.test.js b/scripts/build-context.test.js index 0d898e07..82dc12a8 100644 --- a/scripts/build-context.test.js +++ b/scripts/build-context.test.js @@ -11,9 +11,11 @@ import { renderCode, renderSignature, resolveRenderer, + generateHeader, } from './context/renderers.js'; import { processTemplate } from './context/template-processor.js'; import { createProject, validateTermAgainstSource } from './context/ts-extractor.js'; +import { discoverPackages } from './context/cli-helpers.js'; const FIXTURES_DIR = resolve(import.meta.dirname, 'test-fixtures'); const TEMPLATES_DIR = join(FIXTURES_DIR, 'templates'); @@ -105,6 +107,18 @@ describe('glossary-schema', () => { expect(warnings.some((w) => w.includes('params') && w.includes('fields'))).toBe(true); }); + it('warns on contradictory default:null + required:false', () => { + const data = { + meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, + terms: [{ + id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', + params: [{ name: 'p', type: 'string', default: null, required: false, description: 'd' }], + }], + }; + const { warnings } = validateGlossary(data); + expect(warnings.some((w) => w.includes('null') && w.includes('required'))).toBe(true); + }); + it('exports VALID_CATEGORIES', () => { expect(VALID_CATEGORIES).toContain('trigger'); expect(VALID_CATEGORIES).toContain('preset'); @@ -147,6 +161,22 @@ describe('renderers', () => { expect(result).not.toContain('**required**'); }); + it('renders **required** when required is omitted and default is null', () => { + const params = [{ name: 'x', type: 'string', default: null, description: 'desc' }]; + const result = renderParamsTable(params); + expect(result).toContain('**required**'); + }); + + it('renders falsy defaults correctly (0, false)', () => { + const params = [ + { name: 'a', type: 'number', default: 0, description: 'zero' }, + { name: 'b', type: 'boolean', default: false, description: 'false val' }, + ]; + const result = renderParamsTable(params); + expect(result).toContain('`0`'); + expect(result).toContain('`false`'); + }); + it('escapes pipe characters in type and description', () => { const params = [{ name: 'axis', type: "'x' | 'y'", default: "'x'", description: "Axis: x | y" }]; const result = renderParamsTable(params); @@ -267,6 +297,20 @@ describe('renderers', () => { expect(result.error).toContain('no "name" field'); }); }); + + describe('generateHeader', () => { + it('produces a header pointing to the source template', () => { + const header = generateHeader('rules/triggers.md'); + expect(header).toContain('GENERATED FILE'); + expect(header).toContain('context/templates/rules/triggers.md'); + expect(header).toMatch(/^$/m); + }); + + it('ends with a blank line for clean separation', () => { + const header = generateHeader('docs/README.md'); + expect(header.endsWith('\n')).toBe(true); + }); + }); }); describe('template-processor', () => { @@ -422,6 +466,14 @@ describe('template-processor', () => { expect(errors.length).toBeGreaterThan(0); expect(output).toContain('{{include:fragments/does-not-exist.md}}'); }); + + it('does not resolve includes inside included files (single-level nesting)', () => { + const content = '{{include:fragments/with-nested-include.md}}'; + const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); + expect(errors).toHaveLength(0); + expect(output).toContain('Nested fragment content.'); + expect(output).toContain('{{include:fragments/intro.md}}'); + }); }); describe('ts-extractor', () => { @@ -542,6 +594,30 @@ describe('ts-extractor', () => { }); }); +describe('glossary-loader', () => { + it('throws a descriptive error for malformed YAML', () => { + const malformedPath = join(FIXTURES_DIR, 'malformed.yaml'); + expect(() => loadGlossaryFromFile(malformedPath)).toThrow('Failed to parse YAML'); + }); +}); + +describe('cli-helpers', () => { + it('throws on nonexistent package name', () => { + expect(() => discoverPackages({ package: ['nonexistent-pkg-xyz'] })) + .toThrow('Package directory not found'); + }); + + it('returns empty array when no packages have context/', () => { + const result = discoverPackages({ all: true }); + expect(Array.isArray(result)).toBe(true); + }); + + it('returns empty array when no flags provided', () => { + const result = discoverPackages({}); + expect(result).toEqual([]); + }); +}); + describe('integration — build pipeline', () => { let termIndex; diff --git a/scripts/context/cli-helpers.js b/scripts/context/cli-helpers.js index 23ddba32..7caeff63 100644 --- a/scripts/context/cli-helpers.js +++ b/scripts/context/cli-helpers.js @@ -17,8 +17,7 @@ export function discoverPackages(flags) { for (const name of names) { const pkgDir = join(PACKAGES_DIR, name); if (!existsSync(pkgDir)) { - console.error(`Package directory not found: ${pkgDir}`); - process.exit(1); + throw new Error(`Package directory not found: ${pkgDir}`); } } return names; diff --git a/scripts/context/glossary-loader.js b/scripts/context/glossary-loader.js index dcec3b9c..e178c089 100644 --- a/scripts/context/glossary-loader.js +++ b/scripts/context/glossary-loader.js @@ -12,7 +12,11 @@ export function buildTermIndex(terms) { export function loadGlossaryFromFile(filePath) { const raw = readFileSync(filePath, 'utf-8'); - return parse(raw); + try { + return parse(raw); + } catch (e) { + throw new Error(`Failed to parse YAML in ${filePath}: ${e.message}`); + } } export function loadAndValidateGlossary(filePath) { diff --git a/scripts/context/glossary-schema.js b/scripts/context/glossary-schema.js index 3af72b17..2b30e69e 100644 --- a/scripts/context/glossary-schema.js +++ b/scripts/context/glossary-schema.js @@ -31,14 +31,16 @@ function validateMeta(meta, errors) { if (err) errors.push(err); } -function validateTermParams(params, termId, errors) { +function validateTermParams(params, termId, errors, warnings) { params.forEach((param, i) => { - const err = checkRequiredKeys( - param, - REQUIRED_PARAM_FIELDS, - `term "${termId}" params[${i}]`, - ); + const label = `term "${termId}" params[${i}]`; + const err = checkRequiredKeys(param, REQUIRED_PARAM_FIELDS, label); if (err) errors.push(err); + if (param.default === null && param.required === false) { + warnings.push( + `${label} ("${param.name}"): default is null (implies required) but required is false`, + ); + } }); } @@ -96,7 +98,7 @@ function validateTerms(terms, errors, warnings) { } if (term.params && Array.isArray(term.params)) { - validateTermParams(term.params, term.id ?? i, errors); + validateTermParams(term.params, term.id ?? i, errors, warnings); } if (term.fields && Array.isArray(term.fields)) { diff --git a/scripts/context/renderers.js b/scripts/context/renderers.js index 0cf10fc0..072b70ab 100644 --- a/scripts/context/renderers.js +++ b/scripts/context/renderers.js @@ -74,6 +74,14 @@ export function renderSignature(signature) { return `\`${signature}\``; } +export function generateHeader(relPath) { + return [ + '', + ``, + '', + ].join('\n'); +} + const TEXT_RENDERERS = { name: { field: 'name', required: true }, llm: { field: 'llm', required: true }, diff --git a/scripts/context/template-processor.js b/scripts/context/template-processor.js index bae95051..eaef738d 100644 --- a/scripts/context/template-processor.js +++ b/scripts/context/template-processor.js @@ -5,7 +5,7 @@ import { resolveRenderer } from './renderers.js'; const ESCAPE_PLACEHOLDER = '\x00ESC_BRACE\x00'; function processMarkers(line, termIndex, templatesDir, errors, resolveIncludes, options = {}) { - const markerRe = /(? { diff --git a/scripts/context/ts-extractor.js b/scripts/context/ts-extractor.js index b4b885fe..476b2e35 100644 --- a/scripts/context/ts-extractor.js +++ b/scripts/context/ts-extractor.js @@ -25,26 +25,25 @@ export function validateTermAgainstSource(term, project, packageDir) { const { sourceFile: relPath, sourceName } = term; - try { - const absPath = resolve(packageDir, relPath); - if (!existsSync(absPath)) { - errors.push({ message: `Source file not found: ${relPath}`, check: 'file-exists' }); - return { errors, warnings }; - } + const absPath = resolve(packageDir, relPath); + if (!existsSync(absPath)) { + errors.push({ message: `Source file not found: ${relPath}`, check: 'file-exists' }); + return { errors, warnings }; + } - // addSourceFileAtPathIfExists returns null if already added; fall back to getSourceFile for reuse - const sf = project.addSourceFileAtPathIfExists(absPath) ?? project.getSourceFile(absPath); - if (!sf) { - errors.push({ message: `Could not add source file: ${relPath}`, check: 'file-exists' }); - return { errors, warnings }; - } + const sf = project.addSourceFileAtPathIfExists(absPath) ?? project.getSourceFile(absPath); + if (!sf) { + errors.push({ message: `Could not add source file: ${relPath}`, check: 'file-exists' }); + return { errors, warnings }; + } - const symbol = findSymbol(sf, sourceName); - if (!symbol) { - errors.push({ message: `Symbol "${sourceName}" not found in ${relPath}`, check: 'symbol-exists' }); - return { errors, warnings }; - } + const symbol = findSymbol(sf, sourceName); + if (!symbol) { + errors.push({ message: `Symbol "${sourceName}" not found in ${relPath}`, check: 'symbol-exists' }); + return { errors, warnings }; + } + try { if (term.params || term.fields) { validateProperties(symbol, term, errors, warnings); } @@ -53,15 +52,17 @@ export function validateTermAgainstSource(term, project, packageDir) { validateEnumValues(symbol, term, errors, warnings); } } catch (e) { - errors.push({ message: `ts-morph error for "${sourceName}" in ${relPath}: ${e.message}`, check: 'ts-morph' }); + errors.push({ message: `Type analysis error for "${sourceName}" in ${relPath}: ${e.message}`, check: 'ts-morph' }); } return { errors, warnings }; } function findSymbol(sf, sourceName) { - if (sourceName.includes('.')) { - const [className, memberName] = sourceName.split('.'); + const dotIdx = sourceName.indexOf('.'); + if (dotIdx !== -1) { + const className = sourceName.slice(0, dotIdx); + const memberName = sourceName.slice(dotIdx + 1); const cls = sf.getClass(className); if (!cls) return null; return cls.getMethod(memberName) ?? cls.getProperty(memberName) ?? null; diff --git a/scripts/test-fixtures/malformed.yaml b/scripts/test-fixtures/malformed.yaml new file mode 100644 index 00000000..66a19ff2 --- /dev/null +++ b/scripts/test-fixtures/malformed.yaml @@ -0,0 +1,5 @@ +meta: + package: test + bad: [unterminated +terms: + - id: broken diff --git a/scripts/test-fixtures/templates/fragments/with-nested-include.md b/scripts/test-fixtures/templates/fragments/with-nested-include.md new file mode 100644 index 00000000..346c7b44 --- /dev/null +++ b/scripts/test-fixtures/templates/fragments/with-nested-include.md @@ -0,0 +1,2 @@ +Nested fragment content. +{{include:fragments/intro.md}} diff --git a/scripts/validate-context.js b/scripts/validate-context.js index 9c9d67ad..2bfc9c2a 100644 --- a/scripts/validate-context.js +++ b/scripts/validate-context.js @@ -77,7 +77,13 @@ function validatePackage(pkgName) { }; } -const packages = discoverPackages(flags); +let packages; +try { + packages = discoverPackages(flags); +} catch (e) { + console.error(e.message); + process.exit(1); +} if (packages.length === 0) { console.error('No packages specified. Use --package or --all.'); From ee858e76467aba042ecb30308a4f210772288f93 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Mon, 18 May 2026 19:52:26 +0300 Subject: [PATCH 06/18] 4th review round - phase 0 --- package.json | 2 +- scripts/build-context.js | 7 +- scripts/build-context.test.js | 70 +++++++++++++++++-- scripts/context/cli-helpers.js | 4 +- scripts/context/glossary-loader.js | 4 ++ scripts/context/template-processor.js | 7 ++ scripts/package.json | 1 + scripts/test-fixtures/glossary.yaml | 2 + .../templates/rules/code-block-skip.md | 10 --- .../test-fixtures/templates/rules/errors.md | 5 -- .../test-fixtures/templates/rules/escaped.md | 5 -- scripts/validate-context.js | 17 +++-- 12 files changed, 95 insertions(+), 39 deletions(-) delete mode 100644 scripts/test-fixtures/templates/rules/code-block-skip.md delete mode 100644 scripts/test-fixtures/templates/rules/errors.md delete mode 100644 scripts/test-fixtures/templates/rules/escaped.md diff --git a/package.json b/package.json index 70548ed5..25cb61eb 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "yarn workspaces foreach --all --topological --include 'packages/*' run build && yarn workspaces foreach --all --include 'apps/*' run build", "lint": "eslint . --max-warnings=0", - "test": "yarn workspaces foreach --all --include 'packages/*' run test", + "test": "yarn workspaces foreach --all --include 'packages/*' --include '@wix/context-scripts' run test", "dev:website": "yarn workspace @wix/interact-website run dev", "dev:docs": "yarn workspace @wix/interact-docs run dev", "dev:demo": "yarn workspace @wix/interact-demo run dev", diff --git a/scripts/build-context.js b/scripts/build-context.js index a413a4ca..ed1923ab 100644 --- a/scripts/build-context.js +++ b/scripts/build-context.js @@ -1,10 +1,10 @@ import { parseArgs } from 'node:util'; import { readFileSync, writeFileSync, mkdirSync, readdirSync, existsSync } from 'node:fs'; -import { resolve, join, relative, dirname } from 'node:path'; +import { join, relative, dirname } from 'node:path'; import { loadAndValidateGlossary, buildTermIndex } from './context/glossary-loader.js'; import { processTemplate } from './context/template-processor.js'; import { generateHeader } from './context/renderers.js'; -import { discoverPackages } from './context/cli-helpers.js'; +import { discoverPackages, PACKAGES_DIR } from './context/cli-helpers.js'; const { values: flags } = parseArgs({ options: { @@ -16,9 +16,6 @@ const { values: flags } = parseArgs({ strict: true, }); -const REPO_ROOT = resolve(import.meta.dirname, '..'); -const PACKAGES_DIR = join(REPO_ROOT, 'packages'); - let packages; try { packages = discoverPackages(flags); diff --git a/scripts/build-context.test.js b/scripts/build-context.test.js index 82dc12a8..2d982e3c 100644 --- a/scripts/build-context.test.js +++ b/scripts/build-context.test.js @@ -1,6 +1,7 @@ import { describe, it, expect, beforeAll } from 'vitest'; import { resolve, join } from 'node:path'; import { readFileSync } from 'node:fs'; +import { execFileSync } from 'node:child_process'; import { validateGlossary, VALID_CATEGORIES } from './context/glossary-schema.js'; import { buildTermIndex, loadGlossaryFromFile } from './context/glossary-loader.js'; import { @@ -124,6 +125,11 @@ describe('glossary-schema', () => { expect(VALID_CATEGORIES).toContain('preset'); expect(VALID_CATEGORIES).toHaveLength(7); }); + + it('reports error for null data', () => { + const { errors } = validateGlossary(null); + expect(errors[0]).toContain('non-null object'); + }); }); describe('renderers', () => { @@ -337,7 +343,18 @@ describe('template-processor', () => { }); it('skips markers inside fenced code blocks', () => { - const content = readFileSync(join(TEMPLATES_DIR, 'rules/code-block-skip.md'), 'utf-8'); + const content = [ + '# Code Block Test', + '', + 'Normal marker: {{term:trigger-hover.name}}', + '', + '```typescript', + '// This marker should NOT be replaced:', + '{{term:trigger-viewEnter.name}}', + '```', + '', + 'After code block: {{term:trigger-hover.llm}}', + ].join('\n'); const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); expect(errors).toHaveLength(0); expect(output).toContain('Normal marker: hover'); @@ -346,7 +363,13 @@ describe('template-processor', () => { }); it('handles escaped markers', () => { - const content = readFileSync(join(TEMPLATES_DIR, 'rules/escaped.md'), 'utf-8'); + const content = [ + '# Escaped Markers', + '', + 'This is a literal: \\{{term:trigger-viewEnter.name}}', + '', + 'This is real: {{term:trigger-hover.name}}', + ].join('\n'); const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); expect(errors).toHaveLength(0); expect(output).toContain('This is a literal: {{term:trigger-viewEnter.name}}'); @@ -410,7 +433,13 @@ describe('template-processor', () => { }); it('collects multiple errors from one file', () => { - const content = readFileSync(join(TEMPLATES_DIR, 'rules/errors.md'), 'utf-8'); + const content = [ + '# Errors Test', + '', + 'Unknown term: {{term:nonexistent-term.llm}}', + '', + 'Unknown renderer: {{term:trigger-viewEnter.bad-renderer}}', + ].join('\n'); const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); expect(errors.length).toBe(2); }); @@ -627,7 +656,7 @@ describe('integration — build pipeline', () => { }); it('processes all fixture templates without errors', () => { - const templateFiles = ['rules/triggers.md', 'rules/config.md', 'rules/code-block-skip.md', 'docs/README.md']; + const templateFiles = ['rules/triggers.md', 'rules/config.md', 'docs/README.md']; for (const file of templateFiles) { const content = readFileSync(join(TEMPLATES_DIR, file), 'utf-8'); const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); @@ -645,3 +674,36 @@ describe('integration — build pipeline', () => { expect(output).toContain("`'once'`"); }); }); + +describe('CLI integration', () => { + const scriptsDir = import.meta.dirname; + + it('build-context.js exits 1 with no flags', () => { + let caught; + try { + execFileSync('node', [join(scriptsDir, 'build-context.js')], { encoding: 'utf-8', stdio: 'pipe' }); + } catch (e) { caught = e; } + expect(caught).toBeDefined(); + expect(caught.status).toBe(1); + expect(caught.stderr).toContain('No packages specified'); + }); + + it('build-context.js exits 1 for nonexistent package', () => { + let caught; + try { + execFileSync('node', [join(scriptsDir, 'build-context.js'), '--package', 'nonexistent-pkg-xyz'], { encoding: 'utf-8', stdio: 'pipe' }); + } catch (e) { caught = e; } + expect(caught).toBeDefined(); + expect(caught.status).toBe(1); + expect(caught.stderr).toContain('Package directory not found'); + }); + + it('validate-context.js exits 1 with no flags', () => { + let caught; + try { + execFileSync('node', [join(scriptsDir, 'validate-context.js')], { encoding: 'utf-8', stdio: 'pipe' }); + } catch (e) { caught = e; } + expect(caught).toBeDefined(); + expect(caught.status).toBe(1); + }); +}); diff --git a/scripts/context/cli-helpers.js b/scripts/context/cli-helpers.js index 7caeff63..894dccaf 100644 --- a/scripts/context/cli-helpers.js +++ b/scripts/context/cli-helpers.js @@ -1,8 +1,8 @@ import { readdirSync, statSync, existsSync } from 'node:fs'; import { resolve, join } from 'node:path'; -const REPO_ROOT = resolve(import.meta.dirname, '..', '..'); -const PACKAGES_DIR = join(REPO_ROOT, 'packages'); +export const REPO_ROOT = resolve(import.meta.dirname, '..', '..'); +export const PACKAGES_DIR = join(REPO_ROOT, 'packages'); export function discoverPackages(flags) { if (flags.all) { diff --git a/scripts/context/glossary-loader.js b/scripts/context/glossary-loader.js index e178c089..f40730bb 100644 --- a/scripts/context/glossary-loader.js +++ b/scripts/context/glossary-loader.js @@ -10,6 +10,10 @@ export function buildTermIndex(terms) { return index; } +/** + * Parse a YAML glossary file and return the raw result. + * Not validated — use loadAndValidateGlossary for schema checks. + */ export function loadGlossaryFromFile(filePath) { const raw = readFileSync(filePath, 'utf-8'); try { diff --git a/scripts/context/template-processor.js b/scripts/context/template-processor.js index eaef738d..deeb2a06 100644 --- a/scripts/context/template-processor.js +++ b/scripts/context/template-processor.js @@ -78,6 +78,8 @@ function processLines(lines, termIndex, templatesDir, errors, resolveIncludes, o const { fence, matched } = tryToggleFence(trimmed, codeBlockFence); codeBlockFence = fence; + // Skip marker processing on fence lines (matched=true covers both opening + // and closing fences) and on all lines inside a code block. if (matched || codeBlockFence !== null) { result.push(line); continue; @@ -89,6 +91,11 @@ function processLines(lines, termIndex, templatesDir, errors, resolveIncludes, o return { result, unterminatedFence: codeBlockFence !== null }; } +/** + * Process a template string, resolving term markers and includes. + * Returns { output, errors } — output is always populated (even on error), + * so callers must check errors before using the output. + */ export function processTemplate(content, termIndex, templatesDir, options = {}) { const errors = []; const lines = content.split('\n'); diff --git a/scripts/package.json b/scripts/package.json index 8dbc71d2..a1edf010 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -1,5 +1,6 @@ { "name": "@wix/context-scripts", + "description": "Context SSOT build tooling. Plain JS (no compile step) by design.", "private": true, "type": "module", "scripts": { diff --git a/scripts/test-fixtures/glossary.yaml b/scripts/test-fixtures/glossary.yaml index 04aaa193..f8349410 100644 --- a/scripts/test-fixtures/glossary.yaml +++ b/scripts/test-fixtures/glossary.yaml @@ -84,6 +84,8 @@ terms: description: "Fires every time the trigger activates." - value: "alternate" description: "Alternates forward/reverse." + - value: "state" + description: "Applies CSS state via stateAction." - id: api-create name: Interact.create diff --git a/scripts/test-fixtures/templates/rules/code-block-skip.md b/scripts/test-fixtures/templates/rules/code-block-skip.md deleted file mode 100644 index cd8de2a8..00000000 --- a/scripts/test-fixtures/templates/rules/code-block-skip.md +++ /dev/null @@ -1,10 +0,0 @@ -# Code Block Test - -Normal marker: {{term:trigger-hover.name}} - -```typescript -// This marker should NOT be replaced: -{{term:trigger-viewEnter.name}} -``` - -After code block: {{term:trigger-hover.llm}} diff --git a/scripts/test-fixtures/templates/rules/errors.md b/scripts/test-fixtures/templates/rules/errors.md deleted file mode 100644 index 9be94dc9..00000000 --- a/scripts/test-fixtures/templates/rules/errors.md +++ /dev/null @@ -1,5 +0,0 @@ -# Errors Test - -Unknown term: {{term:nonexistent-term.llm}} - -Unknown renderer: {{term:trigger-viewEnter.bad-renderer}} diff --git a/scripts/test-fixtures/templates/rules/escaped.md b/scripts/test-fixtures/templates/rules/escaped.md deleted file mode 100644 index eab11e06..00000000 --- a/scripts/test-fixtures/templates/rules/escaped.md +++ /dev/null @@ -1,5 +0,0 @@ -# Escaped Markers - -This is a literal: \{{term:trigger-viewEnter.name}} - -This is real: {{term:trigger-hover.name}} diff --git a/scripts/validate-context.js b/scripts/validate-context.js index 2bfc9c2a..729e72f5 100644 --- a/scripts/validate-context.js +++ b/scripts/validate-context.js @@ -1,22 +1,20 @@ import { parseArgs } from 'node:util'; import { existsSync } from 'node:fs'; -import { resolve, join } from 'node:path'; +import { join } from 'node:path'; import { loadAndValidateGlossary } from './context/glossary-loader.js'; import { createProject, validateTermAgainstSource } from './context/ts-extractor.js'; -import { discoverPackages } from './context/cli-helpers.js'; +import { discoverPackages, PACKAGES_DIR } from './context/cli-helpers.js'; const { values: flags } = parseArgs({ options: { package: { type: 'string', multiple: true }, all: { type: 'boolean', default: false }, json: { type: 'boolean', default: false }, + verbose: { type: 'boolean', default: false }, }, strict: true, }); -const REPO_ROOT = resolve(import.meta.dirname, '..'); -const PACKAGES_DIR = join(REPO_ROOT, 'packages'); - function validatePackage(pkgName) { const pkgDir = join(PACKAGES_DIR, pkgName); const glossaryPath = join(pkgDir, 'context', 'glossary.yaml'); @@ -105,8 +103,13 @@ for (const pkgName of packages) { if (report.results) { for (const { term, errors, warnings } of report.results) { if (errors.length === 0 && warnings.length === 0) { - const memberCount = (term.params ?? term.fields ?? term.values ?? []).length; - console.log(`✓ ${term.id} — ${term.sourceName} in ${term.sourceFile}${memberCount ? ` — ${memberCount} members match` : ''}`); + const members = term.params ?? term.fields ?? term.values ?? []; + console.log(`✓ ${term.id} — ${term.sourceName} in ${term.sourceFile}${members.length ? ` — ${members.length} members match` : ''}`); + if (flags.verbose) { + for (const m of members) { + console.log(` ✓ ${m.name ?? m.value}`); + } + } } else { console.log(`✗ ${term.id} — ${term.sourceName} in ${term.sourceFile}`); for (const e of errors) { From e0d31c85afa86b0fac1906f43cb1eab8cba6cfa5 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 14:07:39 +0300 Subject: [PATCH 07/18] removing old stale implementation --- package.json | 8 +- scripts/build-context.js | 147 ---- scripts/build-context.test.js | 709 ------------------ scripts/build-landing.sh | 27 - scripts/context/cli-helpers.js | 24 - scripts/context/glossary-loader.js | 30 - scripts/context/glossary-schema.js | 147 ---- scripts/context/renderers.js | 117 --- scripts/context/template-processor.js | 130 ---- scripts/context/ts-extractor.js | 135 ---- scripts/package.json | 16 - scripts/test-fixtures/glossary.yaml | 116 --- scripts/test-fixtures/malformed.yaml | 5 - scripts/test-fixtures/source/types.ts | 13 - .../test-fixtures/templates/docs/README.md | 11 - .../templates/fragments/intro.md | 3 - .../fragments/with-nested-include.md | 2 - .../test-fixtures/templates/rules/config.md | 19 - .../test-fixtures/templates/rules/triggers.md | 23 - .../templates/rules/with-include.md | 9 - scripts/validate-context.js | 140 ---- scripts/vitest.config.js | 8 - 22 files changed, 2 insertions(+), 1837 deletions(-) delete mode 100644 scripts/build-context.js delete mode 100644 scripts/build-context.test.js delete mode 100755 scripts/build-landing.sh delete mode 100644 scripts/context/cli-helpers.js delete mode 100644 scripts/context/glossary-loader.js delete mode 100644 scripts/context/glossary-schema.js delete mode 100644 scripts/context/renderers.js delete mode 100644 scripts/context/template-processor.js delete mode 100644 scripts/context/ts-extractor.js delete mode 100644 scripts/package.json delete mode 100644 scripts/test-fixtures/glossary.yaml delete mode 100644 scripts/test-fixtures/malformed.yaml delete mode 100644 scripts/test-fixtures/source/types.ts delete mode 100644 scripts/test-fixtures/templates/docs/README.md delete mode 100644 scripts/test-fixtures/templates/fragments/intro.md delete mode 100644 scripts/test-fixtures/templates/fragments/with-nested-include.md delete mode 100644 scripts/test-fixtures/templates/rules/config.md delete mode 100644 scripts/test-fixtures/templates/rules/triggers.md delete mode 100644 scripts/test-fixtures/templates/rules/with-include.md delete mode 100644 scripts/validate-context.js delete mode 100644 scripts/vitest.config.js diff --git a/package.json b/package.json index 72d7f9ae..b98ee690 100644 --- a/package.json +++ b/package.json @@ -8,15 +8,12 @@ "scripts": { "build": "yarn workspaces foreach --all --topological --include 'packages/*' run build && yarn workspaces foreach --all --include 'apps/*' run build", "lint": "eslint . --max-warnings=0", - "test": "yarn workspaces foreach --all --include 'packages/*' --include '@wix/context-scripts' run test", + "test": "yarn workspaces foreach --all --include 'packages/*' run test", "dev:website": "yarn workspace @wix/interact-website run dev", "dev:docs": "yarn workspace @wix/interact-docs run dev", "dev:demo": "yarn workspace @wix/interact-demo run dev", "format": "prettier . --write", "format:check": "prettier . --check", - "build:context": "yarn workspace @wix/context-scripts run build", - "validate:context": "yarn workspace @wix/context-scripts run validate", - "test:context": "yarn workspace @wix/context-scripts run test", "serve": "npx serve apps/website -l 3000", "serve:public": "npx serve apps/website -l tcp://0.0.0.0:3000", "generate:llms": "node scripts/generate-llms.mjs" @@ -49,8 +46,7 @@ "homepage": "https://github.com/wix/interact#readme", "workspaces": [ "packages/*", - "apps/*", - "scripts" + "apps/*" ], "engines": { "node": ">=20" diff --git a/scripts/build-context.js b/scripts/build-context.js deleted file mode 100644 index ed1923ab..00000000 --- a/scripts/build-context.js +++ /dev/null @@ -1,147 +0,0 @@ -import { parseArgs } from 'node:util'; -import { readFileSync, writeFileSync, mkdirSync, readdirSync, existsSync } from 'node:fs'; -import { join, relative, dirname } from 'node:path'; -import { loadAndValidateGlossary, buildTermIndex } from './context/glossary-loader.js'; -import { processTemplate } from './context/template-processor.js'; -import { generateHeader } from './context/renderers.js'; -import { discoverPackages, PACKAGES_DIR } from './context/cli-helpers.js'; - -const { values: flags } = parseArgs({ - options: { - package: { type: 'string', multiple: true }, - all: { type: 'boolean', default: false }, - 'dry-run': { type: 'boolean', default: false }, - verbose: { type: 'boolean', default: false }, - }, - strict: true, -}); - -let packages; -try { - packages = discoverPackages(flags); -} catch (e) { - console.error(e.message); - process.exit(1); -} - -const OUTPUT_SUBDIRS = ['rules', 'docs']; - -function discoverTemplates(templatesDir) { - const files = []; - if (!existsSync(templatesDir)) return files; - - function walk(dir) { - for (const entry of readdirSync(dir, { withFileTypes: true })) { - const fullPath = join(dir, entry.name); - if (entry.isDirectory()) { - walk(fullPath); - } else if (entry.name.endsWith('.md')) { - files.push(fullPath); - } - } - } - - for (const subdir of OUTPUT_SUBDIRS) { - const dir = join(templatesDir, subdir); - if (existsSync(dir)) walk(dir); - } - - return files; -} - -function buildPackage(pkgName) { - const pkgDir = join(PACKAGES_DIR, pkgName); - const glossaryPath = join(pkgDir, 'context', 'glossary.yaml'); - const templatesDir = join(pkgDir, 'context', 'templates'); - - if (!existsSync(glossaryPath)) { - return { errors: [`Glossary not found: ${glossaryPath}`], warnings: [], filesWritten: 0 }; - } - - const { data, errors: schemaErrors, warnings: schemaWarnings } = loadAndValidateGlossary(glossaryPath); - - if (schemaErrors.length > 0) { - return { errors: schemaErrors, warnings: schemaWarnings, filesWritten: 0 }; - } - - const termIndex = buildTermIndex(data.terms); - const templateFiles = discoverTemplates(templatesDir); - const allErrors = []; - const allWarnings = [...schemaWarnings]; - const outputs = []; - - for (const templatePath of templateFiles) { - const templateRelPath = relative(templatesDir, templatePath); - const content = readFileSync(templatePath, 'utf-8'); - const { output, errors } = processTemplate(content, termIndex, templatesDir, { verbose: flags.verbose }); - - if (errors.length > 0) { - allErrors.push(`ERROR in context/templates/${templateRelPath}:`); - for (const err of errors) { - allErrors.push(` ${err}`); - } - } - - const normalizedRelPath = templateRelPath.split(process.platform === 'win32' ? '\\' : '/'); - const outputSubdir = normalizedRelPath[0]; - const outputRelPath = normalizedRelPath.slice(1).join('/'); - const outputPath = join(pkgDir, outputSubdir, outputRelPath); - const headerPath = `${outputSubdir}/${outputRelPath}`; - const finalContent = generateHeader(headerPath) + output; - outputs.push({ path: outputPath, content: finalContent, relPath: headerPath }); - } - - if (allErrors.length > 0) { - return { errors: allErrors, warnings: allWarnings, filesWritten: 0 }; - } - - let filesWritten = 0; - for (const { path: outputPath, content, relPath } of outputs) { - if (flags['dry-run']) { - console.log(` [dry-run] Would write: ${relPath}`); - } else { - mkdirSync(dirname(outputPath), { recursive: true }); - writeFileSync(outputPath, content, 'utf-8'); - if (flags.verbose) { - console.log(` Written: ${relPath}`); - } - } - filesWritten++; - } - - return { errors: [], warnings: allWarnings, filesWritten }; -} - -if (packages.length === 0) { - console.error('No packages specified. Use --package or --all.'); - process.exit(1); -} - -let totalErrors = 0; -let totalFiles = 0; - -for (const pkgName of packages) { - console.log(`\nBuilding context for: ${pkgName}`); - const { errors, warnings, filesWritten } = buildPackage(pkgName); - - for (const w of warnings) { - console.log(` WARNING: ${w}`); - } - - if (errors.length > 0) { - for (const e of errors) { - console.error(` ${e}`); - } - totalErrors += errors.length; - } else { - totalFiles += filesWritten; - console.log(` ${filesWritten} file(s) ${flags['dry-run'] ? 'would be written' : 'written'}.`); - } -} - -if (totalErrors > 0) { - console.error(`\nBuild failed: ${totalErrors} error(s).`); - process.exit(1); -} else { - console.log(`\nBuild succeeded: ${totalFiles} file(s) ${flags['dry-run'] ? 'would be written' : 'written'}.`); -} diff --git a/scripts/build-context.test.js b/scripts/build-context.test.js deleted file mode 100644 index 2d982e3c..00000000 --- a/scripts/build-context.test.js +++ /dev/null @@ -1,709 +0,0 @@ -import { describe, it, expect, beforeAll } from 'vitest'; -import { resolve, join } from 'node:path'; -import { readFileSync } from 'node:fs'; -import { execFileSync } from 'node:child_process'; -import { validateGlossary, VALID_CATEGORIES } from './context/glossary-schema.js'; -import { buildTermIndex, loadGlossaryFromFile } from './context/glossary-loader.js'; -import { - renderParamsTable, - renderFieldsTable, - renderValuesTable, - renderCaveatsList, - renderCode, - renderSignature, - resolveRenderer, - generateHeader, -} from './context/renderers.js'; -import { processTemplate } from './context/template-processor.js'; -import { createProject, validateTermAgainstSource } from './context/ts-extractor.js'; -import { discoverPackages } from './context/cli-helpers.js'; - -const FIXTURES_DIR = resolve(import.meta.dirname, 'test-fixtures'); -const TEMPLATES_DIR = join(FIXTURES_DIR, 'templates'); - -function loadFixtureGlossary() { - return loadGlossaryFromFile(join(FIXTURES_DIR, 'glossary.yaml')); -} - -describe('glossary-schema', () => { - it('validates a correct glossary without errors', () => { - const data = loadFixtureGlossary(); - const { errors } = validateGlossary(data); - expect(errors).toHaveLength(0); - }); - - it('reports missing meta fields', () => { - const { errors } = validateGlossary({ terms: [] }); - expect(errors.some((e) => e.includes('meta'))).toBe(true); - }); - - it('reports missing required term fields', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [{ id: 'test-one' }], - }; - const { errors } = validateGlossary(data); - expect(errors.some((e) => e.includes('name'))).toBe(true); - expect(errors.some((e) => e.includes('category'))).toBe(true); - }); - - it('reports invalid category', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [{ id: 'x', name: 'x', category: 'invalid', llm: 'x', human: 'x' }], - }; - const { errors } = validateGlossary(data); - expect(errors.some((e) => e.includes('category'))).toBe(true); - }); - - it('reports duplicate IDs', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [ - { id: 'dup', name: 'a', category: 'trigger', llm: 'x', human: 'x' }, - { id: 'dup', name: 'b', category: 'trigger', llm: 'x', human: 'x' }, - ], - }; - const { errors } = validateGlossary(data); - expect(errors.some((e) => e.includes('Duplicate'))).toBe(true); - }); - - it('reports invalid param entries', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [{ id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', params: [{ name: 'p' }] }], - }; - const { errors } = validateGlossary(data); - expect(errors.some((e) => e.includes('type'))).toBe(true); - }); - - it('warns on orphan related refs', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [{ id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', related: ['nonexistent'] }], - }; - const { warnings } = validateGlossary(data); - expect(warnings.some((w) => w.includes('nonexistent'))).toBe(true); - }); - - it('does not warn on cross-package related refs', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [{ id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', related: ['@motion/api-registerEffects'] }], - }; - const { warnings } = validateGlossary(data); - expect(warnings.some((w) => w.includes('@motion/api-registerEffects'))).toBe(false); - }); - - it('warns when term has multiple structured fields', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [{ - id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', - params: [{ name: 'a', type: 'string', default: null, description: 'd' }], - fields: [{ name: 'b', type: 'string', required: true, description: 'd' }], - }], - }; - const { warnings } = validateGlossary(data); - expect(warnings.some((w) => w.includes('params') && w.includes('fields'))).toBe(true); - }); - - it('warns on contradictory default:null + required:false', () => { - const data = { - meta: { package: 'test', version: '1.0.0', lastAudit: '2026-01-01' }, - terms: [{ - id: 'x', name: 'x', category: 'trigger', llm: 'x', human: 'x', - params: [{ name: 'p', type: 'string', default: null, required: false, description: 'd' }], - }], - }; - const { warnings } = validateGlossary(data); - expect(warnings.some((w) => w.includes('null') && w.includes('required'))).toBe(true); - }); - - it('exports VALID_CATEGORIES', () => { - expect(VALID_CATEGORIES).toContain('trigger'); - expect(VALID_CATEGORIES).toContain('preset'); - expect(VALID_CATEGORIES).toHaveLength(7); - }); - - it('reports error for null data', () => { - const { errors } = validateGlossary(null); - expect(errors[0]).toContain('non-null object'); - }); -}); - -describe('renderers', () => { - describe('renderParamsTable', () => { - it('renders a params table', () => { - const params = [ - { name: 'threshold', type: 'number', default: 0.2, description: 'Visibility fraction' }, - { name: 'inset', type: 'string', default: 'undefined', description: 'Root margin' }, - { name: 'id', type: 'string', default: null, required: true, description: 'Required ID' }, - ]; - const result = renderParamsTable(params); - expect(result).toContain('| Param | Type | Default | Description |'); - expect(result).toContain('`threshold`'); - expect(result).toContain('`0.2`'); - expect(result).toContain('—'); - expect(result).toContain('**required**'); - }); - - it('returns fallback for empty params', () => { - expect(renderParamsTable(undefined)).toBe('*No parameters.*'); - expect(renderParamsTable([])).toBe('*No parameters.*'); - }); - - it('uses **required** when required: true regardless of default', () => { - const params = [{ name: 'x', type: 'string', default: 'foo', required: true, description: 'desc' }]; - const result = renderParamsTable(params); - expect(result).toContain('**required**'); - expect(result).not.toContain('`foo`'); - }); - - it('renders — when required: false with default: null', () => { - const params = [{ name: 'x', type: 'string', default: null, required: false, description: 'desc' }]; - const result = renderParamsTable(params); - expect(result).toContain('—'); - expect(result).not.toContain('**required**'); - }); - - it('renders **required** when required is omitted and default is null', () => { - const params = [{ name: 'x', type: 'string', default: null, description: 'desc' }]; - const result = renderParamsTable(params); - expect(result).toContain('**required**'); - }); - - it('renders falsy defaults correctly (0, false)', () => { - const params = [ - { name: 'a', type: 'number', default: 0, description: 'zero' }, - { name: 'b', type: 'boolean', default: false, description: 'false val' }, - ]; - const result = renderParamsTable(params); - expect(result).toContain('`0`'); - expect(result).toContain('`false`'); - }); - - it('escapes pipe characters in type and description', () => { - const params = [{ name: 'axis', type: "'x' | 'y'", default: "'x'", description: "Axis: x | y" }]; - const result = renderParamsTable(params); - expect(result).toContain("`'x' \\| 'y'`"); - expect(result).toContain('Axis: x \\| y'); - expect(result).not.toMatch(/\| x \| y \|/); - }); - }); - - describe('renderFieldsTable', () => { - it('renders a fields table', () => { - const fields = [ - { name: 'effects', type: 'Record', required: true, description: 'Effect defs' }, - { name: 'sequences', type: 'Record', required: false, description: 'Seq defs' }, - ]; - const result = renderFieldsTable(fields); - expect(result).toContain('| Field | Type | Required | Description |'); - expect(result).toContain('`effects`'); - expect(result).toContain('yes'); - expect(result).toContain('no'); - }); - - it('returns fallback for empty fields', () => { - expect(renderFieldsTable(undefined)).toBe('*No fields.*'); - }); - }); - - describe('renderValuesTable', () => { - it('renders a values table with single-quoted backtick values', () => { - const values = [ - { value: 'once', description: 'Fires once.' }, - { value: 'repeat', description: 'Fires every time.' }, - ]; - const result = renderValuesTable(values); - expect(result).toContain('| Value | Description |'); - expect(result).toContain("`'once'`"); - expect(result).toContain("`'repeat'`"); - }); - - it('returns fallback for empty values', () => { - expect(renderValuesTable(undefined)).toBe('*No values.*'); - }); - }); - - describe('renderCaveatsList', () => { - it('renders a bullet list with warning emoji', () => { - const caveats = ['First caveat.', 'Second caveat.']; - const result = renderCaveatsList(caveats); - expect(result).toContain('- ⚠️ First caveat.'); - expect(result).toContain('- ⚠️ Second caveat.'); - }); - - it('returns empty string for no caveats', () => { - expect(renderCaveatsList(undefined)).toBe(''); - expect(renderCaveatsList([])).toBe(''); - }); - }); - - describe('renderCode', () => { - it('wraps code in typescript fenced block', () => { - const result = renderCode('const x = 1;'); - expect(result).toBe('```typescript\nconst x = 1;\n```'); - }); - - it('returns empty for no code', () => { - expect(renderCode(undefined)).toBe(''); - }); - - it('trims trailing newlines', () => { - const result = renderCode('const x = 1;\n\n'); - expect(result).toBe('```typescript\nconst x = 1;\n```'); - }); - }); - - describe('renderSignature', () => { - it('wraps signature in backticks', () => { - expect(renderSignature('static create(): Interact')).toBe('`static create(): Interact`'); - }); - - it('returns empty for no signature', () => { - expect(renderSignature(undefined)).toBe(''); - }); - }); - - describe('resolveRenderer', () => { - const term = { - id: 'test-id', - name: 'TestTerm', - llm: 'LLM desc', - human: 'Human desc', - signature: 'fn(): void', - returns: 'void', - params: [{ name: 'x', type: 'number', default: 1, description: 'desc' }], - code: 'const x = 1;', - caveats: ['Watch out.'], - }; - - it('resolves name renderer', () => { - expect(resolveRenderer(term, 'name')).toEqual({ value: 'TestTerm' }); - }); - - it('resolves llm renderer', () => { - expect(resolveRenderer(term, 'llm')).toEqual({ value: 'LLM desc' }); - }); - - it('resolves params-table renderer', () => { - const result = resolveRenderer(term, 'params-table'); - expect(result.value).toContain('| Param |'); - }); - - it('returns error for unknown renderer', () => { - const result = resolveRenderer(term, 'nonexistent'); - expect(result.error).toContain('Unknown renderer'); - }); - - it('returns error for missing required field', () => { - const result = resolveRenderer({ id: 'no-name' }, 'name'); - expect(result.error).toContain('no "name" field'); - }); - }); - - describe('generateHeader', () => { - it('produces a header pointing to the source template', () => { - const header = generateHeader('rules/triggers.md'); - expect(header).toContain('GENERATED FILE'); - expect(header).toContain('context/templates/rules/triggers.md'); - expect(header).toMatch(/^$/m); - }); - - it('ends with a blank line for clean separation', () => { - const header = generateHeader('docs/README.md'); - expect(header.endsWith('\n')).toBe(true); - }); - }); -}); - -describe('template-processor', () => { - let termIndex; - - beforeAll(() => { - const glossary = loadFixtureGlossary(); - termIndex = buildTermIndex(glossary.terms); - }); - - it('processes text markers', () => { - const content = 'Hello {{term:trigger-hover.name}} world'; - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('Hello hover world'); - }); - - it('processes table markers', () => { - const content = '{{term:trigger-viewEnter.params-table}}'; - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('| Param |'); - expect(output).toContain('`threshold`'); - }); - - it('skips markers inside fenced code blocks', () => { - const content = [ - '# Code Block Test', - '', - 'Normal marker: {{term:trigger-hover.name}}', - '', - '```typescript', - '// This marker should NOT be replaced:', - '{{term:trigger-viewEnter.name}}', - '```', - '', - 'After code block: {{term:trigger-hover.llm}}', - ].join('\n'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('Normal marker: hover'); - expect(output).toContain('{{term:trigger-viewEnter.name}}'); - expect(output).toContain('After code block: Fires on mouseenter/mouseleave events.'); - }); - - it('handles escaped markers', () => { - const content = [ - '# Escaped Markers', - '', - 'This is a literal: \\{{term:trigger-viewEnter.name}}', - '', - 'This is real: {{term:trigger-hover.name}}', - ].join('\n'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('This is a literal: {{term:trigger-viewEnter.name}}'); - expect(output).toContain('This is real: hover'); - }); - - it('processes include markers', () => { - const content = readFileSync(join(TEMPLATES_DIR, 'rules/with-include.md'), 'utf-8'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('This is the **introduction** fragment.'); - expect(output).toContain('Requires BOTH generate(config)'); - }); - - it('reports errors for unknown term IDs', () => { - const content = '{{term:nonexistent-term.llm}}'; - const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors.length).toBeGreaterThan(0); - expect(errors[0]).toContain('nonexistent-term'); - }); - - it('reports errors for unknown renderers', () => { - const content = '{{term:trigger-viewEnter.bad-renderer}}'; - const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors.length).toBeGreaterThan(0); - expect(errors[0]).toContain('bad-renderer'); - }); - - it('reports errors for missing include files', () => { - const content = '{{include:fragments/does-not-exist.md}}'; - const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors.length).toBeGreaterThan(0); - expect(errors[0]).toContain('does-not-exist.md'); - }); - - it('preserves frontmatter without processing', () => { - const content = '---\nname: test\ndescription: "Has {{term:trigger-hover.name}} marker"\n---\n\n# Title\n\n{{term:trigger-hover.name}}'; - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('description: "Has {{term:trigger-hover.name}} marker"'); - expect(output).toContain('# Title\n\nhover'); - }); - - it('processes a full rules template', () => { - const content = readFileSync(join(TEMPLATES_DIR, 'rules/triggers.md'), 'utf-8'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('Triggers an animation'); - expect(output).toContain('| Param |'); - expect(output).toContain('⚠️'); - expect(output).toContain('Fires on mouseenter'); - }); - - it('processes a docs template', () => { - const content = readFileSync(join(TEMPLATES_DIR, 'docs/README.md'), 'utf-8'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('Initializes the interaction system'); - expect(output).toContain('```typescript'); - expect(output).toContain('Interact instance'); - }); - - it('collects multiple errors from one file', () => { - const content = [ - '# Errors Test', - '', - 'Unknown term: {{term:nonexistent-term.llm}}', - '', - 'Unknown renderer: {{term:trigger-viewEnter.bad-renderer}}', - ].join('\n'); - const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors.length).toBe(2); - }); - - it('handles nested code fences (4-backtick wrapping 3-backtick)', () => { - const content = [ - '# Test', - '````markdown', - '```typescript', - '{{term:trigger-hover.name}}', - '```', - '````', - '{{term:trigger-hover.name}}', - ].join('\n'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('{{term:trigger-hover.name}}'); - expect(output).toMatch(/````\nhover$/m); - }); - - it('does not close backtick fence with tilde fence', () => { - const content = [ - '```typescript', - '{{term:trigger-hover.name}}', - '~~~', - '{{term:trigger-hover.name}}', - '```', - '{{term:trigger-hover.name}}', - ].join('\n'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - const lines = output.split('\n'); - expect(lines[1]).toBe('{{term:trigger-hover.name}}'); - expect(lines[3]).toBe('{{term:trigger-hover.name}}'); - expect(lines[5]).toBe('hover'); - }); - - it('reports unterminated code fence', () => { - const content = '# Title\n\n```typescript\nconst x = 1;\n'; - const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors.some((e) => e.includes('Unterminated code fence'))).toBe(true); - }); - - it('warns on unterminated frontmatter', () => { - const content = '---\nname: test\nno closing delimiter\n'; - const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors.some((e) => e.includes('Unterminated frontmatter'))).toBe(true); - }); - - it('preserves failed include marker in output', () => { - const content = 'Before {{include:fragments/does-not-exist.md}} After'; - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors.length).toBeGreaterThan(0); - expect(output).toContain('{{include:fragments/does-not-exist.md}}'); - }); - - it('does not resolve includes inside included files (single-level nesting)', () => { - const content = '{{include:fragments/with-nested-include.md}}'; - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('Nested fragment content.'); - expect(output).toContain('{{include:fragments/intro.md}}'); - }); -}); - -describe('ts-extractor', () => { - const SOURCE_DIR = join(FIXTURES_DIR, 'source'); - let project; - - beforeAll(() => { - project = createProject(SOURCE_DIR); - }); - - it('validates matching params successfully', () => { - const term = { - id: 'trigger-viewEnter', - sourceFile: 'types.ts', - sourceName: 'ViewEnterParams', - params: [ - { name: 'threshold', type: 'number', default: 0.2, description: 'desc' }, - { name: 'inset', type: 'string', default: 'undefined', description: 'desc' }, - { name: 'effectId', type: 'string', default: null, required: true, description: 'desc' }, - ], - }; - const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(errors).toHaveLength(0); - }); - - it('reports error for param not in source', () => { - const term = { - id: 'test', - sourceFile: 'types.ts', - sourceName: 'ViewEnterParams', - params: [ - { name: 'nonexistent', type: 'string', default: null, description: 'desc' }, - ], - }; - const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(errors.some((e) => e.message.includes('nonexistent'))).toBe(true); - expect(errors[0].check).toBe('param-exists'); - }); - - it('warns on source property missing from glossary', () => { - const term = { - id: 'test', - sourceFile: 'types.ts', - sourceName: 'ViewEnterParams', - params: [ - { name: 'threshold', type: 'number', default: 0.2, description: 'desc' }, - ], - }; - const { warnings } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(warnings.some((w) => w.message.includes('not listed in glossary'))).toBe(true); - expect(warnings[0].check).toBe('missing-member'); - }); - - it('validates enum values against source union', () => { - const term = { - id: 'test', - sourceFile: 'types.ts', - sourceName: 'TriggerType', - values: [ - { value: 'once', description: 'desc' }, - { value: 'repeat', description: 'desc' }, - { value: 'alternate', description: 'desc' }, - { value: 'state', description: 'desc' }, - ], - }; - const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(errors).toHaveLength(0); - }); - - it('reports error for value not in source union', () => { - const term = { - id: 'test', - sourceFile: 'types.ts', - sourceName: 'TriggerType', - values: [ - { value: 'nonexistent', description: 'desc' }, - ], - }; - const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(errors.some((e) => e.message.includes('nonexistent'))).toBe(true); - expect(errors[0].check).toBe('value-exists'); - }); - - it('reports error for missing source file', () => { - const term = { - id: 'test', - sourceFile: 'does-not-exist.ts', - sourceName: 'Foo', - }; - const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(errors.some((e) => e.message.includes('not found'))).toBe(true); - expect(errors[0].check).toBe('file-exists'); - }); - - it('reports error for missing symbol', () => { - const term = { - id: 'test', - sourceFile: 'types.ts', - sourceName: 'NonexistentType', - }; - const { errors } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(errors.some((e) => e.message.includes('NonexistentType'))).toBe(true); - expect(errors[0].check).toBe('symbol-exists'); - }); - - it('warns on optionality mismatch', () => { - const term = { - id: 'test', - sourceFile: 'types.ts', - sourceName: 'ViewEnterParams', - params: [ - { name: 'inset', type: 'string', default: null, required: true, description: 'desc' }, - ], - }; - const { warnings } = validateTermAgainstSource(term, project, SOURCE_DIR); - expect(warnings.some((w) => w.message.includes('optional in source'))).toBe(true); - expect(warnings[0].check).toBe('param-optionality'); - }); -}); - -describe('glossary-loader', () => { - it('throws a descriptive error for malformed YAML', () => { - const malformedPath = join(FIXTURES_DIR, 'malformed.yaml'); - expect(() => loadGlossaryFromFile(malformedPath)).toThrow('Failed to parse YAML'); - }); -}); - -describe('cli-helpers', () => { - it('throws on nonexistent package name', () => { - expect(() => discoverPackages({ package: ['nonexistent-pkg-xyz'] })) - .toThrow('Package directory not found'); - }); - - it('returns empty array when no packages have context/', () => { - const result = discoverPackages({ all: true }); - expect(Array.isArray(result)).toBe(true); - }); - - it('returns empty array when no flags provided', () => { - const result = discoverPackages({}); - expect(result).toEqual([]); - }); -}); - -describe('integration — build pipeline', () => { - let termIndex; - - beforeAll(() => { - const glossary = loadFixtureGlossary(); - termIndex = buildTermIndex(glossary.terms); - }); - - it('processes all fixture templates without errors', () => { - const templateFiles = ['rules/triggers.md', 'rules/config.md', 'docs/README.md']; - for (const file of templateFiles) { - const content = readFileSync(join(TEMPLATES_DIR, file), 'utf-8'); - const { errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors, `Errors in ${file}`).toHaveLength(0); - } - }); - - it('config template renders fields-table and values-table', () => { - const content = readFileSync(join(TEMPLATES_DIR, 'rules/config.md'), 'utf-8'); - const { output, errors } = processTemplate(content, termIndex, TEMPLATES_DIR); - expect(errors).toHaveLength(0); - expect(output).toContain('| Field | Type | Required | Description |'); - expect(output).toContain('`effects`'); - expect(output).toContain("| Value | Description |"); - expect(output).toContain("`'once'`"); - }); -}); - -describe('CLI integration', () => { - const scriptsDir = import.meta.dirname; - - it('build-context.js exits 1 with no flags', () => { - let caught; - try { - execFileSync('node', [join(scriptsDir, 'build-context.js')], { encoding: 'utf-8', stdio: 'pipe' }); - } catch (e) { caught = e; } - expect(caught).toBeDefined(); - expect(caught.status).toBe(1); - expect(caught.stderr).toContain('No packages specified'); - }); - - it('build-context.js exits 1 for nonexistent package', () => { - let caught; - try { - execFileSync('node', [join(scriptsDir, 'build-context.js'), '--package', 'nonexistent-pkg-xyz'], { encoding: 'utf-8', stdio: 'pipe' }); - } catch (e) { caught = e; } - expect(caught).toBeDefined(); - expect(caught.status).toBe(1); - expect(caught.stderr).toContain('Package directory not found'); - }); - - it('validate-context.js exits 1 with no flags', () => { - let caught; - try { - execFileSync('node', [join(scriptsDir, 'validate-context.js')], { encoding: 'utf-8', stdio: 'pipe' }); - } catch (e) { caught = e; } - expect(caught).toBeDefined(); - expect(caught.status).toBe(1); - }); -}); diff --git a/scripts/build-landing.sh b/scripts/build-landing.sh deleted file mode 100755 index cfb9027d..00000000 --- a/scripts/build-landing.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash -# Builds all packages and copies the dist files into apps/website/assets/lib/ -# so that index.html can load Interact and Presets from local bundles. -# -# Usage: -# yarn workspace @wix/interact build:landing (from anywhere in the repo) -# ./scripts/build-landing.sh (from repo root) - -set -euo pipefail - -REPO_ROOT="$(git rev-parse --show-toplevel)" -LIB_DIR="$REPO_ROOT/apps/website/assets/lib" - -yarn workspaces foreach --all --topological --include 'packages/*' run build - -rm -rf "$LIB_DIR/interact" "$LIB_DIR/motion-presets" "$LIB_DIR/motion" - -mkdir -p "$LIB_DIR/interact/es" -mkdir -p "$LIB_DIR/motion-presets" -mkdir -p "$LIB_DIR/motion" - -cp "$REPO_ROOT/packages/interact/dist/es/web.js" "$LIB_DIR/interact/es/" -cp "$REPO_ROOT/packages/interact/dist"/index-*.mjs "$LIB_DIR/interact/" -cp "$REPO_ROOT/packages/motion-presets/dist/es/motion-presets.js" "$LIB_DIR/motion-presets/" -cp "$REPO_ROOT/packages/motion/dist/es/motion.js" "$LIB_DIR/motion/" - -echo "Landing page libraries copied to apps/website/assets/lib/" diff --git a/scripts/context/cli-helpers.js b/scripts/context/cli-helpers.js deleted file mode 100644 index 894dccaf..00000000 --- a/scripts/context/cli-helpers.js +++ /dev/null @@ -1,24 +0,0 @@ -import { readdirSync, statSync, existsSync } from 'node:fs'; -import { resolve, join } from 'node:path'; - -export const REPO_ROOT = resolve(import.meta.dirname, '..', '..'); -export const PACKAGES_DIR = join(REPO_ROOT, 'packages'); - -export function discoverPackages(flags) { - if (flags.all) { - return readdirSync(PACKAGES_DIR) - .filter((name) => { - const contextDir = join(PACKAGES_DIR, name, 'context'); - return existsSync(contextDir) && statSync(contextDir).isDirectory(); - }); - } - - const names = flags.package || []; - for (const name of names) { - const pkgDir = join(PACKAGES_DIR, name); - if (!existsSync(pkgDir)) { - throw new Error(`Package directory not found: ${pkgDir}`); - } - } - return names; -} diff --git a/scripts/context/glossary-loader.js b/scripts/context/glossary-loader.js deleted file mode 100644 index f40730bb..00000000 --- a/scripts/context/glossary-loader.js +++ /dev/null @@ -1,30 +0,0 @@ -import { readFileSync } from 'node:fs'; -import { parse } from 'yaml'; -import { validateGlossary } from './glossary-schema.js'; - -export function buildTermIndex(terms) { - const index = new Map(); - for (const term of terms) { - index.set(term.id, term); - } - return index; -} - -/** - * Parse a YAML glossary file and return the raw result. - * Not validated — use loadAndValidateGlossary for schema checks. - */ -export function loadGlossaryFromFile(filePath) { - const raw = readFileSync(filePath, 'utf-8'); - try { - return parse(raw); - } catch (e) { - throw new Error(`Failed to parse YAML in ${filePath}: ${e.message}`); - } -} - -export function loadAndValidateGlossary(filePath) { - const data = loadGlossaryFromFile(filePath); - const { errors, warnings } = validateGlossary(data); - return { data, errors, warnings }; -} diff --git a/scripts/context/glossary-schema.js b/scripts/context/glossary-schema.js deleted file mode 100644 index 2b30e69e..00000000 --- a/scripts/context/glossary-schema.js +++ /dev/null @@ -1,147 +0,0 @@ -export const VALID_CATEGORIES = [ - 'trigger', - 'effect-type', - 'config', - 'api', - 'concept', - 'enum', - 'preset', -]; - -const REQUIRED_TERM_FIELDS = ['id', 'name', 'category', 'llm', 'human']; -const REQUIRED_PARAM_FIELDS = ['name', 'type', 'default', 'description']; -const REQUIRED_FIELD_FIELDS = ['name', 'type', 'required', 'description']; -const REQUIRED_VALUE_FIELDS = ['value', 'description']; -const REQUIRED_META_FIELDS = ['package', 'version', 'lastAudit']; - -function checkRequiredKeys(obj, requiredKeys, label) { - const missing = requiredKeys.filter((k) => !(k in obj)); - if (missing.length > 0) { - return `${label}: missing required fields: ${missing.join(', ')}`; - } - return null; -} - -function validateMeta(meta, errors) { - if (!meta || typeof meta !== 'object') { - errors.push('Missing or invalid top-level "meta" object'); - return; - } - const err = checkRequiredKeys(meta, REQUIRED_META_FIELDS, 'meta'); - if (err) errors.push(err); -} - -function validateTermParams(params, termId, errors, warnings) { - params.forEach((param, i) => { - const label = `term "${termId}" params[${i}]`; - const err = checkRequiredKeys(param, REQUIRED_PARAM_FIELDS, label); - if (err) errors.push(err); - if (param.default === null && param.required === false) { - warnings.push( - `${label} ("${param.name}"): default is null (implies required) but required is false`, - ); - } - }); -} - -function validateTermFields(fields, termId, errors) { - fields.forEach((field, i) => { - const err = checkRequiredKeys( - field, - REQUIRED_FIELD_FIELDS, - `term "${termId}" fields[${i}]`, - ); - if (err) errors.push(err); - }); -} - -function validateTermValues(values, termId, errors) { - values.forEach((val, i) => { - const err = checkRequiredKeys( - val, - REQUIRED_VALUE_FIELDS, - `term "${termId}" values[${i}]`, - ); - if (err) errors.push(err); - }); -} - -function validateTerms(terms, errors, warnings) { - if (!Array.isArray(terms)) { - errors.push('Missing or invalid top-level "terms" array'); - return; - } - - const seenIds = new Set(); - - terms.forEach((term, i) => { - const termLabel = term.id ? `term "${term.id}"` : `terms[${i}]`; - - const missingErr = checkRequiredKeys( - term, - REQUIRED_TERM_FIELDS, - termLabel, - ); - if (missingErr) errors.push(missingErr); - - if (term.category && !VALID_CATEGORIES.includes(term.category)) { - errors.push( - `${termLabel}: invalid category "${term.category}" (valid: ${VALID_CATEGORIES.join(', ')})`, - ); - } - - if (term.id) { - if (seenIds.has(term.id)) { - errors.push(`Duplicate term ID: "${term.id}"`); - } - seenIds.add(term.id); - } - - if (term.params && Array.isArray(term.params)) { - validateTermParams(term.params, term.id ?? i, errors, warnings); - } - - if (term.fields && Array.isArray(term.fields)) { - validateTermFields(term.fields, term.id ?? i, errors); - } - - if (term.values && Array.isArray(term.values)) { - validateTermValues(term.values, term.id ?? i, errors); - } - - const structuredKeys = ['params', 'fields', 'values'].filter((k) => Array.isArray(term[k]) && term[k].length > 0); - if (structuredKeys.length > 1) { - warnings.push( - `${termLabel}: has multiple structured fields (${structuredKeys.join(', ')}); only one of params/fields/values should be present`, - ); - } - - }); - - const allIds = new Set(terms.filter((t) => t.id).map((t) => t.id)); - terms.forEach((term, i) => { - if (!Array.isArray(term.related)) return; - const termLabel = term.id ? `term "${term.id}"` : `terms[${i}]`; - term.related.forEach((ref) => { - if (!ref.startsWith('@') && !allIds.has(ref)) { - warnings.push( - `${termLabel}: related ref "${ref}" not found in glossary`, - ); - } - }); - }); -} - -export function validateGlossary(data) { - const errors = []; - const warnings = []; - - if (!data || typeof data !== 'object') { - return { errors: ['Glossary data must be a non-null object'], warnings }; - } - - validateMeta(data.meta, errors); - validateTerms(data.terms, errors, warnings); - - return { errors, warnings }; -} diff --git a/scripts/context/renderers.js b/scripts/context/renderers.js deleted file mode 100644 index 072b70ab..00000000 --- a/scripts/context/renderers.js +++ /dev/null @@ -1,117 +0,0 @@ -function escapeCell(text) { - return String(text).replace(/\|/g, '\\|'); -} - -export function renderParamsTable(params) { - if (!params || params.length === 0) return '*No parameters.*'; - - const rows = params.map((p) => { - const name = `\`${p.name}\``; - const type = `\`${escapeCell(p.type)}\``; - let def; - if (p.required === true) { - def = '**required**'; - } else if (p.default === null) { - def = p.required === false ? '—' : '**required**'; - } else if (p.default === 'undefined') { - def = '—'; - } else { - def = `\`${escapeCell(p.default)}\``; - } - return `| ${name} | ${type} | ${def} | ${escapeCell(p.description)} |`; - }); - - return [ - '| Param | Type | Default | Description |', - '| ----- | ---- | ------- | ----------- |', - ...rows, - ].join('\n'); -} - -export function renderFieldsTable(fields) { - if (!fields || fields.length === 0) return '*No fields.*'; - - const rows = fields.map((f) => { - const name = `\`${f.name}\``; - const type = `\`${escapeCell(f.type)}\``; - const required = f.required ? 'yes' : 'no'; - return `| ${name} | ${type} | ${required} | ${escapeCell(f.description)} |`; - }); - - return [ - '| Field | Type | Required | Description |', - '| ----- | ---- | -------- | ----------- |', - ...rows, - ].join('\n'); -} - -export function renderValuesTable(values) { - if (!values || values.length === 0) return '*No values.*'; - - const rows = values.map( - (v) => `| \`'${v.value}'\` | ${escapeCell(v.description)} |`, - ); - - return [ - '| Value | Description |', - '| ----- | ----------- |', - ...rows, - ].join('\n'); -} - -export function renderCaveatsList(caveats) { - if (!caveats || caveats.length === 0) return ''; - return caveats.map((c) => `- ⚠️ ${c}`).join('\n'); -} - -export function renderCode(code) { - if (!code) return ''; - return `\`\`\`typescript\n${code.trimEnd()}\n\`\`\``; -} - -export function renderSignature(signature) { - if (!signature) return ''; - return `\`${signature}\``; -} - -export function generateHeader(relPath) { - return [ - '', - ``, - '', - ].join('\n'); -} - -const TEXT_RENDERERS = { - name: { field: 'name', required: true }, - llm: { field: 'llm', required: true }, - human: { field: 'human', required: true }, - returns: { field: 'returns', required: false }, -}; - -// Computed renderers return fallback text (e.g. "*No parameters.*") when the field is absent, -// rather than erroring — this allows templates to use table renderers on any term safely. -const COMPUTED_RENDERERS = { - signature: (term) => ({ value: renderSignature(term.signature) }), - 'params-table': (term) => ({ value: renderParamsTable(term.params) }), - 'fields-table': (term) => ({ value: renderFieldsTable(term.fields) }), - 'values-table': (term) => ({ value: renderValuesTable(term.values) }), - 'caveats-list': (term) => ({ value: renderCaveatsList(term.caveats) }), - code: (term) => ({ value: renderCode(term.code) }), -}; - -export function resolveRenderer(term, rendererName) { - const textDef = TEXT_RENDERERS[rendererName]; - if (textDef) { - const value = term[textDef.field]; - if (textDef.required && !value) { - return { error: `Term "${term.id}" has no "${textDef.field}" field` }; - } - return { value: value || '' }; - } - - const computed = COMPUTED_RENDERERS[rendererName]; - if (computed) return computed(term); - - return { error: `Unknown renderer "${rendererName}"` }; -} diff --git a/scripts/context/template-processor.js b/scripts/context/template-processor.js deleted file mode 100644 index deeb2a06..00000000 --- a/scripts/context/template-processor.js +++ /dev/null @@ -1,130 +0,0 @@ -import { readFileSync } from 'node:fs'; -import { resolve } from 'node:path'; -import { resolveRenderer } from './renderers.js'; - -const ESCAPE_PLACEHOLDER = '\x00ESC_BRACE\x00'; - -function processMarkers(line, termIndex, templatesDir, errors, resolveIncludes, options = {}) { - const markerRe = /\{\{(term|include):([^}]+)\}\}/g; - const safeLineInput = line.replace(/\\\{\{/g, ESCAPE_PLACEHOLDER); - - const processed = safeLineInput.replace(markerRe, (match, type, arg) => { - if (type === 'term') { - const dotIdx = arg.indexOf('.'); - if (dotIdx === -1) { - errors.push(`Invalid term marker format: must be id.renderer — got "${arg}"`); - return match; - } - const id = arg.slice(0, dotIdx); - const renderer = arg.slice(dotIdx + 1); - const term = termIndex.get(id); - if (!term) { - errors.push(`Unknown term ID "${id}"`); - return match; - } - const result = resolveRenderer(term, renderer); - if (result.error) { - errors.push(result.error); - return match; - } - if (options.verbose) { - console.log(` {{term:${id}.${renderer}}} → resolved`); - } - return result.value; - } - - if (type === 'include') { - if (!resolveIncludes) return match; - const filePath = resolve(templatesDir, arg); - let fileContent; - try { - fileContent = readFileSync(filePath, 'utf-8'); - } catch { - errors.push(`Include file not found: ${arg}`); - return match; - } - if (options.verbose) { - console.log(` {{include:${arg}}} → resolved`); - } - return processLines(fileContent.split('\n'), termIndex, templatesDir, errors, false).result.join('\n'); - } - - return match; - }); - - return processed.replaceAll(ESCAPE_PLACEHOLDER, '{{'); -} - -function tryToggleFence(trimmed, currentFence) { - const fenceMatch = trimmed.match(/^(`{3,}|~{3,})/); - if (!fenceMatch) return { fence: currentFence, matched: false }; - - const fence = fenceMatch[1]; - if (currentFence === null) { - return { fence, matched: true }; - } - if (fence[0] === currentFence[0] && fence.length >= currentFence.length && trimmed.slice(fence.length).trim() === '') { - return { fence: null, matched: true }; - } - return { fence: currentFence, matched: false }; -} - -function processLines(lines, termIndex, templatesDir, errors, resolveIncludes, options = {}) { - const result = []; - let codeBlockFence = null; - - for (const line of lines) { - const trimmed = line.trimStart(); - const { fence, matched } = tryToggleFence(trimmed, codeBlockFence); - codeBlockFence = fence; - - // Skip marker processing on fence lines (matched=true covers both opening - // and closing fences) and on all lines inside a code block. - if (matched || codeBlockFence !== null) { - result.push(line); - continue; - } - - result.push(processMarkers(line, termIndex, templatesDir, errors, resolveIncludes, options)); - } - - return { result, unterminatedFence: codeBlockFence !== null }; -} - -/** - * Process a template string, resolving term markers and includes. - * Returns { output, errors } — output is always populated (even on error), - * so callers must check errors before using the output. - */ -export function processTemplate(content, termIndex, templatesDir, options = {}) { - const errors = []; - const lines = content.split('\n'); - - let inFrontmatter = lines.length > 0 && lines[0].trim() === '---'; - let frontmatterEnd = 0; - - if (inFrontmatter) { - for (let i = 1; i < lines.length; i++) { - if (lines[i].trim() === '---') { - frontmatterEnd = i + 1; - break; - } - } - if (frontmatterEnd === 0) { - errors.push('Unterminated frontmatter (opening --- without closing ---)'); - frontmatterEnd = lines.length; - } - } - - const frontmatterLines = lines.slice(0, frontmatterEnd); - const bodyLines = lines.slice(frontmatterEnd); - - const { result: processedBody, unterminatedFence } = processLines(bodyLines, termIndex, templatesDir, errors, true, options); - - if (unterminatedFence) { - errors.push('Unterminated code fence (odd number of ``` or ~~~ lines)'); - } - - const output = [...frontmatterLines, ...processedBody].join('\n'); - return { output, errors }; -} diff --git a/scripts/context/ts-extractor.js b/scripts/context/ts-extractor.js deleted file mode 100644 index 476b2e35..00000000 --- a/scripts/context/ts-extractor.js +++ /dev/null @@ -1,135 +0,0 @@ -import { Project } from 'ts-morph'; -import { resolve, join } from 'node:path'; -import { existsSync } from 'node:fs'; - -export function createProject(packageDir) { - const tsConfigPath = join(packageDir, 'tsconfig.json'); - const hasTsConfig = existsSync(tsConfigPath); - if (!hasTsConfig) { - console.warn(`Warning: No tsconfig.json found at ${tsConfigPath} — using default compiler options`); - } - const project = new Project({ - tsConfigFilePath: hasTsConfig ? tsConfigPath : undefined, - skipAddingFilesFromTsConfig: true, - }); - return project; -} - -export function validateTermAgainstSource(term, project, packageDir) { - const errors = []; - const warnings = []; - - if (!term.sourceFile || !term.sourceName) { - return { errors, warnings }; - } - - const { sourceFile: relPath, sourceName } = term; - - const absPath = resolve(packageDir, relPath); - if (!existsSync(absPath)) { - errors.push({ message: `Source file not found: ${relPath}`, check: 'file-exists' }); - return { errors, warnings }; - } - - const sf = project.addSourceFileAtPathIfExists(absPath) ?? project.getSourceFile(absPath); - if (!sf) { - errors.push({ message: `Could not add source file: ${relPath}`, check: 'file-exists' }); - return { errors, warnings }; - } - - const symbol = findSymbol(sf, sourceName); - if (!symbol) { - errors.push({ message: `Symbol "${sourceName}" not found in ${relPath}`, check: 'symbol-exists' }); - return { errors, warnings }; - } - - try { - if (term.params || term.fields) { - validateProperties(symbol, term, errors, warnings); - } - - if (term.values) { - validateEnumValues(symbol, term, errors, warnings); - } - } catch (e) { - errors.push({ message: `Type analysis error for "${sourceName}" in ${relPath}: ${e.message}`, check: 'ts-morph' }); - } - - return { errors, warnings }; -} - -function findSymbol(sf, sourceName) { - const dotIdx = sourceName.indexOf('.'); - if (dotIdx !== -1) { - const className = sourceName.slice(0, dotIdx); - const memberName = sourceName.slice(dotIdx + 1); - const cls = sf.getClass(className); - if (!cls) return null; - return cls.getMethod(memberName) ?? cls.getProperty(memberName) ?? null; - } - - return ( - sf.getTypeAlias(sourceName) ?? - sf.getInterface(sourceName) ?? - sf.getFunction(sourceName) ?? - sf.getVariableDeclaration(sourceName) ?? - null - ); -} - -function validateProperties(symbol, term, errors, warnings) { - const type = symbol.getType(); - const sourceProps = type.getProperties(); - const sourcePropNames = new Set(sourceProps.map(p => p.getName())); - - const glossaryEntries = term.params ?? term.fields ?? []; - const glossaryNames = new Set(glossaryEntries.map(e => e.name)); - - for (const entry of glossaryEntries) { - if (!sourcePropNames.has(entry.name)) { - errors.push({ message: `glossary param "${entry.name}" not found in source type`, check: 'param-exists' }); - continue; - } - - if (entry.required !== undefined) { - const sourceProp = sourceProps.find(p => p.getName() === entry.name); - const declarations = sourceProp.getDeclarations(); - const isSourceOptional = declarations.some(d => d.hasQuestionToken?.() ?? false); - - if (entry.required && isSourceOptional) { - warnings.push({ message: `"${entry.name}" is required in glossary but optional in source`, check: 'param-optionality' }); - } else if (!entry.required && !isSourceOptional) { - warnings.push({ message: `"${entry.name}" is optional in glossary but required in source`, check: 'param-optionality' }); - } - } - } - - for (const prop of sourceProps) { - const name = prop.getName(); - if (!glossaryNames.has(name)) { - warnings.push({ message: `source has property "${name}" not listed in glossary`, check: 'missing-member' }); - } - } -} - -function validateEnumValues(symbol, term, errors, warnings) { - const type = symbol.getType(); - const sourceLiterals = type.isUnion() - ? type.getUnionTypes().filter(t => t.isStringLiteral()).map(t => t.getLiteralValue()) - : []; - - const glossaryValues = new Set(term.values.map(v => v.value)); - const sourceValues = new Set(sourceLiterals); - - for (const val of glossaryValues) { - if (!sourceValues.has(val)) { - errors.push({ message: `glossary value "${val}" not found in source union`, check: 'value-exists' }); - } - } - - for (const val of sourceValues) { - if (!glossaryValues.has(val)) { - warnings.push({ message: `source has value "${val}" not listed in glossary`, check: 'missing-value' }); - } - } -} diff --git a/scripts/package.json b/scripts/package.json deleted file mode 100644 index a1edf010..00000000 --- a/scripts/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@wix/context-scripts", - "description": "Context SSOT build tooling. Plain JS (no compile step) by design.", - "private": true, - "type": "module", - "scripts": { - "build": "node build-context.js --all", - "validate": "node validate-context.js --all", - "test": "vitest run" - }, - "devDependencies": { - "ts-morph": "^25.0.0", - "vitest": "^4.0.14", - "yaml": "^2.7.0" - } -} diff --git a/scripts/test-fixtures/glossary.yaml b/scripts/test-fixtures/glossary.yaml deleted file mode 100644 index f8349410..00000000 --- a/scripts/test-fixtures/glossary.yaml +++ /dev/null @@ -1,116 +0,0 @@ -meta: - package: "@wix/test-pkg" - version: "1.0.0" - lastAudit: "2026-05-01" - -terms: - - id: trigger-viewEnter - name: viewEnter - category: trigger - llm: >- - Fires when element crosses viewport threshold via IntersectionObserver. - human: >- - Triggers an animation when an element scrolls into the visible area - of the page. - params: - - name: threshold - type: number - default: 0.2 - description: "Fraction of element that must be visible (0–1)" - - name: inset - type: string - default: "undefined" - description: "Mapped to IntersectionObserver rootMargin" - - name: effectId - type: string - default: null - required: true - description: "ID of the preceding effect to chain after" - caveats: - - >- - When source and target are the same element, only triggerType 'once' - is reliable. - sourceFile: src/types/triggers.ts - sourceName: ViewEnterParams - related: - - trigger-hover - - config-InteractConfig - - - id: trigger-hover - name: hover - category: trigger - llm: >- - Fires on mouseenter/mouseleave events. - human: >- - Triggers animations when the user hovers over an element. - params: - - name: delay - type: number - default: 0 - description: "Delay before triggering in ms" - - - id: config-InteractConfig - name: InteractConfig - category: config - llm: >- - Top-level configuration object passed to Interact.create(). - human: >- - The root configuration object that defines all interactions. - fields: - - name: effects - type: "Record" - required: true - description: "Reusable effect definitions keyed by effectId" - - name: interactions - type: "Interaction[]" - required: true - description: "Array of trigger-to-effect bindings" - - name: sequences - type: "Record" - required: false - description: "Reusable sequence definitions" - - - id: enum-TriggerType - name: TriggerType - category: enum - llm: >- - Controls repeat behavior for time-based effects. - human: >- - Determines how an effect responds when its trigger fires multiple times. - values: - - value: "once" - description: "Fires once then stops." - - value: "repeat" - description: "Fires every time the trigger activates." - - value: "alternate" - description: "Alternates forward/reverse." - - value: "state" - description: "Applies CSS state via stateAction." - - - id: api-create - name: Interact.create - category: api - llm: >- - Creates a new Interact instance from config. - human: >- - Initializes the interaction system with a configuration object. - signature: "static create(config: InteractConfig): Interact" - returns: "Interact instance" - code: | - const instance = Interact.create(config); - related: - - config-InteractConfig - - - id: concept-fouc - name: FOUC Prevention - category: concept - llm: >- - Requires BOTH generate(config) and data-interact-initial="true" on elements. - human: >- - Flash of Un-animated Content occurs when entrance-animated elements - briefly show their final state before the animation runs. - caveats: - - "Only valid for viewEnter + triggerType 'once'." - - "generate() should run server-side or at build time." - code: | - const css = generate(config); diff --git a/scripts/test-fixtures/malformed.yaml b/scripts/test-fixtures/malformed.yaml deleted file mode 100644 index 66a19ff2..00000000 --- a/scripts/test-fixtures/malformed.yaml +++ /dev/null @@ -1,5 +0,0 @@ -meta: - package: test - bad: [unterminated -terms: - - id: broken diff --git a/scripts/test-fixtures/source/types.ts b/scripts/test-fixtures/source/types.ts deleted file mode 100644 index 9f253d1a..00000000 --- a/scripts/test-fixtures/source/types.ts +++ /dev/null @@ -1,13 +0,0 @@ -export type ViewEnterParams = { - threshold: number; - inset?: string; - effectId: string; -}; - -export type TriggerType = 'once' | 'repeat' | 'alternate' | 'state'; - -export interface InteractConfig { - effects: Record; - interactions: unknown[]; - sequences?: Record; -} diff --git a/scripts/test-fixtures/templates/docs/README.md b/scripts/test-fixtures/templates/docs/README.md deleted file mode 100644 index eaa430db..00000000 --- a/scripts/test-fixtures/templates/docs/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Test Package Docs - -## Getting Started - -{{term:api-create.human}} - -### Quick Start - -{{term:api-create.code}} - -Returns: {{term:api-create.returns}} diff --git a/scripts/test-fixtures/templates/fragments/intro.md b/scripts/test-fixtures/templates/fragments/intro.md deleted file mode 100644 index 21c076f2..00000000 --- a/scripts/test-fixtures/templates/fragments/intro.md +++ /dev/null @@ -1,3 +0,0 @@ -This is the **introduction** fragment. - -FOUC: {{term:concept-fouc.llm}} diff --git a/scripts/test-fixtures/templates/fragments/with-nested-include.md b/scripts/test-fixtures/templates/fragments/with-nested-include.md deleted file mode 100644 index 346c7b44..00000000 --- a/scripts/test-fixtures/templates/fragments/with-nested-include.md +++ /dev/null @@ -1,2 +0,0 @@ -Nested fragment content. -{{include:fragments/intro.md}} diff --git a/scripts/test-fixtures/templates/rules/config.md b/scripts/test-fixtures/templates/rules/config.md deleted file mode 100644 index dc06ff7b..00000000 --- a/scripts/test-fixtures/templates/rules/config.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: test-config -description: >- - Test config reference file. ---- - -# Configuration - -## InteractConfig - -{{term:config-InteractConfig.human}} - -### Fields - -{{term:config-InteractConfig.fields-table}} - -## TriggerType - -{{term:enum-TriggerType.values-table}} diff --git a/scripts/test-fixtures/templates/rules/triggers.md b/scripts/test-fixtures/templates/rules/triggers.md deleted file mode 100644 index 1163142b..00000000 --- a/scripts/test-fixtures/templates/rules/triggers.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: test-triggers -description: >- - Test trigger reference file. ---- - -# Triggers - -## viewEnter - -{{term:trigger-viewEnter.human}} - -### Parameters - -{{term:trigger-viewEnter.params-table}} - -### Caveats - -{{term:trigger-viewEnter.caveats-list}} - -## hover - -{{term:trigger-hover.llm}} diff --git a/scripts/test-fixtures/templates/rules/with-include.md b/scripts/test-fixtures/templates/rules/with-include.md deleted file mode 100644 index 76f76a23..00000000 --- a/scripts/test-fixtures/templates/rules/with-include.md +++ /dev/null @@ -1,9 +0,0 @@ -# Overview - -{{include:fragments/intro.md}} - -## API - -{{term:api-create.signature}} - -{{term:api-create.code}} diff --git a/scripts/validate-context.js b/scripts/validate-context.js deleted file mode 100644 index 729e72f5..00000000 --- a/scripts/validate-context.js +++ /dev/null @@ -1,140 +0,0 @@ -import { parseArgs } from 'node:util'; -import { existsSync } from 'node:fs'; -import { join } from 'node:path'; -import { loadAndValidateGlossary } from './context/glossary-loader.js'; -import { createProject, validateTermAgainstSource } from './context/ts-extractor.js'; -import { discoverPackages, PACKAGES_DIR } from './context/cli-helpers.js'; - -const { values: flags } = parseArgs({ - options: { - package: { type: 'string', multiple: true }, - all: { type: 'boolean', default: false }, - json: { type: 'boolean', default: false }, - verbose: { type: 'boolean', default: false }, - }, - strict: true, -}); - -function validatePackage(pkgName) { - const pkgDir = join(PACKAGES_DIR, pkgName); - const glossaryPath = join(pkgDir, 'context', 'glossary.yaml'); - - if (!existsSync(glossaryPath)) { - return { - package: pkgName, - totalTerms: 0, - validated: 0, - skipped: 0, - errors: [{ termId: '', check: 'file-exists', message: `Glossary not found: ${glossaryPath}` }], - warnings: [], - }; - } - - const { data, errors: schemaErrors } = loadAndValidateGlossary(glossaryPath); - - if (schemaErrors.length > 0) { - return { - package: data?.meta?.package || pkgName, - totalTerms: 0, - validated: 0, - skipped: 0, - errors: schemaErrors.map((msg) => ({ termId: '', check: 'schema', message: msg })), - warnings: [], - }; - } - - const terms = data.terms; - const termsWithSource = terms.filter((t) => t.sourceFile && t.sourceName); - const project = createProject(pkgDir); - - const results = []; - const allErrors = []; - const allWarnings = []; - - for (const term of termsWithSource) { - const { errors, warnings } = validateTermAgainstSource(term, project, pkgDir); - - for (const e of errors) { - allErrors.push({ termId: term.id, ...e, sourceFile: term.sourceFile, sourceName: term.sourceName }); - } - for (const w of warnings) { - allWarnings.push({ termId: term.id, ...w, sourceFile: term.sourceFile, sourceName: term.sourceName }); - } - - results.push({ term, errors, warnings }); - } - - return { - package: data.meta.package, - totalTerms: terms.length, - validated: termsWithSource.length, - skipped: terms.length - termsWithSource.length, - errors: allErrors, - warnings: allWarnings, - results, - }; -} - -let packages; -try { - packages = discoverPackages(flags); -} catch (e) { - console.error(e.message); - process.exit(1); -} - -if (packages.length === 0) { - console.error('No packages specified. Use --package or --all.'); - process.exit(1); -} - -let hasErrors = false; - -for (const pkgName of packages) { - const report = validatePackage(pkgName); - - if (flags.json) { - const { results, ...jsonReport } = report; - console.log(JSON.stringify(jsonReport, null, 2)); - } else { - console.log(`\nValidating ${report.package} glossary (${report.totalTerms} terms, ${report.validated} with sourceFile)...`); - console.log(''); - - if (report.results) { - for (const { term, errors, warnings } of report.results) { - if (errors.length === 0 && warnings.length === 0) { - const members = term.params ?? term.fields ?? term.values ?? []; - console.log(`✓ ${term.id} — ${term.sourceName} in ${term.sourceFile}${members.length ? ` — ${members.length} members match` : ''}`); - if (flags.verbose) { - for (const m of members) { - console.log(` ✓ ${m.name ?? m.value}`); - } - } - } else { - console.log(`✗ ${term.id} — ${term.sourceName} in ${term.sourceFile}`); - for (const e of errors) { - console.log(` ERROR: ${e.message}`); - } - for (const w of warnings) { - console.log(` WARNING: ${w.message}`); - } - } - } - } - - if (report.skipped > 0) { - console.log(`- ${report.skipped} term(s) skipped (no sourceFile)`); - } - - console.log(''); - const failedTerms = new Set(report.errors.map((e) => e.termId)).size; - const passed = report.validated - failedTerms; - console.log(`Summary: ${passed} passed, ${report.errors.length} error(s), ${report.warnings.length} warning(s), ${report.skipped} skipped`); - } - - if (report.errors.length > 0) { - hasErrors = true; - } -} - -process.exit(hasErrors ? 1 : 0); diff --git a/scripts/vitest.config.js b/scripts/vitest.config.js deleted file mode 100644 index 2fd48c08..00000000 --- a/scripts/vitest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { - root: import.meta.dirname, - include: ['**/*.test.js'], - }, -}); From 4c05335e702fe0c986150f7fb7bb1863c06233ec Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 14:09:42 +0300 Subject: [PATCH 08/18] removing old stale implementation --- context_ssot_spec.md | 972 --------------------------------------- scripts/build-landing.sh | 27 ++ 2 files changed, 27 insertions(+), 972 deletions(-) delete mode 100644 context_ssot_spec.md create mode 100644 scripts/build-landing.sh diff --git a/context_ssot_spec.md b/context_ssot_spec.md deleted file mode 100644 index 58ee6790..00000000 --- a/context_ssot_spec.md +++ /dev/null @@ -1,972 +0,0 @@ -# Phase 0 Specification: Context SSOT Infrastructure - -This document is the detailed implementation spec for **Phase 0** of the [Context SSOT Restructure plan](.cursor/plans/context_ssot_restructure_c6889ec0.plan.md). Phase 0 delivers the shared tooling (YAML schema, marker syntax, build script, validation script) that all subsequent per-package phases depend on. - ---- - -## Table of Contents - -- [1. YAML Glossary Schema](#1-yaml-glossary-schema) - - [1.1 Top-Level Structure](#11-top-level-structure) - - [1.2 Term Entry Schema](#12-term-entry-schema) - - [1.3 Param Schema](#13-param-schema) - - [1.4 Field Schema (for config/type categories)](#14-field-schema-for-configtype-categories) - - [1.5 Value Schema (for enum categories)](#15-value-schema-for-enum-categories) - - [1.6 Category Taxonomy](#16-category-taxonomy) - - [1.7 ID Convention](#17-id-convention) - - [1.8 Validation Constraints](#18-validation-constraints) - - [1.9 Annotated Example: Interact glossary excerpt](#19-annotated-example-interact-glossary-excerpt) -- [2. Template Marker Syntax](#2-template-marker-syntax) - - [2.1 Marker Format](#21-marker-format) - - [2.2 Text Renderers](#22-text-renderers) - - [2.3 Formatted Renderers](#23-formatted-renderers) - - [2.4 Structural Markers](#24-structural-markers) - - [2.5 Escaping and Edge Cases](#25-escaping-and-edge-cases) - - [2.6 Renderer Output Formats](#26-renderer-output-formats) -- [3. Build Script (`scripts/build-context.js`)](#3-build-script-scriptsbuild-contextjs) - - [3.1 CLI Interface](#31-cli-interface) - - [3.2 Algorithm](#32-algorithm) - - [3.3 Error Handling](#33-error-handling) - - [3.4 Output File Rules](#34-output-file-rules) - - [3.5 Generated File Header](#35-generated-file-header) -- [4. Validation Script (`scripts/validate-context.js`)](#4-validation-script-scriptsvalidate-contextjs) - - [4.1 CLI Interface](#41-cli-interface) - - [4.2 Extraction Strategy (ts-morph)](#42-extraction-strategy-ts-morph) - - [4.3 What Gets Validated](#43-what-gets-validated) - - [4.4 Report Format](#44-report-format) -- [5. Directory Layout](#5-directory-layout) -- [6. Gitignore and CI Strategy](#6-gitignore-and-ci-strategy) -- [7. Root `package.json` Changes](#7-root-packagejson-changes) -- [8. Dependencies](#8-dependencies) -- [9. Template File Conventions](#9-template-file-conventions) - - [9.1 Rules Templates](#91-rules-templates) - - [9.2 Docs Templates](#92-docs-templates) -- [10. Acceptance Criteria](#10-acceptance-criteria) - ---- - -## 1. YAML Glossary Schema - -### 1.1 Top-Level Structure - -Each package gets one `context/glossary.yaml`. The file has two top-level keys: - -```yaml -meta: - package: "@wix/interact" - version: "2.2.2" # tracks which package version was audited - lastAudit: "2026-05-13" # ISO date of last source-code verification - -terms: - - id: trigger-viewEnter - # ... term fields ... - - id: effect-type-time - # ... -``` - -| Key | Type | Required | Description | -| ------ | -------- | -------- | --------------------------------------------------- | -| `meta` | object | yes | Package identity and audit provenance | -| `terms`| array | yes | All glossary entries (triggers, types, API, etc.) | - -`meta` fields: - -| Field | Type | Required | Description | -| ----------- | ------ | -------- | ------------------------------------------------- | -| `package` | string | yes | npm package name | -| `version` | string | yes | Package version at last audit | -| `lastAudit` | string | yes | ISO date of last manual source-code verification | - -### 1.2 Term Entry Schema - -Every entry in `terms` has these fields: - -| Field | Type | Required | Description | -| ------------ | ------------- | -------- | ------------------------------------------------------------------------ | -| `id` | string | yes | Unique identifier. See [ID convention](#17-id-convention). | -| `name` | string | yes | Display name (e.g., `viewEnter`, `TimeEffect`, `Interact.create`). | -| `category` | enum string | yes | One of the [category values](#16-category-taxonomy). | -| `llm` | string | yes | Compact LLM-facing description (1-2 sentences). | -| `human` | string | yes | Narrative human-facing description (1-3 sentences). | -| `params` | array | no | Parameter definitions. See [1.3](#13-param-schema). | -| `fields` | array | no | Object field definitions. See [1.4](#14-field-schema-for-configtype-categories). | -| `values` | array | no | Enum member definitions. See [1.5](#15-value-schema-for-enum-categories).| -| `signature` | string | no | TypeScript function signature (for `api` category entries). | -| `returns` | string | no | Return type description (for `api` category entries). | -| `caveats` | array[string] | no | Known gotchas, pitfalls, or non-obvious behaviors. | -| `code` | string | no | Canonical code example (fenced as TypeScript by the renderer). | -| `sourceFile` | string | no | Relative path to the TS source file (for validation). | -| `sourceName` | string | no | Exported symbol name in `sourceFile` (for validation). | -| `related` | array[string] | no | IDs of related terms (used for cross-reference links). | - -**Exactly one of `params`, `fields`, or `values` should be present** when the term describes a structured type. Plain concepts and API entries may have none. A term may have both `params` and `caveats`, or `fields` and `code`, etc. - -### 1.3 Param Schema - -Used for triggers, effect types, API function options, and preset parameters. - -| Field | Type | Required | Description | -| ------------- | ------------------------ | -------- | -------------------------------------------------------- | -| `name` | string | yes | Parameter name as it appears in TypeScript | -| `type` | string | yes | TypeScript type (e.g., `number`, `'x' \| 'y'`, `string`) | -| `default` | string \| number \| null | yes | Default value. Use `null` for "no default" (required param), use the string `"undefined"` for optional with no default. | -| `description` | string | yes | One-line description | -| `required` | boolean | no | Defaults to `false`. Set `true` for non-optional params. | - -Example: - -```yaml -params: - - name: threshold - type: number - default: 0.2 - description: "Fraction of element that must be visible (0–1)" - - name: inset - type: string - default: "undefined" - description: "Mapped to IntersectionObserver rootMargin" - - name: effectId - type: string - default: null - required: true - description: "ID of the preceding effect to chain after" -``` - -### 1.4 Field Schema (for config/type categories) - -Used for config shapes like `InteractConfig`, `Interaction`, `Condition`, etc. - -| Field | Type | Required | Description | -| ------------- | ------------------------ | -------- | ----------------------------------------------- | -| `name` | string | yes | Field name | -| `type` | string | yes | TypeScript type | -| `required` | boolean | yes | Whether the field is required | -| `description` | string | yes | One-line description | - -Example: - -```yaml -fields: - - name: effects - type: "Record" - required: true - description: "Reusable effect definitions keyed by effectId" - - name: interactions - type: "Interaction[]" - required: true - description: "Array of trigger-to-effect bindings" - - name: sequences - type: "Record" - required: false - description: "Reusable sequence definitions keyed by sequenceId" - - name: conditions - type: "Record" - required: false - description: "Named conditions referenced by interactions and effects" -``` - -### 1.5 Value Schema (for enum categories) - -Used for union types like `TriggerType`, `TimeAnimationTriggerType`, `StateAction`, `Fill`. - -| Field | Type | Required | Description | -| ------------- | ------ | -------- | --------------------------------- | -| `value` | string | yes | The literal string value | -| `description` | string | yes | What this value means | - -Example: - -```yaml -values: - - value: "once" - description: "Fires once then stops. Default for viewEnter, pageVisible, animationEnd." - - value: "repeat" - description: "Fires every time the trigger activates." - - value: "alternate" - description: "Alternates between forward and reverse. Default for hover, click, activate, interest." - - value: "state" - description: "Applies a CSS state change via stateAction." -``` - -### 1.6 Category Taxonomy - -The `category` field uses one of these values: - -| Category | For | Example entries | -| ------------- | -------------------------------------------------- | ------------------------------------------------ | -| `trigger` | Trigger types that initiate interactions | `viewEnter`, `hover`, `click`, `pointerMove` | -| `effect-type` | Discriminated effect shapes | `TimeEffect`, `ScrubEffect`, `StateEffect` | -| `config` | Configuration object shapes and their fields | `InteractConfig`, `Interaction`, `Condition` | -| `api` | Exported functions and class methods | `Interact.create`, `add`, `remove`, `generate` | -| `concept` | Cross-cutting ideas explained in prose | FOUC prevention, element resolution, a11y mapping | -| `enum` | Union/literal types with enumerable values | `TriggerType`, `StateAction`, `Fill` | -| `preset` | Named effect presets (motion-presets package only) | `FadeIn`, `ParallaxScroll`, `Tilt3DMouse` | - -### 1.7 ID Convention - -IDs are kebab-case, prefixed with the category: - -``` -{category}-{name} -``` - -Examples: -- `trigger-viewEnter` -- `trigger-hover` -- `effect-type-time` -- `effect-type-scrub` -- `config-InteractConfig` -- `config-Interaction` -- `config-Condition` -- `api-Interact.create` -- `api-generate` -- `concept-fouc` -- `concept-element-resolution` -- `enum-TriggerType` -- `enum-TimeAnimationTriggerType` -- `enum-StateAction` -- `preset-FadeIn` (motion-presets only) - -**Rules:** -- IDs are globally unique within a glossary file. -- The `name` portion preserves the original casing of the TypeScript identifier (e.g., `viewEnter`, not `view-enter`). -- Cross-package `related` references use the format `@package/term-id` (e.g., `@motion/api-registerEffects`). Within the same package, use bare IDs. - -### 1.8 Validation Constraints - -The build script validates these constraints before producing output: - -| Constraint | Error Level | Description | -| --------------------------------- | ----------- | ------------------------------------------------------------ | -| Unique IDs | error | No duplicate `id` values within a glossary | -| Required fields present | error | Every term has `id`, `name`, `category`, `llm`, `human` | -| Valid category | error | `category` is one of the enumerated values | -| Params have required fields | error | Each param has `name`, `type`, `default`, `description` | -| Fields have required fields | error | Each field has `name`, `type`, `required`, `description` | -| Values have required fields | error | Each value has `value`, `description` | -| No orphan related refs | warning | Every ID in `related` exists in the same glossary or uses `@package/` prefix | -| `sourceFile` path exists | warning | The referenced file exists on disk | - -### 1.9 Annotated Example: Interact glossary excerpt - -This is a representative sample showing how the Interact package glossary will look. It covers one entry from each category to demonstrate the schema in practice. - -```yaml -meta: - package: "@wix/interact" - version: "2.2.2" - lastAudit: "2026-05-13" - -terms: - # --- Trigger --- - - id: trigger-viewEnter - name: viewEnter - category: trigger - llm: >- - Fires when element crosses viewport threshold via IntersectionObserver. - pageVisible uses the same handler. - human: >- - Triggers an animation when an element scrolls into the visible area - of the page. Uses IntersectionObserver under the hood, so it works - even for elements that are already in the viewport on page load. - params: - - name: threshold - type: number - default: 0.2 - description: "Fraction of element that must be visible (0–1)" - - name: inset - type: string - default: "undefined" - description: "Mapped to IntersectionObserver rootMargin" - - name: useSafeViewEnter - type: boolean - default: false - description: "Use fallback observer strategy for edge cases" - caveats: - - >- - When source and target are the same element, only triggerType 'once' - is reliable. Other types cause the animation to shift the element - out of the viewport, triggering rapid re-fires. - sourceFile: src/types/triggers.ts - sourceName: ViewEnterParams - related: - - trigger-pageVisible - - concept-fouc - - enum-TimeAnimationTriggerType - - # --- Effect type --- - - id: effect-type-time - name: TimeEffect - category: effect-type - llm: >- - Time-based effect with explicit duration. Used with hover, click, - viewEnter, animationEnd, activate, interest triggers. - human: >- - An effect that runs over a fixed duration in milliseconds. This is - the most common effect type, used for entrance animations, hover - responses, and click interactions. - params: - - name: duration - type: number - default: null - required: true - description: "Animation duration in milliseconds" - - name: easing - type: string - default: "undefined" - description: "CSS easing function string" - - name: iterations - type: number - default: "undefined" - description: "Number of iterations" - - name: alternate - type: boolean - default: "undefined" - description: "Alternate direction on each iteration" - - name: fill - type: Fill - default: "undefined" - description: "Animation fill mode" - - name: reversed - type: boolean - default: "undefined" - description: "Reverse the animation direction" - - name: delay - type: number - default: "undefined" - description: "Delay before animation starts in ms" - - name: triggerType - type: TimeAnimationTriggerType - default: "undefined" - description: "How the trigger repeats. Per-trigger defaults apply." - - name: composite - type: CompositeOperation - default: "undefined" - description: "WAAPI composite operation" - caveats: - - >- - Must also include exactly one effect property: namedEffect, - keyframeEffect, or customEffect. - sourceFile: src/types/effects.ts - sourceName: TimeEffect - related: - - effect-type-scrub - - effect-type-state - - enum-TimeAnimationTriggerType - - # --- Config --- - - id: config-InteractConfig - name: InteractConfig - category: config - llm: >- - Top-level configuration object passed to Interact.create(). - effects is required (not optional despite some docs claiming otherwise). - human: >- - The root configuration object that defines all interactions for a - page or component. Contains effect definitions, interaction bindings, - and optional sequences and conditions. - fields: - - name: effects - type: "Record" - required: true - description: "Reusable effect definitions keyed by effectId" - - name: interactions - type: "Interaction[]" - required: true - description: "Array of trigger-to-effect bindings" - - name: sequences - type: "Record" - required: false - description: "Reusable sequence definitions keyed by sequenceId" - - name: conditions - type: "Record" - required: false - description: "Named conditions referenced by interactions and effects" - caveats: - - >- - effects is REQUIRED in the TypeScript type despite some - current docs/rules describing it as optional. - sourceFile: src/types/config.ts - sourceName: InteractConfig - related: - - config-Interaction - - config-Condition - - # --- API --- - - id: api-Interact.create - name: Interact.create - category: api - llm: >- - Creates a new Interact instance from config. Multiple calls create - independent instances. Returns the instance. - human: >- - Initializes the interaction system with a configuration object. - Call this once per logical scope (page, component, lazy section). - Returns an instance you can use to add elements or destroy later. - signature: "static create(config: InteractConfig, options?: { useCustomElement?: boolean }): Interact" - returns: "Interact instance" - code: | - const instance = Interact.create(config); - sourceFile: src/core/Interact.ts - sourceName: create - related: - - api-Interact.destroy - - config-InteractConfig - - # --- Concept --- - - id: concept-fouc - name: FOUC Prevention - category: concept - llm: >- - Requires BOTH generate(config) to produce critical CSS AND - data-interact-initial="true" on elements. Using only one has no effect. - human: >- - Flash of Un-animated Content (FOUC) occurs when entrance-animated - elements briefly show their final state before the animation runs. - Preventing it requires two coordinated steps: generating critical CSS - that hides elements in their pre-animation state, and marking those - elements so the runtime knows to apply the hiding styles. - caveats: - - "Only valid for viewEnter + triggerType 'once' where source and target are the same element." - - "generate() should run server-side or at build time." - code: | - import { generate } from '@wix/interact/web'; - const css = generate(config); - // Inject into : - // Mark elements: data-interact-initial="true" - related: - - api-generate - - trigger-viewEnter - - # --- Enum --- - - id: enum-TimeAnimationTriggerType - name: TimeAnimationTriggerType - category: enum - llm: >- - Controls repeat behavior: 'once' (default for viewEnter/pageVisible/animationEnd), - 'repeat', 'alternate' (default for hover/click/activate/interest), 'state'. - human: >- - Determines how an effect responds when its trigger fires multiple - times. The default depends on the trigger type. - values: - - value: "once" - description: "Fires once then stops. Default for viewEnter, pageVisible, animationEnd." - - value: "repeat" - description: "Fires every time the trigger activates." - - value: "alternate" - description: "Alternates forward/reverse. Default for hover, click, activate, interest." - - value: "state" - description: "Applies CSS state via stateAction instead of running an animation." - sourceFile: src/types/effects.ts - sourceName: TimeAnimationTriggerType - related: - - effect-type-time - - enum-StateAction -``` - ---- - -## 2. Template Marker Syntax - -### 2.1 Marker Format - -All markers use double-brace delimiters: - -``` -{{type:argument}} -``` - -There are two families of markers: - -1. **Term markers** — reference glossary data: `{{term:id.renderer}}` -2. **Structural markers** — control document assembly: `{{include:path}}` - -### 2.2 Text Renderers - -These inject a glossary field value as plain text (no formatting added): - -| Marker | Output | -| ------------------------- | ---------------------------------------- | -| `{{term:id.name}}` | The `name` field | -| `{{term:id.llm}}` | The `llm` description | -| `{{term:id.human}}` | The `human` description | -| `{{term:id.signature}}` | The `signature` field (inline code) | -| `{{term:id.returns}}` | The `returns` field | - -`signature` is wrapped in backtick fences when rendered: - -```markdown -`static create(config: InteractConfig, options?: { useCustomElement?: boolean }): Interact` -``` - -### 2.3 Formatted Renderers - -These generate structured markdown from array fields: - -| Marker | Source Field | Output Format | -| ---------------------------- | ------------ | ------------------------------ | -| `{{term:id.params-table}}` | `params` | Markdown table | -| `{{term:id.fields-table}}` | `fields` | Markdown table | -| `{{term:id.values-table}}` | `values` | Markdown table | -| `{{term:id.caveats-list}}` | `caveats` | Bullet list | -| `{{term:id.code}}` | `code` | Fenced TypeScript code block | - -### 2.4 Structural Markers - -| Marker | Behavior | -| ------------------------------- | -------------------------------------------------------------- | -| `{{include:path/to/fragment.md}}` | Replaced with the contents of the referenced file. Path is relative to the package's `context/templates/` directory. Included files are also processed for markers (single level of nesting; includes within includes are not resolved). | - -### 2.5 Escaping and Edge Cases - -| Scenario | Behavior | -| ---------------------------------- | ------------------------------------------------------------- | -| Marker inside fenced code block | **Not replaced.** The build script uses a simple toggle (flip state on lines starting with `` ``` `` or `~~~`) to detect code regions. | -| Marker with unknown term ID | **Build error.** The script exits with code 1 and reports the file and unresolved marker. | -| Marker with unknown renderer | **Build error.** Same as above. | -| Term exists but requested field is empty/missing | **Build error** for required renderers (`llm`, `human`, `name`). **Renders as empty string** for optional fields (`code`, `caveats`, `signature`). When `params`, `fields`, or `values` is missing and a table renderer is called, renders the string `*No parameters.*`, `*No fields.*`, or `*No values.*` respectively. | -| `{{include:...}}` target not found | **Build error.** Reports the missing file path. | -| Literal `{{` in output | Use `\{{` to produce a literal `{{` in the rendered output. | - -### 2.6 Renderer Output Formats - -**`params-table`** produces: - -```markdown -| Param | Type | Default | Description | -| ----- | ---- | ------- | ----------- | -| `threshold` | `number` | `0.2` | Fraction of element that must be visible (0–1) | -| `inset` | `string` | — | Mapped to IntersectionObserver rootMargin | -``` - -Rules: -- Param names and types are wrapped in backticks. -- `default: null` (required param) renders as `**required**`. -- `default: "undefined"` (optional, no default) renders as `—`. -- All other defaults are wrapped in backticks. -- If `required: true`, a bold `**required**` is used in the Default column regardless of the `default` value. - -**`fields-table`** produces: - -```markdown -| Field | Type | Required | Description | -| ----- | ---- | -------- | ----------- | -| `effects` | `Record` | yes | Reusable effect definitions keyed by effectId | -| `interactions` | `Interaction[]` | yes | Array of trigger-to-effect bindings | -| `sequences` | `Record` | no | Reusable sequence definitions keyed by sequenceId | -``` - -**`values-table`** produces: - -```markdown -| Value | Description | -| ----- | ----------- | -| `'once'` | Fires once then stops. Default for viewEnter, pageVisible, animationEnd. | -| `'repeat'` | Fires every time the trigger activates. | -``` - -Values are wrapped in single quotes inside backticks. - -**`caveats-list`** produces: - -```markdown -- ⚠️ When source and target are the same element, only triggerType 'once' is reliable. -- ⚠️ generate() should run server-side or at build time. -``` - -Each caveat gets a `⚠️` prefix for visual scanning. - -**`code`** produces: - -````markdown -```typescript -const instance = Interact.create(config); -``` -```` - -The `code` field value is wrapped in a TypeScript fenced block. - ---- - -## 3. Build Script (`scripts/build-context.js`) - -### 3.1 CLI Interface - -```bash -node scripts/build-context.js --package [--package ] [--all] [--dry-run] [--verbose] -``` - -| Flag | Description | -| ------------ | ------------------------------------------------------------- | -| `--package` | Package directory name (e.g., `interact`, `motion`, `motion-presets`). Repeatable. | -| `--all` | Process all packages that have a `context/` directory. | -| `--dry-run` | Validate and report what would be written, without writing. | -| `--verbose` | Print each marker resolution to stdout. | - -**Exit codes:** -- `0` — success, all files written. -- `1` — one or more errors (unresolved markers, missing terms, schema violations). No files are written on error. - -### 3.2 Algorithm - -For each package: - -1. **Read glossary.** Parse `packages//context/glossary.yaml` using the `yaml` npm package. Validate against the schema constraints in [1.8](#18-validation-constraints). Abort on error. - -2. **Index terms.** Build a `Map` for O(1) lookups. - -3. **Discover templates.** Recursively glob `packages//context/templates/rules/**/*.md` and `packages//context/templates/docs/**/*.md`. - -4. **Process each template.** - - Read the file contents as an array of lines. - - Track code-fence state: toggle a boolean `inCodeBlock` on any line whose trimmed content starts with `` ``` `` or `~~~`. This is a simple parity toggle — no line-range bookkeeping needed. - - For each line where `inCodeBlock` is false, find all `{{...}}` markers using regex: `/(? - -``` - -This prevents accidental edits to generated files and points to the source. - ---- - -## 4. Validation Script (`scripts/validate-context.js`) - -### 4.1 CLI Interface - -```bash -node scripts/validate-context.js --package [--all] [--json] -``` - -| Flag | Description | -| ----------- | -------------------------------------------------------------- | -| `--package` | Package directory name. Repeatable. | -| `--all` | Validate all packages with a `context/` directory. | -| `--json` | Output report as JSON instead of human-readable text. | - -**Exit codes:** -- `0` — all checks pass. -- `1` — one or more validation errors. - -### 4.2 Extraction Strategy (ts-morph) - -**Phase 0 uses `ts-morph` for TypeScript source analysis.** This replaces fragile regex-based parsing that would need to handle multi-line types, generics, union types, intersections, and conditional types — all patterns present in this codebase. - -`ts-morph` wraps the TypeScript compiler API in a high-level interface. It leverages the same `typescript` package already in the monorepo's devDependencies, so there is no version conflict or duplicate. It provides: - -- Reliable type/interface member enumeration (names, optionality) -- Union type literal extraction (for enum validation) -- Export symbol discovery (for API validation) -- Proper resolution of type aliases, intersections, and re-exports - -**How it's used:** - -```javascript -import { Project } from 'ts-morph'; - -const project = new Project({ - tsConfigFilePath: `packages/${pkg}/tsconfig.json`, - skipAddingFilesFromTsConfig: true, -}); - -project.addSourceFileAtPath(sourceFilePath); -const sourceFile = project.getSourceFileOrThrow(sourceFilePath); - -// For type aliases: get properties -const typeAlias = sourceFile.getTypeAlias(sourceName); -const type = typeAlias.getType(); -const properties = type.getProperties(); -for (const prop of properties) { - const name = prop.getName(); - const isOptional = prop.isOptional(); -} - -// For union types: get literal values -if (type.isUnion()) { - const literals = type.getUnionTypes() - .filter(t => t.isStringLiteral()) - .map(t => t.getLiteralValue()); -} -``` - -This approach is deterministic — no string parsing, no whitespace sensitivity, no false positives from formatting differences. - -### 4.3 What Gets Validated - -For each glossary entry that has both `sourceFile` and `sourceName`: - -| Check | What it does | Severity | -| ---------------------- | -------------------------------------------------------------------------------- | -------- | -| File exists | `sourceFile` resolves to an existing `.ts` file | error | -| Symbol exists | `sourceName` is found as an exported type/interface/const/function | error | -| Param names match | Every `params[].name` exists as a property of the source type | error | -| Param optionality | Each param's `required` matches whether the source property has `?` | warning | -| Field names match | Every `fields[].name` exists as a property of the source type | error | -| Value members match | Every `values[].value` appears as a string literal in the source union type | error | -| No missing members | Source type has no properties missing from the glossary params/fields | warning | -| Export still exists | For `api` entries, the symbol is still exported from the package entry point | warning | - -**What is NOT validated** (to keep things reliable and avoid false positives): - -- **Type text matching** — The `type` field in the glossary is for human/LLM display, not a contract. ts-morph resolves to fully-qualified types that may differ in formatting from what we write in the glossary (e.g., `Fill` vs the resolved `"forwards" | "backwards" | "both" | "none"`). Comparing these would produce noise. -- **Default values** — Defaults live in runtime code (destructuring, handler initialization), not in type definitions. Verifying them would require tracing control flow. Defaults are verified manually during the audit phase (Phase 1). -- **Cross-file inherited members** — If a type extends another from a different file, only direct properties are checked. Inherited members require manual review. - -### 4.4 Report Format - -**Human-readable (default):** - -``` -Validating @wix/interact glossary (42 terms, 28 with sourceFile)... - -✓ trigger-viewEnter — ViewEnterParams in src/types/triggers.ts — 3/3 params match -- trigger-hover — no sourceFile (skipped) -✗ config-InteractConfig — InteractConfig in src/types/config.ts - ERROR: glossary field "effects" marked required=false but source property is required - WARNING: source has property "interactions" not listed in glossary fields - -Summary: 26 passed, 1 error, 2 warnings, 14 skipped (no sourceFile) -``` - -**JSON (with `--json`):** - -```json -{ - "package": "@wix/interact", - "totalTerms": 42, - "validated": 28, - "skipped": 14, - "errors": [ - { - "termId": "config-InteractConfig", - "check": "field-required", - "message": "glossary field 'effects' marked required=false but source property is required", - "sourceFile": "src/types/config.ts", - "sourceName": "InteractConfig" - } - ], - "warnings": [] -} -``` - ---- - -## 5. Directory Layout - -After Phase 0, the repo will have these new files: - -``` -interact/ # monorepo root -├── scripts/ -│ ├── build-context.js # NEW — glossary + templates → rules/ + docs/ -│ └── validate-context.js # NEW — glossary vs TS source checker -├── packages/ -│ ├── interact/ -│ │ ├── context/ # NEW — SSOT source -│ │ │ ├── glossary.yaml -│ │ │ └── templates/ -│ │ │ ├── rules/ -│ │ │ │ ├── overview.md -│ │ │ │ ├── config.md -│ │ │ │ ├── triggers.md -│ │ │ │ ├── effects.md -│ │ │ │ └── pitfalls.md -│ │ │ └── docs/ -│ │ │ ├── README.md -│ │ │ ├── guides/ -│ │ │ │ └── ... -│ │ │ ├── api/ -│ │ │ │ └── ... -│ │ │ └── ... -│ │ ├── rules/ # OUTPUT (generated) -│ │ │ ├── overview.md -│ │ │ └── ... -│ │ └── docs/ # OUTPUT (generated) -│ │ └── ... -│ ├── motion/ -│ │ └── context/ # Created in Phase 2 -│ └── motion-presets/ -│ └── context/ # Created in Phase 3 -``` - -Phase 0 delivers only `scripts/build-context.js` and `scripts/validate-context.js`. The `context/` directories are created during each package's phase, not during Phase 0. However, a minimal test fixture is created to verify the scripts work (see [Acceptance Criteria](#10-acceptance-criteria)). - ---- - -## 6. Gitignore and CI Strategy - -**Decision: Commit generated output.** - -Rationale: -- `packages/interact/package.json` includes `"rules"` and `"docs"` in its `"files"` array, meaning they are published to npm. If these were gitignored, a pre-publish build step would be required — adding complexity and a new failure mode. -- The `apps/docs` dev server mounts `packages/interact/rules/` and `packages/interact/docs/` directly via Vite aliases. Gitignoring them would require running the build script before `dev:docs` works. -- Committing generated output follows the same pattern as lockfiles: the source of truth is the input (glossary + templates), and CI verifies the output is in sync. - -**CI verification step** (added to the existing CI workflow): - -```yaml -- name: Verify context output is up to date - run: | - node scripts/build-context.js --all - git diff --exit-code packages/*/rules/ packages/*/docs/ -``` - -If someone edits the glossary or templates but forgets to re-run the build, CI catches it. - -**No `.gitignore` changes needed** — `rules/` and `docs/` remain tracked. - -**Generated file header** (from [3.5](#35-generated-file-header)) serves as the safety mechanism against accidental direct edits during development. - ---- - -## 7. Root `package.json` Changes - -The `scripts/` directory is registered as a Yarn workspace (`@wix/context-scripts`) with its own `package.json` that holds the `yaml`, `ts-morph`, and `vitest` devDependencies. Three new scripts delegate to it from the root: - -```json -{ - "scripts": { - "build:context": "yarn workspace @wix/context-scripts run build", - "validate:context": "yarn workspace @wix/context-scripts run validate", - "test:context": "yarn workspace @wix/context-scripts run test" - }, - "workspaces": ["packages/*", "apps/*", "scripts"] -} -``` - -This uses Yarn workspace delegation rather than direct `node` invocation so that dependencies resolve correctly through the workspace's own `package.json`. The scripts are not wired into the main `build` command — context building is a separate concern that runs less frequently than code builds. - ---- - -## 8. Dependencies - -| Dependency | Purpose | Type | Notes | -| ---------- | ------------------------------------ | ------ | ---------------------------------------------- | -| `yaml` | Parse YAML glossary files | devDep | Standard YAML parser; ~50KB | -| `ts-morph` | TypeScript AST analysis (validation) | devDep | Wraps the TS compiler API; uses existing `typescript` devDep | - -The scripts also use: -- `node:fs` / `node:path` / `node:process` — built-in -- `node:util` — for `parseArgs` (built-in since Node 18.3, available in this repo's Node 22) - -**Dependencies live in `scripts/package.json`** (the `@wix/context-scripts` workspace), not in the root `package.json`. - ---- - -## 9. Template File Conventions - -### 9.1 Rules Templates - -Rules templates target LLM consumers. Conventions: - -**Frontmatter:** Every rules template starts with YAML frontmatter matching the existing motion-presets pattern: - -```yaml ---- -name: interact-triggers -description: >- - Complete trigger reference for @wix/interact. Read when configuring - viewEnter, hover, click, pointerMove, viewProgress, or other triggers. ---- -``` - -| Field | Required | Purpose | -| ------------- | -------- | ------------------------------------------------------- | -| `name` | yes | Kebab-case identifier for this rule file | -| `description` | yes | Agent-facing routing hint (when to load this file) | - -The build script **preserves frontmatter as-is** in the output. It does not process markers inside frontmatter. - -**Table of Contents:** After frontmatter, include a `## Table of Contents` section with anchor links to all `##`/`###` headings. This supports LLM selective reading. - -**Section separators:** Use `---` between major sections. - -**Param tables:** Use `{{term:id.params-table}}` markers. Do not hand-write param tables. - -**Code examples:** Keep examples minimal (3-8 lines). Use `{{term:id.code}}` when the glossary has a canonical example, or write inline examples in the template for context-specific usage. - -**Cross-references:** Use relative links to sibling rule files: `[triggers](./triggers.md)`. Never reference docs from rules (different audience). - -### 9.2 Docs Templates - -Docs templates target human developers. Conventions: - -**No frontmatter.** Docs files use standard markdown. The `## Table of Contents` pattern is optional (docs may use auto-generated TOCs from the docs app). - -**Narrative style.** Docs explain "why" and "when", not just "what". Use `{{term:id.human}}` for descriptions, not `{{term:id.llm}}`. - -**Same param tables.** Use the same `{{term:id.params-table}}` markers as rules. The tables are identical — only the surrounding prose differs. - -**Longer code examples.** Docs may include multi-step examples that combine multiple concepts. These are written directly in the template, not pulled from the glossary. - ---- - -## 10. Acceptance Criteria - -Phase 0 is complete when: - -1. **`scripts/build-context.js` exists** and can: - - Parse a `glossary.yaml` file - - Process template files with all marker types (text renderers, formatted renderers, includes) - - Write output files preserving directory structure - - Fail with clear errors on unknown terms, missing fields, or broken includes - - Skip markers inside fenced code blocks - -2. **`scripts/validate-context.js` exists** and can: - - Parse a `glossary.yaml` file - - For each term with `sourceFile`/`sourceName`, use ts-morph to extract type properties - - Report mismatches between glossary entries and source code (missing/extra members, optionality) - - Exit 0 on success, 1 on errors - -3. **Test fixture passes.** A Vitest test file (`scripts/build-context.test.js`) exercises: - - All renderers (name, llm, human, params-table, fields-table, values-table, caveats-list, code, signature, returns) - - The `{{include:...}}` marker - - Error cases: unknown term, missing field, include-not-found - - Fenced-code-block skipping - - Test fixtures live in `scripts/test-fixtures/` - -4. **Root `package.json`** has `build:context` and `validate:context` scripts. - -5. **`yaml` and `ts-morph` devDependencies** are installed at the root. - -6. **No existing tests break.** Running `yarn test` at the root still passes. - -7. **No existing builds break.** Running `yarn build` and `yarn workspace @wix/interact-docs run build` still pass (the scripts don't modify any existing files). diff --git a/scripts/build-landing.sh b/scripts/build-landing.sh new file mode 100644 index 00000000..dcec1859 --- /dev/null +++ b/scripts/build-landing.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# Builds all packages and copies the dist files into apps/website/assets/lib/ +# so that index.html can load Interact and Presets from local bundles. +# +# Usage: +# yarn workspace @wix/interact build:landing (from anywhere in the repo) +# ./scripts/build-landing.sh (from repo root) + +set -euo pipefail + +REPO_ROOT="$(git rev-parse --show-toplevel)" +LIB_DIR="$REPO_ROOT/apps/website/assets/lib" + +yarn workspaces foreach --all --topological --include 'packages/*' run build + +rm -rf "$LIB_DIR/interact" "$LIB_DIR/motion-presets" "$LIB_DIR/motion" + +mkdir -p "$LIB_DIR/interact/es" +mkdir -p "$LIB_DIR/motion-presets" +mkdir -p "$LIB_DIR/motion" + +cp "$REPO_ROOT/packages/interact/dist/es/web.js" "$LIB_DIR/interact/es/" +cp "$REPO_ROOT/packages/interact/dist"/index-*.mjs "$LIB_DIR/interact/" +cp "$REPO_ROOT/packages/motion-presets/dist/es/motion-presets.js" "$LIB_DIR/motion-presets/" +cp "$REPO_ROOT/packages/motion/dist/es/motion.js" "$LIB_DIR/motion/" + +echo "Landing page libraries copied to apps/website/assets/lib/" \ No newline at end of file From 96c6e23e35d16c3f8a53138e1606efc3511e187c Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 14:15:14 +0300 Subject: [PATCH 09/18] removing old stale implementation --- scripts/build-landing.sh | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build-landing.sh b/scripts/build-landing.sh index dcec1859..cfb9027d 100644 --- a/scripts/build-landing.sh +++ b/scripts/build-landing.sh @@ -24,4 +24,4 @@ cp "$REPO_ROOT/packages/interact/dist"/index-*.mjs "$LIB_DIR/interact/" cp "$REPO_ROOT/packages/motion-presets/dist/es/motion-presets.js" "$LIB_DIR/motion-presets/" cp "$REPO_ROOT/packages/motion/dist/es/motion.js" "$LIB_DIR/motion/" -echo "Landing page libraries copied to apps/website/assets/lib/" \ No newline at end of file +echo "Landing page libraries copied to apps/website/assets/lib/" diff --git a/yarn.lock b/yarn.lock index 7bd4a028..bf3cc020 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6721,4 +6721,4 @@ __metadata: resolution: "zwitch@npm:2.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fzwitch%2F-%2Fzwitch-2.0.4.tgz" checksum: 10/f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 languageName: node - linkType: hard + linkType: hard \ No newline at end of file From a803bd57df09ca217c87feb8a9f26df38b83c2ec Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 14:17:40 +0300 Subject: [PATCH 10/18] removing old stale implementation --- scripts/build-landing.sh | 0 yarn.lock | 2674 ++++++++++++++++---------------------- 2 files changed, 1151 insertions(+), 1523 deletions(-) mode change 100644 => 100755 scripts/build-landing.sh diff --git a/scripts/build-landing.sh b/scripts/build-landing.sh old mode 100644 new mode 100755 diff --git a/yarn.lock b/yarn.lock index bf3cc020..37c69d01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,7 +7,7 @@ __metadata: "@asamuzakjp/css-color@npm:^3.2.0": version: 3.2.0 - resolution: "@asamuzakjp/css-color@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40asamuzakjp%2Fcss-color%2F-%2Fcss-color-3.2.0.tgz" + resolution: "@asamuzakjp/css-color@npm:3.2.0" dependencies: "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-color-parser": "npm:^3.0.9" @@ -20,7 +20,7 @@ __metadata: "@babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 - resolution: "@babel/code-frame@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fcode-frame%2F-%2Fcode-frame-7.29.0.tgz" + resolution: "@babel/code-frame@npm:7.29.0" dependencies: "@babel/helper-validator-identifier": "npm:^7.28.5" js-tokens: "npm:^4.0.0" @@ -30,15 +30,15 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.28.6": - version: 7.29.3 - resolution: "@babel/compat-data@npm:7.29.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fcompat-data%2F-%2Fcompat-data-7.29.3.tgz" - checksum: 10/3c29661756a7c1cbc5248a7bdc657c0cb49f350e3157040c20486759f1f50a08a0b385fd7d813df50b96cd6fad5896d30ba6abab7602641bd1410ed346c1812f + version: 7.29.0 + resolution: "@babel/compat-data@npm:7.29.0" + checksum: 10/7f21beedb930ed8fbf7eabafc60e6e6521c1d905646bf1317a61b2163339157fe797efeb85962bf55136e166b01fd1a6b526a15974b92a8b877d564dcb6c9580 languageName: node linkType: hard "@babel/core@npm:^7.28.0": version: 7.29.0 - resolution: "@babel/core@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fcore%2F-%2Fcore-7.29.0.tgz" + resolution: "@babel/core@npm:7.29.0" dependencies: "@babel/code-frame": "npm:^7.29.0" "@babel/generator": "npm:^7.29.0" @@ -61,7 +61,7 @@ __metadata: "@babel/generator@npm:^7.29.0": version: 7.29.1 - resolution: "@babel/generator@npm:7.29.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fgenerator%2F-%2Fgenerator-7.29.1.tgz" + resolution: "@babel/generator@npm:7.29.1" dependencies: "@babel/parser": "npm:^7.29.0" "@babel/types": "npm:^7.29.0" @@ -74,7 +74,7 @@ __metadata: "@babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/helper-compilation-targets@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-compilation-targets%2F-%2Fhelper-compilation-targets-7.28.6.tgz" + resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: "@babel/compat-data": "npm:^7.28.6" "@babel/helper-validator-option": "npm:^7.27.1" @@ -87,14 +87,14 @@ __metadata: "@babel/helper-globals@npm:^7.28.0": version: 7.28.0 - resolution: "@babel/helper-globals@npm:7.28.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-globals%2F-%2Fhelper-globals-7.28.0.tgz" + resolution: "@babel/helper-globals@npm:7.28.0" checksum: 10/91445f7edfde9b65dcac47f4f858f68dc1661bf73332060ab67ad7cc7b313421099a2bfc4bda30c3db3842cfa1e86fffbb0d7b2c5205a177d91b22c8d7d9cb47 languageName: node linkType: hard "@babel/helper-module-imports@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/helper-module-imports@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-module-imports%2F-%2Fhelper-module-imports-7.28.6.tgz" + resolution: "@babel/helper-module-imports@npm:7.28.6" dependencies: "@babel/traverse": "npm:^7.28.6" "@babel/types": "npm:^7.28.6" @@ -104,7 +104,7 @@ __metadata: "@babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/helper-module-transforms@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-module-transforms%2F-%2Fhelper-module-transforms-7.28.6.tgz" + resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: "@babel/helper-module-imports": "npm:^7.28.6" "@babel/helper-validator-identifier": "npm:^7.28.5" @@ -117,39 +117,39 @@ __metadata: "@babel/helper-plugin-utils@npm:^7.27.1": version: 7.28.6 - resolution: "@babel/helper-plugin-utils@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-plugin-utils%2F-%2Fhelper-plugin-utils-7.28.6.tgz" + resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10/21c853bbc13dbdddf03309c9a0477270124ad48989e1ad6524b83e83a77524b333f92edd2caae645c5a7ecf264ec6d04a9ebe15aeb54c7f33c037b71ec521e4a languageName: node linkType: hard "@babel/helper-string-parser@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/helper-string-parser@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-string-parser%2F-%2Fhelper-string-parser-7.27.1.tgz" + resolution: "@babel/helper-string-parser@npm:7.27.1" checksum: 10/0ae29cc2005084abdae2966afdb86ed14d41c9c37db02c3693d5022fba9f5d59b011d039380b8e537c34daf117c549f52b452398f576e908fb9db3c7abbb3a00 languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 - resolution: "@babel/helper-validator-identifier@npm:7.28.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-validator-identifier%2F-%2Fhelper-validator-identifier-7.28.5.tgz" + resolution: "@babel/helper-validator-identifier@npm:7.28.5" checksum: 10/8e5d9b0133702cfacc7f368bf792f0f8ac0483794877c6dca5fcb73810ee138e27527701826fb58a40a004f3a5ec0a2f3c3dd5e326d262530b119918f3132ba7 languageName: node linkType: hard "@babel/helper-validator-option@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/helper-validator-option@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelper-validator-option%2F-%2Fhelper-validator-option-7.27.1.tgz" + resolution: "@babel/helper-validator-option@npm:7.27.1" checksum: 10/db73e6a308092531c629ee5de7f0d04390835b21a263be2644276cb27da2384b64676cab9f22cd8d8dbd854c92b1d7d56fc8517cf0070c35d1c14a8c828b0903 languageName: node linkType: hard "@babel/helpers@npm:^7.28.6": - version: 7.29.2 - resolution: "@babel/helpers@npm:7.29.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fhelpers%2F-%2Fhelpers-7.29.2.tgz" + version: 7.28.6 + resolution: "@babel/helpers@npm:7.28.6" dependencies: "@babel/template": "npm:^7.28.6" - "@babel/types": "npm:^7.29.0" - checksum: 10/ad77706f3f917bd224e037fd0fbc67c45b240d2a45981321b093f70b7c535bee9bbddb0a19e34c362cb000ae21cdd8638f8a87a5f305a5bd7547e93fdcc524fe + "@babel/types": "npm:^7.28.6" + checksum: 10/213485cdfffc4deb81fc1bf2cefed61bc825049322590ef69690e223faa300a2a4d1e7d806c723bb1f1f538226b9b1b6c356ca94eb47fa7c6d9e9f251ee425e6 languageName: node linkType: hard @@ -160,13 +160,13 @@ __metadata: "@babel/types": "npm:^7.29.0" bin: parser: ./bin/babel-parser.js - checksum: 10/10e8f34e0fdaa495b9db8be71f4eb29b16d8a57e0818c1bb1c4084015b0383803fd77812ed41597760cbf3d9ab3ae9f4af54f39ff5e5d8e081ba43593232f0ca + checksum: 10/b1576dca41074997a33ee740d87b330ae2e647f4b7da9e8d2abd3772b18385d303b0cee962b9b88425e0f30d58358dbb8d63792c1a2d005c823d335f6a029747 languageName: node linkType: hard "@babel/plugin-transform-react-jsx-self@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fplugin-transform-react-jsx-self%2F-%2Fplugin-transform-react-jsx-self-7.27.1.tgz" + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: @@ -177,7 +177,7 @@ __metadata: "@babel/plugin-transform-react-jsx-source@npm:^7.27.1": version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fplugin-transform-react-jsx-source%2F-%2Fplugin-transform-react-jsx-source-7.27.1.tgz" + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: @@ -187,15 +187,15 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.12.5": - version: 7.29.2 - resolution: "@babel/runtime@npm:7.29.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Fruntime%2F-%2Fruntime-7.29.2.tgz" - checksum: 10/f55ba4052aa0255055b34371a145fbe69c29b37b49eaea14805b095bfb4153701486416e89392fd27ec8abafa53868be86e960b9f8f959fff91f2c8ac2a14b02 + version: 7.28.6 + resolution: "@babel/runtime@npm:7.28.6" + checksum: 10/fbcd439cb74d4a681958eb064c509829e3f46d8a4bfaaf441baa81bb6733d1e680bccc676c813883d7741bcaada1d0d04b15aa320ef280b5734e2192b50decf9 languageName: node linkType: hard "@babel/template@npm:^7.28.6": version: 7.28.6 - resolution: "@babel/template@npm:7.28.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Ftemplate%2F-%2Ftemplate-7.28.6.tgz" + resolution: "@babel/template@npm:7.28.6" dependencies: "@babel/code-frame": "npm:^7.28.6" "@babel/parser": "npm:^7.28.6" @@ -206,7 +206,7 @@ __metadata: "@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 - resolution: "@babel/traverse@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Ftraverse%2F-%2Ftraverse-7.29.0.tgz" + resolution: "@babel/traverse@npm:7.29.0" dependencies: "@babel/code-frame": "npm:^7.29.0" "@babel/generator": "npm:^7.29.0" @@ -221,7 +221,7 @@ __metadata: "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": version: 7.29.0 - resolution: "@babel/types@npm:7.29.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40babel%2Ftypes%2F-%2Ftypes-7.29.0.tgz" + resolution: "@babel/types@npm:7.29.0" dependencies: "@babel/helper-string-parser": "npm:^7.27.1" "@babel/helper-validator-identifier": "npm:^7.28.5" @@ -231,21 +231,21 @@ __metadata: "@bcoe/v8-coverage@npm:^1.0.2": version: 1.0.2 - resolution: "@bcoe/v8-coverage@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40bcoe%2Fv8-coverage%2F-%2Fv8-coverage-1.0.2.tgz" + resolution: "@bcoe/v8-coverage@npm:1.0.2" checksum: 10/46600b2dde460269b07a8e4f12b72e418eae1337b85c979f43af3336c9a1c65b04e42508ab6b245f1e0e3c64328e1c38d8cd733e4a7cebc4fbf9cf65c6e59937 languageName: node linkType: hard "@csstools/color-helpers@npm:^5.1.0": version: 5.1.0 - resolution: "@csstools/color-helpers@npm:5.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcolor-helpers%2F-%2Fcolor-helpers-5.1.0.tgz" + resolution: "@csstools/color-helpers@npm:5.1.0" checksum: 10/0138b3d5ccbe77aeccf6721fd008a53523c70e932f0c82dca24a1277ca780447e1d8357da47512ebf96358476f8764de57002f3e491920d67e69202f5a74c383 languageName: node linkType: hard "@csstools/css-calc@npm:^2.1.3, @csstools/css-calc@npm:^2.1.4": version: 2.1.4 - resolution: "@csstools/css-calc@npm:2.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-calc%2F-%2Fcss-calc-2.1.4.tgz" + resolution: "@csstools/css-calc@npm:2.1.4" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.5 "@csstools/css-tokenizer": ^3.0.4 @@ -255,7 +255,7 @@ __metadata: "@csstools/css-color-parser@npm:^3.0.9": version: 3.1.0 - resolution: "@csstools/css-color-parser@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-color-parser%2F-%2Fcss-color-parser-3.1.0.tgz" + resolution: "@csstools/css-color-parser@npm:3.1.0" dependencies: "@csstools/color-helpers": "npm:^5.1.0" "@csstools/css-calc": "npm:^2.1.4" @@ -268,7 +268,7 @@ __metadata: "@csstools/css-parser-algorithms@npm:^3.0.4": version: 3.0.5 - resolution: "@csstools/css-parser-algorithms@npm:3.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-parser-algorithms%2F-%2Fcss-parser-algorithms-3.0.5.tgz" + resolution: "@csstools/css-parser-algorithms@npm:3.0.5" peerDependencies: "@csstools/css-tokenizer": ^3.0.4 checksum: 10/e93083b5cb36a3c1e7a47ce10cf62961d05bd1e4c608bb3ee50186ff740157ab0ec16a3956f7b86251efd10703034d849693201eea858ae904848c68d2d46ada @@ -277,224 +277,196 @@ __metadata: "@csstools/css-tokenizer@npm:^3.0.3": version: 3.0.4 - resolution: "@csstools/css-tokenizer@npm:3.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40csstools%2Fcss-tokenizer%2F-%2Fcss-tokenizer-3.0.4.tgz" + resolution: "@csstools/css-tokenizer@npm:3.0.4" checksum: 10/eb6c84c086312f6bb8758dfe2c85addd7475b0927333c5e39a4d59fb210b9810f8c346972046f95e60a721329cffe98895abe451e51de753ad1ca7a8c24ec65f languageName: node linkType: hard -"@emnapi/core@npm:1.10.0": - version: 1.10.0 - resolution: "@emnapi/core@npm:1.10.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40emnapi%2Fcore%2F-%2Fcore-1.10.0.tgz" - dependencies: - "@emnapi/wasi-threads": "npm:1.2.1" - tslib: "npm:^2.4.0" - checksum: 10/d32f386084e64deaf2609aabb8295d1ad5af6144d0f46d2060b76cc53f1f3b486df54bec9b0f33c37d85a3822e1193ebcd4e3deb4a5f0e4cd650aa2ffc631715 - languageName: node - linkType: hard - -"@emnapi/runtime@npm:1.10.0": - version: 1.10.0 - resolution: "@emnapi/runtime@npm:1.10.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40emnapi%2Fruntime%2F-%2Fruntime-1.10.0.tgz" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/d21083d07fa0c2da171c142e78ef986b66b07d45b06accc0bcaf49fcc61bb4dbc10e1c1760813070165b9f49b054376a931045347f21c0f42ff1eb2d2040faac - languageName: node - linkType: hard - -"@emnapi/wasi-threads@npm:1.2.1": - version: 1.2.1 - resolution: "@emnapi/wasi-threads@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40emnapi%2Fwasi-threads%2F-%2Fwasi-threads-1.2.1.tgz" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/57cd4292be81c05d26aa886d68a9e4c449ff666e8503fed6463dfc6b64a4e4213f03c152d53296b7cda32840271e38cd33347332070658f01befeb9bf4e59f36 - languageName: node - linkType: hard - -"@esbuild/aix-ppc64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/aix-ppc64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Faix-ppc64%2F-%2Faix-ppc64-0.27.7.tgz" +"@esbuild/aix-ppc64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/aix-ppc64@npm:0.27.3" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fandroid-arm64%2F-%2Fandroid-arm64-0.27.7.tgz" +"@esbuild/android-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/android-arm64@npm:0.27.3" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-arm@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fandroid-arm%2F-%2Fandroid-arm-0.27.7.tgz" +"@esbuild/android-arm@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/android-arm@npm:0.27.3" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fandroid-x64%2F-%2Fandroid-x64-0.27.7.tgz" +"@esbuild/android-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/android-x64@npm:0.27.3" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/darwin-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fdarwin-arm64%2F-%2Fdarwin-arm64-0.27.7.tgz" +"@esbuild/darwin-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/darwin-arm64@npm:0.27.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/darwin-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fdarwin-x64%2F-%2Fdarwin-x64-0.27.7.tgz" +"@esbuild/darwin-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/darwin-x64@npm:0.27.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/freebsd-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Ffreebsd-arm64%2F-%2Ffreebsd-arm64-0.27.7.tgz" +"@esbuild/freebsd-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/freebsd-arm64@npm:0.27.3" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/freebsd-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Ffreebsd-x64%2F-%2Ffreebsd-x64-0.27.7.tgz" +"@esbuild/freebsd-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/freebsd-x64@npm:0.27.3" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-arm64%2F-%2Flinux-arm64-0.27.7.tgz" +"@esbuild/linux-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-arm64@npm:0.27.3" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-arm@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-arm%2F-%2Flinux-arm-0.27.7.tgz" +"@esbuild/linux-arm@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-arm@npm:0.27.3" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-ia32@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-ia32%2F-%2Flinux-ia32-0.27.7.tgz" +"@esbuild/linux-ia32@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-ia32@npm:0.27.3" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-loong64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-loong64%2F-%2Flinux-loong64-0.27.7.tgz" +"@esbuild/linux-loong64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-loong64@npm:0.27.3" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-mips64el@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-mips64el%2F-%2Flinux-mips64el-0.27.7.tgz" +"@esbuild/linux-mips64el@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-mips64el@npm:0.27.3" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-ppc64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-ppc64%2F-%2Flinux-ppc64-0.27.7.tgz" +"@esbuild/linux-ppc64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-ppc64@npm:0.27.3" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-riscv64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-riscv64%2F-%2Flinux-riscv64-0.27.7.tgz" +"@esbuild/linux-riscv64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-riscv64@npm:0.27.3" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-s390x@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-s390x%2F-%2Flinux-s390x-0.27.7.tgz" +"@esbuild/linux-s390x@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-s390x@npm:0.27.3" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Flinux-x64%2F-%2Flinux-x64-0.27.7.tgz" +"@esbuild/linux-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-x64@npm:0.27.3" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/netbsd-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fnetbsd-arm64%2F-%2Fnetbsd-arm64-0.27.7.tgz" +"@esbuild/netbsd-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/netbsd-arm64@npm:0.27.3" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/netbsd-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fnetbsd-x64%2F-%2Fnetbsd-x64-0.27.7.tgz" +"@esbuild/netbsd-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/netbsd-x64@npm:0.27.3" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openbsd-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fopenbsd-arm64%2F-%2Fopenbsd-arm64-0.27.7.tgz" +"@esbuild/openbsd-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/openbsd-arm64@npm:0.27.3" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openbsd-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fopenbsd-x64%2F-%2Fopenbsd-x64-0.27.7.tgz" +"@esbuild/openbsd-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/openbsd-x64@npm:0.27.3" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openharmony-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openharmony-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fopenharmony-arm64%2F-%2Fopenharmony-arm64-0.27.7.tgz" +"@esbuild/openharmony-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/openharmony-arm64@npm:0.27.3" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/sunos-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fsunos-x64%2F-%2Fsunos-x64-0.27.7.tgz" +"@esbuild/sunos-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/sunos-x64@npm:0.27.3" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-arm64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fwin32-arm64%2F-%2Fwin32-arm64-0.27.7.tgz" +"@esbuild/win32-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/win32-arm64@npm:0.27.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-ia32@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fwin32-ia32%2F-%2Fwin32-ia32-0.27.7.tgz" +"@esbuild/win32-ia32@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/win32-ia32@npm:0.27.3" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-x64@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40esbuild%2Fwin32-x64%2F-%2Fwin32-x64-0.27.7.tgz" +"@esbuild/win32-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/win32-x64@npm:0.27.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": version: 4.9.1 - resolution: "@eslint-community/eslint-utils@npm:4.9.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint-community%2Feslint-utils%2F-%2Feslint-utils-4.9.1.tgz" + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: @@ -505,7 +477,7 @@ __metadata: "@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2": version: 4.12.2 - resolution: "@eslint-community/regexpp@npm:4.12.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint-community%2Fregexpp%2F-%2Fregexpp-4.12.2.tgz" + resolution: "@eslint-community/regexpp@npm:4.12.2" checksum: 10/049b280fddf71dd325514e0a520024969431dc3a8b02fa77476e6820e9122f28ab4c9168c11821f91a27982d2453bcd7a66193356ea84e84fb7c8d793be1ba0c languageName: node linkType: hard @@ -523,7 +495,7 @@ __metadata: "@eslint/config-helpers@npm:^0.4.2": version: 0.4.2 - resolution: "@eslint/config-helpers@npm:0.4.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fconfig-helpers%2F-%2Fconfig-helpers-0.4.2.tgz" + resolution: "@eslint/config-helpers@npm:0.4.2" dependencies: "@eslint/core": "npm:^0.17.0" checksum: 10/3f2b4712d8e391c36ec98bc200f7dea423dfe518e42956569666831b89ede83b33120c761dfd3ab6347d8e8894a6d4af47254a18d464a71c6046fd88065f6daf @@ -532,7 +504,7 @@ __metadata: "@eslint/core@npm:^0.17.0": version: 0.17.0 - resolution: "@eslint/core@npm:0.17.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fcore%2F-%2Fcore-0.17.0.tgz" + resolution: "@eslint/core@npm:0.17.0" dependencies: "@types/json-schema": "npm:^7.0.15" checksum: 10/f9a428cc651ec15fb60d7d60c2a7bacad4666e12508320eafa98258e976fafaa77d7be7be91519e75f801f15f830105420b14a458d4aab121a2b0a59bc43517b @@ -565,14 +537,14 @@ __metadata: "@eslint/object-schema@npm:^2.1.7": version: 2.1.7 - resolution: "@eslint/object-schema@npm:2.1.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fobject-schema%2F-%2Fobject-schema-2.1.7.tgz" + resolution: "@eslint/object-schema@npm:2.1.7" checksum: 10/946ef5d6235b4d1c0907c6c6e6429c8895f535380c562b7705c131f63f2e961b06e8785043c86a293da48e0a60c6286d98ba395b8b32ea55561fe6e4417cb7e4 languageName: node linkType: hard "@eslint/plugin-kit@npm:^0.4.1": version: 0.4.1 - resolution: "@eslint/plugin-kit@npm:0.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40eslint%2Fplugin-kit%2F-%2Fplugin-kit-0.4.1.tgz" + resolution: "@eslint/plugin-kit@npm:0.4.1" dependencies: "@eslint/core": "npm:^0.17.0" levn: "npm:^0.4.1" @@ -609,21 +581,21 @@ __metadata: "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40humanwhocodes%2Fmodule-importer%2F-%2Fmodule-importer-1.0.1.tgz" + resolution: "@humanwhocodes/module-importer@npm:1.0.1" checksum: 10/e993950e346331e5a32eefb27948ecdee2a2c4ab3f072b8f566cd213ef485dd50a3ca497050608db91006f5479e43f91a439aef68d2a313bd3ded06909c7c5b3 languageName: node linkType: hard "@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": version: 0.4.3 - resolution: "@humanwhocodes/retry@npm:0.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40humanwhocodes%2Fretry%2F-%2Fretry-0.4.3.tgz" + resolution: "@humanwhocodes/retry@npm:0.4.3" checksum: 10/0b32cfd362bea7a30fbf80bb38dcaf77fee9c2cae477ee80b460871d03590110ac9c77d654f04ec5beaf71b6f6a89851bdf6c1e34ccdf2f686bd86fcd97d9e61 languageName: node linkType: hard "@isaacs/fs-minipass@npm:^4.0.0": version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40isaacs%2Ffs-minipass%2F-%2Ffs-minipass-4.0.1.tgz" + resolution: "@isaacs/fs-minipass@npm:4.0.1" dependencies: minipass: "npm:^7.0.4" checksum: 10/4412e9e6713c89c1e66d80bb0bb5a2a93192f10477623a27d08f228ba0316bb880affabc5bfe7f838f58a34d26c2c190da726e576cdfc18c49a72e89adabdcf5 @@ -632,7 +604,7 @@ __metadata: "@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.13 - resolution: "@jridgewell/gen-mapping@npm:0.3.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fgen-mapping%2F-%2Fgen-mapping-0.3.13.tgz" + resolution: "@jridgewell/gen-mapping@npm:0.3.13" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" "@jridgewell/trace-mapping": "npm:^0.3.24" @@ -642,7 +614,7 @@ __metadata: "@jridgewell/remapping@npm:^2.3.5": version: 2.3.5 - resolution: "@jridgewell/remapping@npm:2.3.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fremapping%2F-%2Fremapping-2.3.5.tgz" + resolution: "@jridgewell/remapping@npm:2.3.5" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.24" @@ -652,21 +624,21 @@ __metadata: "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fresolve-uri%2F-%2Fresolve-uri-3.1.2.tgz" + resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Fsourcemap-codec%2F-%2Fsourcemap-codec-1.5.5.tgz" + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10/5d9d207b462c11e322d71911e55e21a4e2772f71ffe8d6f1221b8eb5ae6774458c1d242f897fb0814e8714ca9a6b498abfa74dfe4f434493342902b1a48b33a5 languageName: node linkType: hard "@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": version: 0.3.31 - resolution: "@jridgewell/trace-mapping@npm:0.3.31::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40jridgewell%2Ftrace-mapping%2F-%2Ftrace-mapping-0.3.31.tgz" + resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -674,371 +646,231 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^1.1.4": - version: 1.1.4 - resolution: "@napi-rs/wasm-runtime@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40napi-rs%2Fwasm-runtime%2F-%2Fwasm-runtime-1.1.4.tgz" - dependencies: - "@tybys/wasm-util": "npm:^0.10.1" - peerDependencies: - "@emnapi/core": ^1.7.1 - "@emnapi/runtime": ^1.7.1 - checksum: 10/1db3dc7eeb981306b09360487bd8ce4dfa5588d273bd8ea9f07dccca1b4ade57b675414180fc9bb66966c6c50b17208b0263194993e2f7f92cc7af28bda4d1af - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40nodelib%2Ffs.scandir%2F-%2Ffs.scandir-2.1.5.tgz" +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40nodelib%2Ffs.stat%2F-%2Ffs.stat-2.0.5.tgz" - checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^11.2.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10/1a81573becc60515031accc696e6405e9b894e65c12b98ef4aeee03b5617c41948633159dbf6caf5dde5b47367eeb749bdc7b7dfb21960930a9060a935c6f636 languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40nodelib%2Ffs.walk%2F-%2Ffs.walk-1.2.8.tgz" +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 - languageName: node - linkType: hard - -"@oxc-project/types@npm:=0.127.0": - version: 0.127.0 - resolution: "@oxc-project/types@npm:0.127.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40oxc-project%2Ftypes%2F-%2Ftypes-0.127.0.tgz" - checksum: 10/f154f4720367186aed63a16fb1395f9039d4e6872265fe9e6b5eacc02fb2b948f9ea6c5f85efd3a015ea28aa8c31232b7a8301218ae28651659e46dd0c4f2031 + semver: "npm:^7.3.5" + checksum: 10/4935c7719d17830d0f9fa46c50be17b2a3c945cec61760f6d0909bce47677c42e1810ca673305890f9e84f008ec4d8e841182f371e42100a8159d15f22249208 languageName: node linkType: hard "@playwright/test@npm:^1.58.2": - version: 1.59.1 - resolution: "@playwright/test@npm:1.59.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40playwright%2Ftest%2F-%2Ftest-1.59.1.tgz" + version: 1.58.2 + resolution: "@playwright/test@npm:1.58.2" dependencies: - playwright: "npm:1.59.1" + playwright: "npm:1.58.2" bin: playwright: cli.js - checksum: 10/27a894c4d4216b51cddc96e18fd0638a9e2e0a3f0b7ee32a56121fb61df395ec43529f5dcdca32578af8a34a04722ee3767f99f0ae4d39fa8edceda89a96014c - languageName: node - linkType: hard - -"@rolldown/binding-android-arm64@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-android-arm64%2F-%2Fbinding-android-arm64-1.0.0-rc.17.tgz" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-darwin-arm64%2F-%2Fbinding-darwin-arm64-1.0.0-rc.17.tgz" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-darwin-x64@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-darwin-x64%2F-%2Fbinding-darwin-x64-1.0.0-rc.17.tgz" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-freebsd-x64%2F-%2Fbinding-freebsd-x64-1.0.0-rc.17.tgz" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-arm-gnueabihf%2F-%2Fbinding-linux-arm-gnueabihf-1.0.0-rc.17.tgz" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-arm64-gnu%2F-%2Fbinding-linux-arm64-gnu-1.0.0-rc.17.tgz" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-arm64-musl%2F-%2Fbinding-linux-arm64-musl-1.0.0-rc.17.tgz" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-ppc64-gnu%2F-%2Fbinding-linux-ppc64-gnu-1.0.0-rc.17.tgz" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-s390x-gnu%2F-%2Fbinding-linux-s390x-gnu-1.0.0-rc.17.tgz" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-x64-gnu%2F-%2Fbinding-linux-x64-gnu-1.0.0-rc.17.tgz" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-linux-x64-musl%2F-%2Fbinding-linux-x64-musl-1.0.0-rc.17.tgz" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-openharmony-arm64%2F-%2Fbinding-openharmony-arm64-1.0.0-rc.17.tgz" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-wasm32-wasi%2F-%2Fbinding-wasm32-wasi-1.0.0-rc.17.tgz" - dependencies: - "@emnapi/core": "npm:1.10.0" - "@emnapi/runtime": "npm:1.10.0" - "@napi-rs/wasm-runtime": "npm:^1.1.4" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-win32-arm64-msvc%2F-%2Fbinding-win32-arm64-msvc-1.0.0-rc.17.tgz" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fbinding-win32-x64-msvc%2F-%2Fbinding-win32-x64-msvc-1.0.0-rc.17.tgz" - conditions: os=win32 & cpu=x64 + checksum: 10/58bf90139280a0235eeeb6049e9fb4db6425e98be1bf0cc17913b068eef616cf67be57bfb36dc4cb56bcf116f498ffd0225c4916e85db404b343ea6c5efdae13 languageName: node linkType: hard "@rolldown/pluginutils@npm:1.0.0-beta.27": version: 1.0.0-beta.27 - resolution: "@rolldown/pluginutils@npm:1.0.0-beta.27::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fpluginutils%2F-%2Fpluginutils-1.0.0-beta.27.tgz" + resolution: "@rolldown/pluginutils@npm:1.0.0-beta.27" checksum: 10/4f7da788d88b33d029d5acf84c63be27c62d7c53017476f2e3026172cf94062cb399cd15194c89574578f192016bbcb1e040ce6811b3bb9ec4d4faa2ad386459 languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rolldown%2Fpluginutils%2F-%2Fpluginutils-1.0.0-rc.17.tgz" - checksum: 10/d659ea756ee6d360a015708d1035c07047e08db99a4160c74c7f22a7ece5611efcc18ad56db4a63b69edb506ded47596d9c0d301919242470d8c412d916b9750 - languageName: node - linkType: hard - -"@rollup/rollup-android-arm-eabi@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-android-arm-eabi%2F-%2Frollup-android-arm-eabi-4.60.3.tgz" +"@rollup/rollup-android-arm-eabi@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.59.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-android-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-android-arm64%2F-%2Frollup-android-arm64-4.60.3.tgz" +"@rollup/rollup-android-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-android-arm64@npm:4.59.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-darwin-arm64%2F-%2Frollup-darwin-arm64-4.60.3.tgz" +"@rollup/rollup-darwin-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.59.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-darwin-x64%2F-%2Frollup-darwin-x64-4.60.3.tgz" +"@rollup/rollup-darwin-x64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.59.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-freebsd-arm64%2F-%2Frollup-freebsd-arm64-4.60.3.tgz" +"@rollup/rollup-freebsd-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.59.0" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-freebsd-x64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-freebsd-x64%2F-%2Frollup-freebsd-x64-4.60.3.tgz" +"@rollup/rollup-freebsd-x64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.59.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm-gnueabihf%2F-%2Frollup-linux-arm-gnueabihf-4.60.3.tgz" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm-musleabihf%2F-%2Frollup-linux-arm-musleabihf-4.60.3.tgz" +"@rollup/rollup-linux-arm-musleabihf@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.59.0" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm64-gnu%2F-%2Frollup-linux-arm64-gnu-4.60.3.tgz" +"@rollup/rollup-linux-arm64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.59.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-arm64-musl%2F-%2Frollup-linux-arm64-musl-4.60.3.tgz" +"@rollup/rollup-linux-arm64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.59.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loong64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-loong64-gnu%2F-%2Frollup-linux-loong64-gnu-4.60.3.tgz" +"@rollup/rollup-linux-loong64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.59.0" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-loong64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-loong64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-loong64-musl%2F-%2Frollup-linux-loong64-musl-4.60.3.tgz" +"@rollup/rollup-linux-loong64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-loong64-musl@npm:4.59.0" conditions: os=linux & cpu=loong64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-ppc64-gnu%2F-%2Frollup-linux-ppc64-gnu-4.60.3.tgz" +"@rollup/rollup-linux-ppc64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.59.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-ppc64-musl%2F-%2Frollup-linux-ppc64-musl-4.60.3.tgz" +"@rollup/rollup-linux-ppc64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.59.0" conditions: os=linux & cpu=ppc64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-riscv64-gnu%2F-%2Frollup-linux-riscv64-gnu-4.60.3.tgz" +"@rollup/rollup-linux-riscv64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.59.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-riscv64-musl%2F-%2Frollup-linux-riscv64-musl-4.60.3.tgz" +"@rollup/rollup-linux-riscv64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.59.0" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-s390x-gnu%2F-%2Frollup-linux-s390x-gnu-4.60.3.tgz" +"@rollup/rollup-linux-s390x-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.59.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-x64-gnu%2F-%2Frollup-linux-x64-gnu-4.60.3.tgz" +"@rollup/rollup-linux-x64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.59.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-linux-x64-musl%2F-%2Frollup-linux-x64-musl-4.60.3.tgz" +"@rollup/rollup-linux-x64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.59.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-openbsd-x64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-openbsd-x64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-openbsd-x64%2F-%2Frollup-openbsd-x64-4.60.3.tgz" +"@rollup/rollup-openbsd-x64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-openbsd-x64@npm:4.59.0" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-openharmony-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-openharmony-arm64@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-openharmony-arm64%2F-%2Frollup-openharmony-arm64-4.60.3.tgz" +"@rollup/rollup-openharmony-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.59.0" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-arm64-msvc%2F-%2Frollup-win32-arm64-msvc-4.60.3.tgz" +"@rollup/rollup-win32-arm64-msvc@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.59.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-ia32-msvc%2F-%2Frollup-win32-ia32-msvc-4.60.3.tgz" +"@rollup/rollup-win32-ia32-msvc@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.59.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-x64-gnu@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-x64-gnu%2F-%2Frollup-win32-x64-gnu-4.60.3.tgz" +"@rollup/rollup-win32-x64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.59.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40rollup%2Frollup-win32-x64-msvc%2F-%2Frollup-win32-x64-msvc-4.60.3.tgz" +"@rollup/rollup-win32-x64-msvc@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.59.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@standard-schema/spec@npm:^1.1.0": +"@standard-schema/spec@npm:^1.0.0": version: 1.1.0 - resolution: "@standard-schema/spec@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40standard-schema%2Fspec%2F-%2Fspec-1.1.0.tgz" + resolution: "@standard-schema/spec@npm:1.1.0" checksum: 10/a209615c9e8b2ea535d7db0a5f6aa0f962fd4ab73ee86a46c100fb78116964af1f55a27c1794d4801e534a196794223daa25ff5135021e03c7828aa3d95e1763 languageName: node linkType: hard "@testing-library/dom@npm:^10.4.0": version: 10.4.1 - resolution: "@testing-library/dom@npm:10.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40testing-library%2Fdom%2F-%2Fdom-10.4.1.tgz" + resolution: "@testing-library/dom@npm:10.4.1" dependencies: "@babel/code-frame": "npm:^7.10.4" "@babel/runtime": "npm:^7.12.5" @@ -1054,7 +886,7 @@ __metadata: "@testing-library/react@npm:^16.1.0": version: 16.3.2 - resolution: "@testing-library/react@npm:16.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40testing-library%2Freact%2F-%2Freact-16.3.2.tgz" + resolution: "@testing-library/react@npm:16.3.2" dependencies: "@babel/runtime": "npm:^7.12.5" peerDependencies: @@ -1072,36 +904,16 @@ __metadata: languageName: node linkType: hard -"@ts-morph/common@npm:~0.26.0": - version: 0.26.1 - resolution: "@ts-morph/common@npm:0.26.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40ts-morph%2Fcommon%2F-%2Fcommon-0.26.1.tgz" - dependencies: - fast-glob: "npm:^3.3.2" - minimatch: "npm:^9.0.4" - path-browserify: "npm:^1.0.1" - checksum: 10/40df291ec8f53f32845ddf3de73f6288ccc08ebf1876d2778763dd45e343b718924826deb5453262d8b58dbe4d4bfbf884a573e8fae045df984548a35cf68d50 - languageName: node - linkType: hard - -"@tybys/wasm-util@npm:^0.10.1": - version: 0.10.2 - resolution: "@tybys/wasm-util@npm:0.10.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40tybys%2Fwasm-util%2F-%2Fwasm-util-0.10.2.tgz" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/d12f1dafe12d7a573c406b35ffef0038042b9cc9fbcc74d657267eb635499b956276afc05eebdbd81bea582e1c4c921421a1dd7243a93daaa8c8216b19395c23 - languageName: node - linkType: hard - "@types/aria-query@npm:^5.0.1": version: 5.0.4 - resolution: "@types/aria-query@npm:5.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Faria-query%2F-%2Faria-query-5.0.4.tgz" + resolution: "@types/aria-query@npm:5.0.4" checksum: 10/c0084c389dc030daeaf0115a92ce43a3f4d42fc8fef2d0e22112d87a42798d4a15aac413019d4a63f868327d52ad6740ab99609462b442fe6b9286b172d2e82e languageName: node linkType: hard "@types/babel__core@npm:^7.20.5": version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__core%2F-%2Fbabel__core-7.20.5.tgz" + resolution: "@types/babel__core@npm:7.20.5" dependencies: "@babel/parser": "npm:^7.20.7" "@babel/types": "npm:^7.20.7" @@ -1114,7 +926,7 @@ __metadata: "@types/babel__generator@npm:*": version: 7.27.0 - resolution: "@types/babel__generator@npm:7.27.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__generator%2F-%2Fbabel__generator-7.27.0.tgz" + resolution: "@types/babel__generator@npm:7.27.0" dependencies: "@babel/types": "npm:^7.0.0" checksum: 10/f572e67a9a39397664350a4437d8a7fbd34acc83ff4887a8cf08349e39f8aeb5ad2f70fb78a0a0a23a280affe3a5f4c25f50966abdce292bcf31237af1c27b1a @@ -1123,7 +935,7 @@ __metadata: "@types/babel__template@npm:*": version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__template%2F-%2Fbabel__template-7.4.4.tgz" + resolution: "@types/babel__template@npm:7.4.4" dependencies: "@babel/parser": "npm:^7.1.0" "@babel/types": "npm:^7.0.0" @@ -1133,7 +945,7 @@ __metadata: "@types/babel__traverse@npm:*": version: 7.28.0 - resolution: "@types/babel__traverse@npm:7.28.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fbabel__traverse%2F-%2Fbabel__traverse-7.28.0.tgz" + resolution: "@types/babel__traverse@npm:7.28.0" dependencies: "@babel/types": "npm:^7.28.2" checksum: 10/371c5e1b40399ef17570e630b2943617b84fafde2860a56f0ebc113d8edb1d0534ade0175af89eda1ae35160903c33057ed42457e165d4aa287fedab2c82abcf @@ -1142,7 +954,7 @@ __metadata: "@types/chai@npm:^5.2.2": version: 5.2.3 - resolution: "@types/chai@npm:5.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fchai%2F-%2Fchai-5.2.3.tgz" + resolution: "@types/chai@npm:5.2.3" dependencies: "@types/deep-eql": "npm:*" assertion-error: "npm:^2.0.1" @@ -1151,24 +963,24 @@ __metadata: linkType: hard "@types/debug@npm:^4.0.0": - version: 4.1.13 - resolution: "@types/debug@npm:4.1.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fdebug%2F-%2Fdebug-4.1.13.tgz" + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" dependencies: "@types/ms": "npm:*" - checksum: 10/5091d4ebda85236e6f4a6ecea552860e521e11d1d388d3f6255b40726f5a4a7cf1baa0d09f60853838e4cac6c12a13b14114d5f422ccecaee4d1d07dab349900 + checksum: 10/47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 languageName: node linkType: hard "@types/deep-eql@npm:*": version: 4.0.2 - resolution: "@types/deep-eql@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fdeep-eql%2F-%2Fdeep-eql-4.0.2.tgz" + resolution: "@types/deep-eql@npm:4.0.2" checksum: 10/249a27b0bb22f6aa28461db56afa21ec044fa0e303221a62dff81831b20c8530502175f1a49060f7099e7be06181078548ac47c668de79ff9880241968d43d0c languageName: node linkType: hard "@types/estree-jsx@npm:^1.0.0": version: 1.0.5 - resolution: "@types/estree-jsx@npm:1.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Festree-jsx%2F-%2Festree-jsx-1.0.5.tgz" + resolution: "@types/estree-jsx@npm:1.0.5" dependencies: "@types/estree": "npm:*" checksum: 10/a028ab0cd7b2950168a05c6a86026eb3a36a54a4adfae57f13911d7b49dffe573d9c2b28421b2d029b49b3d02fcd686611be2622dc3dad6d9791166c083f6008 @@ -1177,7 +989,7 @@ __metadata: "@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.0": version: 1.0.8 - resolution: "@types/estree@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Festree%2F-%2Festree-1.0.8.tgz" + resolution: "@types/estree@npm:1.0.8" checksum: 10/25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099 languageName: node linkType: hard @@ -1191,7 +1003,7 @@ __metadata: "@types/hast@npm:^3.0.0": version: 3.0.4 - resolution: "@types/hast@npm:3.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fhast%2F-%2Fhast-3.0.4.tgz" + resolution: "@types/hast@npm:3.0.4" dependencies: "@types/unist": "npm:*" checksum: 10/732920d81bb7605895776841b7658b4d8cc74a43a8fa176017cc0fb0ecc1a4c82a2b75a4fe6b71aa262b649d3fb62858c6789efa3793ea1d40269953af96ecb5 @@ -1200,14 +1012,14 @@ __metadata: "@types/json-schema@npm:^7.0.15": version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fjson-schema%2F-%2Fjson-schema-7.0.15.tgz" + resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 languageName: node linkType: hard "@types/mdast@npm:^4.0.0": version: 4.0.4 - resolution: "@types/mdast@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fmdast%2F-%2Fmdast-4.0.4.tgz" + resolution: "@types/mdast@npm:4.0.4" dependencies: "@types/unist": "npm:*" checksum: 10/efe3ec11b9ee0015a396c4fb4cd1b6f31b51b8ae9783c59560e6fc0bf6c2fa1dcc7fccaf45fa09a6c8b3397fab9dc8d431433935cae3835caa70a18f7fc775f8 @@ -1216,21 +1028,21 @@ __metadata: "@types/ms@npm:*": version: 2.1.0 - resolution: "@types/ms@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fms%2F-%2Fms-2.1.0.tgz" + resolution: "@types/ms@npm:2.1.0" checksum: 10/532d2ebb91937ccc4a89389715e5b47d4c66e708d15942fe6cc25add6dc37b2be058230a327dd50f43f89b8b6d5d52b74685a9e8f70516edfc9bdd6be910eff4 languageName: node linkType: hard "@types/prop-types@npm:*": version: 15.7.15 - resolution: "@types/prop-types@npm:15.7.15::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Fprop-types%2F-%2Fprop-types-15.7.15.tgz" + resolution: "@types/prop-types@npm:15.7.15" checksum: 10/31aa2f59b28f24da6fb4f1d70807dae2aedfce090ec63eaf9ea01727a9533ef6eaf017de5bff99fbccad7d1c9e644f52c6c2ba30869465dd22b1a7221c29f356 languageName: node linkType: hard "@types/react-dom@npm:^18.3.0": version: 18.3.7 - resolution: "@types/react-dom@npm:18.3.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Freact-dom%2F-%2Freact-dom-18.3.7.tgz" + resolution: "@types/react-dom@npm:18.3.7" peerDependencies: "@types/react": ^18.0.0 checksum: 10/317569219366d487a3103ba1e5e47154e95a002915fdcf73a44162c48fe49c3a57fcf7f57fc6979e70d447112681e6b13c6c3c1df289db8b544df4aab2d318f3 @@ -1239,7 +1051,7 @@ __metadata: "@types/react@npm:^18.3.2, @types/react@npm:^18.3.3": version: 18.3.28 - resolution: "@types/react@npm:18.3.28::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Freact%2F-%2Freact-18.3.28.tgz" + resolution: "@types/react@npm:18.3.28" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.2.2" @@ -1249,14 +1061,14 @@ __metadata: "@types/unist@npm:*, @types/unist@npm:^3.0.0": version: 3.0.3 - resolution: "@types/unist@npm:3.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Funist%2F-%2Funist-3.0.3.tgz" + resolution: "@types/unist@npm:3.0.3" checksum: 10/96e6453da9e075aaef1dc22482463898198acdc1eeb99b465e65e34303e2ec1e3b1ed4469a9118275ec284dc98019f63c3f5d49422f0e4ac707e5ab90fb3b71a languageName: node linkType: hard "@types/unist@npm:^2.0.0": version: 2.0.11 - resolution: "@types/unist@npm:2.0.11::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40types%2Funist%2F-%2Funist-2.0.11.tgz" + resolution: "@types/unist@npm:2.0.11" checksum: 10/6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e languageName: node linkType: hard @@ -1414,14 +1226,14 @@ __metadata: "@ungap/structured-clone@npm:^1.0.0": version: 1.3.0 - resolution: "@ungap/structured-clone@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40ungap%2Fstructured-clone%2F-%2Fstructured-clone-1.3.0.tgz" + resolution: "@ungap/structured-clone@npm:1.3.0" checksum: 10/80d6910946f2b1552a2406650051c91bbd1f24a6bf854354203d84fe2714b3e8ce4618f49cc3410494173a1c1e8e9777372fe68dce74bd45faf0a7a1a6ccf448 languageName: node linkType: hard "@vitejs/plugin-react@npm:^4.3.4": version: 4.7.0 - resolution: "@vitejs/plugin-react@npm:4.7.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitejs%2Fplugin-react%2F-%2Fplugin-react-4.7.0.tgz" + resolution: "@vitejs/plugin-react@npm:4.7.0" dependencies: "@babel/core": "npm:^7.28.0" "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" @@ -1436,121 +1248,109 @@ __metadata: linkType: hard "@vitest/coverage-v8@npm:^4.0.14": - version: 4.1.5 - resolution: "@vitest/coverage-v8@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fcoverage-v8%2F-%2Fcoverage-v8-4.1.5.tgz" + version: 4.0.18 + resolution: "@vitest/coverage-v8@npm:4.0.18" dependencies: "@bcoe/v8-coverage": "npm:^1.0.2" - "@vitest/utils": "npm:4.1.5" - ast-v8-to-istanbul: "npm:^1.0.0" + "@vitest/utils": "npm:4.0.18" + ast-v8-to-istanbul: "npm:^0.3.10" istanbul-lib-coverage: "npm:^3.2.2" istanbul-lib-report: "npm:^3.0.1" istanbul-reports: "npm:^3.2.0" - magicast: "npm:^0.5.2" + magicast: "npm:^0.5.1" obug: "npm:^2.1.1" - std-env: "npm:^4.0.0-rc.1" - tinyrainbow: "npm:^3.1.0" + std-env: "npm:^3.10.0" + tinyrainbow: "npm:^3.0.3" peerDependencies: - "@vitest/browser": 4.1.5 - vitest: 4.1.5 + "@vitest/browser": 4.0.18 + vitest: 4.0.18 peerDependenciesMeta: "@vitest/browser": optional: true - checksum: 10/378e1d85a1c4670af15a18b544995a43d320460b418c188d7000f96518859e4537e00ea5e38a563c42b6183437252f0ecc92b471ede30c6d43ae87b7c8e09ed3 + checksum: 10/33bd54aa8ea1c4b0acae77722b34460408325793d4d74159f7d73aedf2d1c4aa940c8666baf31c4b19b3760d68bbc268dd8c9265ebc2088cece428d26568afb4 languageName: node linkType: hard -"@vitest/expect@npm:4.1.5": - version: 4.1.5 - resolution: "@vitest/expect@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fexpect%2F-%2Fexpect-4.1.5.tgz" +"@vitest/expect@npm:4.0.18": + version: 4.0.18 + resolution: "@vitest/expect@npm:4.0.18" dependencies: - "@standard-schema/spec": "npm:^1.1.0" + "@standard-schema/spec": "npm:^1.0.0" "@types/chai": "npm:^5.2.2" - "@vitest/spy": "npm:4.1.5" - "@vitest/utils": "npm:4.1.5" - chai: "npm:^6.2.2" - tinyrainbow: "npm:^3.1.0" - checksum: 10/3e94d2d0cf4f7018ed6a7a9394bff971353ea0cc85bcbcff39212279156840b8c533be99e2fd52112e4904c4a5190bdaaf441db7c6b17e356c18577072a3f057 + "@vitest/spy": "npm:4.0.18" + "@vitest/utils": "npm:4.0.18" + chai: "npm:^6.2.1" + tinyrainbow: "npm:^3.0.3" + checksum: 10/2115bff1bbcad460ce72032022e4dbcf8572c4b0fe07ca60f5644a8d96dd0dfa112986b5a1a5c5705f4548119b3b829c45d1de0838879211e0d6bb276b4ece73 languageName: node linkType: hard -"@vitest/mocker@npm:4.1.5": - version: 4.1.5 - resolution: "@vitest/mocker@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fmocker%2F-%2Fmocker-4.1.5.tgz" +"@vitest/mocker@npm:4.0.18": + version: 4.0.18 + resolution: "@vitest/mocker@npm:4.0.18" dependencies: - "@vitest/spy": "npm:4.1.5" + "@vitest/spy": "npm:4.0.18" estree-walker: "npm:^3.0.3" magic-string: "npm:^0.30.21" peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - checksum: 10/949784ba08996543a313459a36a730d4b0847e42ee56cfda07a3e2add67c7adf8acbd59dcf9f75b1e4bc3fe7cc487f9f260905ff9a334866d389478112e5ae82 + checksum: 10/46f584a4c1180dfb513137bc8db6e2e3b53e141adfe964307297e98321652d86a3f2a52d80cda1f810205bd5fdcab789bb8b52a532e68f175ef1e20be398218d languageName: node linkType: hard -"@vitest/pretty-format@npm:4.1.5": - version: 4.1.5 - resolution: "@vitest/pretty-format@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fpretty-format%2F-%2Fpretty-format-4.1.5.tgz" +"@vitest/pretty-format@npm:4.0.18": + version: 4.0.18 + resolution: "@vitest/pretty-format@npm:4.0.18" dependencies: - tinyrainbow: "npm:^3.1.0" - checksum: 10/783f8c4a0e419d1024446ae8593411c95443ea09b50c4a378986b48893998acda34429b2d1deebc065405a7ef40bb19e19c68fdeb93acd46ae98b156c42d5f39 + tinyrainbow: "npm:^3.0.3" + checksum: 10/4cafc7c9853097345bd94e8761bf47c2c04e00d366ac56d79928182787ff83c512c96f1dc2ce9b6aeed4d3a8c23ce12254da203783108d3c096bc398eed2a62d languageName: node linkType: hard -"@vitest/runner@npm:4.1.5": - version: 4.1.5 - resolution: "@vitest/runner@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Frunner%2F-%2Frunner-4.1.5.tgz" +"@vitest/runner@npm:4.0.18": + version: 4.0.18 + resolution: "@vitest/runner@npm:4.0.18" dependencies: - "@vitest/utils": "npm:4.1.5" + "@vitest/utils": "npm:4.0.18" pathe: "npm:^2.0.3" - checksum: 10/ba19d84a9f7bcc3102ae5304c23e5dae789aaf8fd283f826e3fd4aca87ea2687ed606cf89869773d15799666553fd265524f7d9a0869e2869e00ebd8fd53af5b + checksum: 10/d7deebf086d7e084f449733ecea6c9c81737a18aafece318cbe7500e45debea00fa9dbf9315fd38aa88550dd5240a791b885ac71665f89b154d71a6c63da5836 languageName: node linkType: hard -"@vitest/snapshot@npm:4.1.5": - version: 4.1.5 - resolution: "@vitest/snapshot@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fsnapshot%2F-%2Fsnapshot-4.1.5.tgz" +"@vitest/snapshot@npm:4.0.18": + version: 4.0.18 + resolution: "@vitest/snapshot@npm:4.0.18" dependencies: - "@vitest/pretty-format": "npm:4.1.5" - "@vitest/utils": "npm:4.1.5" + "@vitest/pretty-format": "npm:4.0.18" magic-string: "npm:^0.30.21" pathe: "npm:^2.0.3" - checksum: 10/cf70530d8a7320c012bdf7f6ca4f3ddbbb47c9aeb9ff5d28319e552ce64db93423d0c4facff3e112c6d711ed4228369c8fa73c88350fe6c16cf04f9ac2558caf + checksum: 10/50aa5fb7fca45c499c145cc2f20e53b8afb0990b53ff4a4e6447dd6f147437edc5316f22e2d82119e154c3cf7c59d44898e7b2faf7ba614ac1051cbe4d662a77 languageName: node linkType: hard -"@vitest/spy@npm:4.1.5": - version: 4.1.5 - resolution: "@vitest/spy@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Fspy%2F-%2Fspy-4.1.5.tgz" - checksum: 10/4db4bb3aea01cd737fdb06d8f498bcd2127b8c2afeaa78ff9df4147e1474aa26dd16f42dc0512c31385824e94dbb17b17fa0f4c60b7595b7b4ab946f098220ab +"@vitest/spy@npm:4.0.18": + version: 4.0.18 + resolution: "@vitest/spy@npm:4.0.18" + checksum: 10/f7b1618ae13790105771dd2a8c973c63c018366fcc69b50f15ce5d12f9ac552efd3c1e6e5ae4ebdb6023d0b8d8f31fef2a0b1b77334284928db45c80c63de456 languageName: node linkType: hard -"@vitest/utils@npm:4.1.5": - version: 4.1.5 - resolution: "@vitest/utils@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2F%40vitest%2Futils%2F-%2Futils-4.1.5.tgz" +"@vitest/utils@npm:4.0.18": + version: 4.0.18 + resolution: "@vitest/utils@npm:4.0.18" dependencies: - "@vitest/pretty-format": "npm:4.1.5" - convert-source-map: "npm:^2.0.0" - tinyrainbow: "npm:^3.1.0" - checksum: 10/4f75a2df6f910578a361ae92eb92a2b6921f50cc748994f3b2e5900d0ae687b6683f33b090dedf9b96eaca23bac117817d9448a4a333c7a96b94ee767399f18c + "@vitest/pretty-format": "npm:4.0.18" + tinyrainbow: "npm:^3.0.3" + checksum: 10/e8b2ad7bc35b2bc5590f9dc1d1a67644755da416b47ab7099a6f26792903fa0aacb81e6ba99f0f03858d9d3a1d76eeba65150a1a0849690a40817424e749c367 languageName: node linkType: hard -"@wix/context-scripts@workspace:scripts": - version: 0.0.0-use.local - resolution: "@wix/context-scripts@workspace:scripts" - dependencies: - ts-morph: "npm:^25.0.0" - vitest: "npm:^4.0.14" - yaml: "npm:^2.7.0" - languageName: unknown - linkType: soft - "@wix/interact-demo@workspace:apps/demo": version: 0.0.0-use.local resolution: "@wix/interact-demo@workspace:apps/demo" @@ -1667,14 +1467,14 @@ __metadata: "abbrev@npm:^4.0.0": version: 4.0.0 - resolution: "abbrev@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fabbrev%2F-%2Fabbrev-4.0.0.tgz" + resolution: "abbrev@npm:4.0.0" checksum: 10/e2f0c6a6708ad738b3e8f50233f4800de31ad41a6cdc50e0cbe51b76fed69fd0213516d92c15ce1a9985fca71a14606a9be22bf00f8475a58987b9bfb671c582 languageName: node linkType: hard "acorn-jsx@npm:^5.3.2": version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Facorn-jsx%2F-%2Facorn-jsx-5.3.2.tgz" + resolution: "acorn-jsx@npm:5.3.2" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 checksum: 10/d4371eaef7995530b5b5ca4183ff6f062ca17901a6d3f673c9ac011b01ede37e7a1f7f61f8f5cfe709e88054757bb8f3277dc4061087cdf4f2a1f90ccbcdb977 @@ -1683,7 +1483,7 @@ __metadata: "acorn@npm:^8.15.0": version: 8.16.0 - resolution: "acorn@npm:8.16.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Facorn%2F-%2Facorn-8.16.0.tgz" + resolution: "acorn@npm:8.16.0" bin: acorn: bin/acorn checksum: 10/690c673bb4d61b38ef82795fab58526471ad7f7e67c0e40c4ff1e10ecd80ce5312554ef633c9995bfc4e6d170cef165711f9ca9e49040b62c0c66fbf2dd3df2b @@ -1692,7 +1492,7 @@ __metadata: "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.4 - resolution: "agent-base@npm:7.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fagent-base%2F-%2Fagent-base-7.1.4.tgz" + resolution: "agent-base@npm:7.1.4" checksum: 10/79bef167247789f955aaba113bae74bf64aa1e1acca4b1d6bb444bdf91d82c3e07e9451ef6a6e2e35e8f71a6f97ce33e3d855a5328eb9fad1bc3cc4cfd031ed8 languageName: node linkType: hard @@ -1711,14 +1511,14 @@ __metadata: "ansi-regex@npm:^5.0.1": version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fansi-regex%2F-%2Fansi-regex-5.0.1.tgz" + resolution: "ansi-regex@npm:5.0.1" checksum: 10/2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard "ansi-styles@npm:^4.1.0": version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fansi-styles%2F-%2Fansi-styles-4.3.0.tgz" + resolution: "ansi-styles@npm:4.3.0" dependencies: color-convert: "npm:^2.0.1" checksum: 10/b4494dfbfc7e4591b4711a396bd27e540f8153914123dccb4cdbbcb514015ada63a3809f362b9d8d4f6b17a706f1d7bea3c6f974b15fa5ae76b5b502070889ff @@ -1727,21 +1527,21 @@ __metadata: "ansi-styles@npm:^5.0.0": version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fansi-styles%2F-%2Fansi-styles-5.2.0.tgz" + resolution: "ansi-styles@npm:5.2.0" checksum: 10/d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 - resolution: "argparse@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fargparse%2F-%2Fargparse-2.0.1.tgz" + resolution: "argparse@npm:2.0.1" checksum: 10/18640244e641a417ec75a9bd38b0b2b6b95af5199aa241b131d4b2fb206f334d7ecc600bd194861610a5579084978bfcbb02baa399dbe442d56d0ae5e60dbaef languageName: node linkType: hard "aria-query@npm:5.3.0": version: 5.3.0 - resolution: "aria-query@npm:5.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faria-query%2F-%2Faria-query-5.3.0.tgz" + resolution: "aria-query@npm:5.3.0" dependencies: dequal: "npm:^2.0.3" checksum: 10/c3e1ed127cc6886fea4732e97dd6d3c3938e64180803acfb9df8955517c4943760746ffaf4020ce8f7ffaa7556a3b5f85c3769a1f5ca74a1288e02d042f9ae4e @@ -1750,14 +1550,14 @@ __metadata: "aria-query@npm:^5.3.2": version: 5.3.2 - resolution: "aria-query@npm:5.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faria-query%2F-%2Faria-query-5.3.2.tgz" + resolution: "aria-query@npm:5.3.2" checksum: 10/b2fe9bc98bd401bc322ccb99717c1ae2aaf53ea0d468d6e7aebdc02fac736e4a99b46971ee05b783b08ade23c675b2d8b60e4a1222a95f6e27bc4d2a0bfdcc03 languageName: node linkType: hard "array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": version: 1.0.2 - resolution: "array-buffer-byte-length@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray-buffer-byte-length%2F-%2Farray-buffer-byte-length-1.0.2.tgz" + resolution: "array-buffer-byte-length@npm:1.0.2" dependencies: call-bound: "npm:^1.0.3" is-array-buffer: "npm:^3.0.5" @@ -1767,7 +1567,7 @@ __metadata: "array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": version: 3.1.9 - resolution: "array-includes@npm:3.1.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray-includes%2F-%2Farray-includes-3.1.9.tgz" + resolution: "array-includes@npm:3.1.9" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.4" @@ -1783,7 +1583,7 @@ __metadata: "array.prototype.findlast@npm:^1.2.5": version: 1.2.5 - resolution: "array.prototype.findlast@npm:1.2.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.findlast%2F-%2Farray.prototype.findlast-1.2.5.tgz" + resolution: "array.prototype.findlast@npm:1.2.5" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -1797,7 +1597,7 @@ __metadata: "array.prototype.flat@npm:^1.3.1": version: 1.3.3 - resolution: "array.prototype.flat@npm:1.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.flat%2F-%2Farray.prototype.flat-1.3.3.tgz" + resolution: "array.prototype.flat@npm:1.3.3" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -1809,7 +1609,7 @@ __metadata: "array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": version: 1.3.3 - resolution: "array.prototype.flatmap@npm:1.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.flatmap%2F-%2Farray.prototype.flatmap-1.3.3.tgz" + resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -1821,7 +1621,7 @@ __metadata: "array.prototype.tosorted@npm:^1.1.4": version: 1.1.4 - resolution: "array.prototype.tosorted@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farray.prototype.tosorted%2F-%2Farray.prototype.tosorted-1.1.4.tgz" + resolution: "array.prototype.tosorted@npm:1.1.4" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -1834,7 +1634,7 @@ __metadata: "arraybuffer.prototype.slice@npm:^1.0.4": version: 1.0.4 - resolution: "arraybuffer.prototype.slice@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Farraybuffer.prototype.slice%2F-%2Farraybuffer.prototype.slice-1.0.4.tgz" + resolution: "arraybuffer.prototype.slice@npm:1.0.4" dependencies: array-buffer-byte-length: "npm:^1.0.1" call-bind: "npm:^1.0.8" @@ -1849,53 +1649,53 @@ __metadata: "assertion-error@npm:^2.0.1": version: 2.0.1 - resolution: "assertion-error@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fassertion-error%2F-%2Fassertion-error-2.0.1.tgz" + resolution: "assertion-error@npm:2.0.1" checksum: 10/a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66 languageName: node linkType: hard "ast-types-flow@npm:^0.0.8": version: 0.0.8 - resolution: "ast-types-flow@npm:0.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fast-types-flow%2F-%2Fast-types-flow-0.0.8.tgz" + resolution: "ast-types-flow@npm:0.0.8" checksum: 10/85a1c24af4707871c27cfe456bd2ff7fcbe678f3d1c878ac968c9557735a171a17bdcc8c8f903ceab3fc3c49d5b3da2194e6ab0a6be7fec0e133fa028f21ba1b languageName: node linkType: hard -"ast-v8-to-istanbul@npm:^1.0.0": - version: 1.0.0 - resolution: "ast-v8-to-istanbul@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fast-v8-to-istanbul%2F-%2Fast-v8-to-istanbul-1.0.0.tgz" +"ast-v8-to-istanbul@npm:^0.3.10": + version: 0.3.11 + resolution: "ast-v8-to-istanbul@npm:0.3.11" dependencies: "@jridgewell/trace-mapping": "npm:^0.3.31" estree-walker: "npm:^3.0.3" js-tokens: "npm:^10.0.0" - checksum: 10/9d92d5674f7a6cbd9215ed14f81c2255ba44a50ea529ff3159469a82a78d746f06023c060cf7ed702a42475b15bd152a51323b205508922d6c07e3c13d54c463 + checksum: 10/3209a099194d41a9504383b598bfa21a51dc09e3938f4d1fb5dd868ce2c092e9800d783bf8f9527e0dc88a90e6b03d5ab1fedbe9bc7a70485fa7b497190694c7 languageName: node linkType: hard "async-function@npm:^1.0.0": version: 1.0.0 - resolution: "async-function@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fasync-function%2F-%2Fasync-function-1.0.0.tgz" + resolution: "async-function@npm:1.0.0" checksum: 10/1a09379937d846f0ce7614e75071c12826945d4e417db634156bf0e4673c495989302f52186dfa9767a1d9181794554717badd193ca2bbab046ef1da741d8efd languageName: node linkType: hard "async-generator-function@npm:^1.0.0": version: 1.0.0 - resolution: "async-generator-function@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fasync-generator-function%2F-%2Fasync-generator-function-1.0.0.tgz" + resolution: "async-generator-function@npm:1.0.0" checksum: 10/3d49e7acbeee9e84537f4cb0e0f91893df8eba976759875ae8ee9e3d3c82f6ecdebdb347c2fad9926b92596d93cdfc78ecc988bcdf407e40433e8e8e6fe5d78e languageName: node linkType: hard "asynckit@npm:^0.4.0": version: 0.4.0 - resolution: "asynckit@npm:0.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fasynckit%2F-%2Fasynckit-0.4.0.tgz" + resolution: "asynckit@npm:0.4.0" checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 languageName: node linkType: hard "available-typed-arrays@npm:^1.0.7": version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Favailable-typed-arrays%2F-%2Favailable-typed-arrays-1.0.7.tgz" + resolution: "available-typed-arrays@npm:1.0.7" dependencies: possible-typed-array-names: "npm:^1.0.0" checksum: 10/6c9da3a66caddd83c875010a1ca8ef11eac02ba15fb592dc9418b2b5e7b77b645fa7729380a92d9835c2f05f2ca1b6251f39b993e0feb3f1517c74fa1af02cab @@ -1903,104 +1703,105 @@ __metadata: linkType: hard "axe-core@npm:^4.10.0": - version: 4.11.4 - resolution: "axe-core@npm:4.11.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faxe-core%2F-%2Faxe-core-4.11.4.tgz" - checksum: 10/49095daa422d05d99a90b39301a3b5c971e234a4593403dfd6701df637a3e550bcfd7bd096709c5643564dd069208513247791f367790e0605d15386fb2a7bfe + version: 4.11.1 + resolution: "axe-core@npm:4.11.1" + checksum: 10/bbc8e8959258a229b92fbaa73437050825579815051cac7b0fdbb6752946fea226e403bfeeef3d60d712477bdd4c01afdc8455f27c3d85e4251df88b032b6250 languageName: node linkType: hard "axobject-query@npm:^4.1.0": version: 4.1.0 - resolution: "axobject-query@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Faxobject-query%2F-%2Faxobject-query-4.1.0.tgz" + resolution: "axobject-query@npm:4.1.0" checksum: 10/e275dea9b673f71170d914f2d2a18be5d57d8d29717b629e7fedd907dcc2ebdc7a37803ff975874810bd423f222f299c020d28fde40a146f537448bf6bfecb6e languageName: node linkType: hard "bail@npm:^2.0.0": version: 2.0.2 - resolution: "bail@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbail%2F-%2Fbail-2.0.2.tgz" + resolution: "bail@npm:2.0.2" checksum: 10/aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 - resolution: "balanced-match@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbalanced-match%2F-%2Fbalanced-match-1.0.2.tgz" + resolution: "balanced-match@npm:1.0.2" checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard "balanced-match@npm:^4.0.2": version: 4.0.4 - resolution: "balanced-match@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbalanced-match%2F-%2Fbalanced-match-4.0.4.tgz" + resolution: "balanced-match@npm:4.0.4" checksum: 10/fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 languageName: node linkType: hard -"baseline-browser-mapping@npm:^2.10.12": - version: 2.10.27 - resolution: "baseline-browser-mapping@npm:2.10.27::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbaseline-browser-mapping%2F-%2Fbaseline-browser-mapping-2.10.27.tgz" +"baseline-browser-mapping@npm:^2.9.0": + version: 2.10.0 + resolution: "baseline-browser-mapping@npm:2.10.0" bin: baseline-browser-mapping: dist/cli.cjs - checksum: 10/4f28c994592d92ab70479f6fb802c219922a72876e20001a39ae0a0d2fef8c86197ebc830c32c23be3a7ee99e5eababf992c0883461ef5af56a075e8c66079ee + checksum: 10/8145e076e4299f04c7a412e6ea63803e330153cd89c47b5303f9b56b58078f4c3d5a5b5332c1069da889e76facacca4d43f8940375f7e73ce0a4d96214332953 languageName: node linkType: hard "brace-expansion@npm:^1.1.7": - version: 1.1.14 - resolution: "brace-expansion@npm:1.1.14::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrace-expansion%2F-%2Fbrace-expansion-1.1.14.tgz" + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 10/2de747a5891ea0d3a1946ea1ae26e056a47f7ea8d42a3009e1736ec3a31a5aa69a3c5da59d998426773553afe4c258e5b12d7953b534fa7f2cf12ce92eed4931 + checksum: 10/12cb6d6310629e3048cadb003e1aca4d8c9bb5c67c3c321bafdd7e7a50155de081f78ea3e0ed92ecc75a9015e784f301efc8132383132f4f7904ad1ac529c562 languageName: node linkType: hard -"brace-expansion@npm:^2.0.2": - version: 2.1.0 - resolution: "brace-expansion@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrace-expansion%2F-%2Fbrace-expansion-2.1.0.tgz" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10/c77a7a64aabf94b8d5913955adb4f36957917565374461355bb4276830c027a313d981f32410cea9e38f52573e7eb776d02fe05091c3a79a061958d97e4d2b43 - languageName: node - linkType: hard - -"brace-expansion@npm:^5.0.5": - version: 5.0.5 - resolution: "brace-expansion@npm:5.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrace-expansion%2F-%2Fbrace-expansion-5.0.5.tgz" +"brace-expansion@npm:^5.0.2": + version: 5.0.3 + resolution: "brace-expansion@npm:5.0.3" dependencies: balanced-match: "npm:^4.0.2" - checksum: 10/f259b2ddf04489da9512ad637ba6b4ef2d77abd4445d20f7f1714585f153435200a53fa6a2e4a5ee974df14ddad4cd16421f6f803e96e8b452bd48598878d0ee - languageName: node - linkType: hard - -"braces@npm:^3.0.3": - version: 3.0.3 - resolution: "braces@npm:3.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbraces%2F-%2Fbraces-3.0.3.tgz" - dependencies: - fill-range: "npm:^7.1.1" - checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6 + checksum: 10/8ba7deae4ca333d52418d2cde3287ac23f44f7330d92c3ecd96a8941597bea8aab02227bd990944d6711dd549bcc6e550fe70be5d94aa02e2fdc88942f480c9b languageName: node linkType: hard "browserslist@npm:^4.24.0": - version: 4.28.2 - resolution: "browserslist@npm:4.28.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fbrowserslist%2F-%2Fbrowserslist-4.28.2.tgz" - dependencies: - baseline-browser-mapping: "npm:^2.10.12" - caniuse-lite: "npm:^1.0.30001782" - electron-to-chromium: "npm:^1.5.328" - node-releases: "npm:^2.0.36" - update-browserslist-db: "npm:^1.2.3" + version: 4.28.1 + resolution: "browserslist@npm:4.28.1" + dependencies: + baseline-browser-mapping: "npm:^2.9.0" + caniuse-lite: "npm:^1.0.30001759" + electron-to-chromium: "npm:^1.5.263" + node-releases: "npm:^2.0.27" + update-browserslist-db: "npm:^1.2.0" bin: browserslist: cli.js - checksum: 10/cff88386e5b5ba5614c9063bd32ef94865bba22b6a381844c7d09ea1eea62a2247e7106e516abdbfda6b75b9986044c991dfe45f92f10add5ad63dccc07589ec + checksum: 10/64f2a97de4bce8473c0e5ae0af8d76d1ead07a5b05fc6bc87b848678bb9c3a91ae787b27aa98cdd33fc00779607e6c156000bed58fefb9cf8e4c5a183b994cdb + languageName: node + linkType: hard + +"cacache@npm:^20.0.1": + version: 20.0.3 + resolution: "cacache@npm:20.0.3" + dependencies: + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + unique-filename: "npm:^5.0.0" + checksum: 10/388a0169970df9d051da30437f93f81b7e91efb570ad0ff2b8fde33279fbe726c1bc8e8e2b9c05053ffb4f563854c73db395e8712e3b62347a1bc4f7fb8899ff languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 - resolution: "call-bind-apply-helpers@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcall-bind-apply-helpers%2F-%2Fcall-bind-apply-helpers-1.0.2.tgz" + resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" @@ -2008,21 +1809,21 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8, call-bind@npm:^1.0.9": - version: 1.0.9 - resolution: "call-bind@npm:1.0.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcall-bind%2F-%2Fcall-bind-1.0.9.tgz" +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - get-intrinsic: "npm:^1.3.0" + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" set-function-length: "npm:^1.2.2" - checksum: 10/25b1a98d6158f0adf9fface594ca82be4e3ed481d8ff7f36ad1fccb0c8377e38c6a04ff3248693723222d378677e93077c739defc8a6741c82b7e00bcee1245d + checksum: 10/659b03c79bbfccf0cde3a79e7d52570724d7290209823e1ca5088f94b52192dc1836b82a324d0144612f816abb2f1734447438e38d9dafe0b3f82c2a1b9e3bce languageName: node linkType: hard "call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": version: 1.0.4 - resolution: "call-bound@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcall-bound%2F-%2Fcall-bound-1.0.4.tgz" + resolution: "call-bound@npm:1.0.4" dependencies: call-bind-apply-helpers: "npm:^1.0.2" get-intrinsic: "npm:^1.3.0" @@ -2032,35 +1833,35 @@ __metadata: "callsites@npm:^3.0.0": version: 3.1.0 - resolution: "callsites@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcallsites%2F-%2Fcallsites-3.1.0.tgz" + resolution: "callsites@npm:3.1.0" checksum: 10/072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001782": - version: 1.0.30001791 - resolution: "caniuse-lite@npm:1.0.30001791::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcaniuse-lite%2F-%2Fcaniuse-lite-1.0.30001791.tgz" - checksum: 10/0ec6ef60ca9f5da3da37a57c8b7b645878b6aca406eb5b569dda0bdfa518fe83320e3e2e9e25450a40a8f34854c1537c287f8bd107830aa6f39c3018f98fe408 +"caniuse-lite@npm:^1.0.30001759": + version: 1.0.30001772 + resolution: "caniuse-lite@npm:1.0.30001772" + checksum: 10/94f0cdb55fb17271435ad5622be2d422d160a7a13cab3006aab1972b15cf699245772922ff2570b5be6ddc1708a4ac9eedb6989cdabfb2de3ef25f294231409a languageName: node linkType: hard "ccount@npm:^2.0.0": version: 2.0.1 - resolution: "ccount@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fccount%2F-%2Fccount-2.0.1.tgz" + resolution: "ccount@npm:2.0.1" checksum: 10/48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 languageName: node linkType: hard -"chai@npm:^6.2.2": +"chai@npm:^6.2.1": version: 6.2.2 - resolution: "chai@npm:6.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fchai%2F-%2Fchai-6.2.2.tgz" + resolution: "chai@npm:6.2.2" checksum: 10/13cda42cc40aa46da04a41cf7e5c61df6b6ae0b4e8a8c8b40e04d6947e4d7951377ea8c14f9fa7fe5aaa9e8bd9ba414f11288dc958d4cee6f5221b9436f2778f languageName: node linkType: hard "chalk@npm:^4.0.0": version: 4.1.2 - resolution: "chalk@npm:4.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fchalk%2F-%2Fchalk-4.1.2.tgz" + resolution: "chalk@npm:4.1.2" dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" @@ -2070,49 +1871,42 @@ __metadata: "character-entities-html4@npm:^2.0.0": version: 2.1.0 - resolution: "character-entities-html4@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-entities-html4%2F-%2Fcharacter-entities-html4-2.1.0.tgz" + resolution: "character-entities-html4@npm:2.1.0" checksum: 10/7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d languageName: node linkType: hard "character-entities-legacy@npm:^3.0.0": version: 3.0.0 - resolution: "character-entities-legacy@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-entities-legacy%2F-%2Fcharacter-entities-legacy-3.0.0.tgz" + resolution: "character-entities-legacy@npm:3.0.0" checksum: 10/7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 languageName: node linkType: hard "character-entities@npm:^2.0.0": version: 2.0.2 - resolution: "character-entities@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-entities%2F-%2Fcharacter-entities-2.0.2.tgz" + resolution: "character-entities@npm:2.0.2" checksum: 10/c8dd1f4bf1a92fccf7d2fad9673660a88b37854557d30f6076c32fedfb92d1420208298829ff1d3b6b4fa1c7012e8326c45e7f5c3ed1e9a09ec177593c521b2f languageName: node linkType: hard "character-reference-invalid@npm:^2.0.0": version: 2.0.1 - resolution: "character-reference-invalid@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcharacter-reference-invalid%2F-%2Fcharacter-reference-invalid-2.0.1.tgz" + resolution: "character-reference-invalid@npm:2.0.1" checksum: 10/98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee languageName: node linkType: hard "chownr@npm:^3.0.0": version: 3.0.0 - resolution: "chownr@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fchownr%2F-%2Fchownr-3.0.0.tgz" + resolution: "chownr@npm:3.0.0" checksum: 10/b63cb1f73d171d140a2ed8154ee6566c8ab775d3196b0e03a2a94b5f6a0ce7777ee5685ca56849403c8d17bd457a6540672f9a60696a6137c7a409097495b82c languageName: node linkType: hard -"code-block-writer@npm:^13.0.3": - version: 13.0.3 - resolution: "code-block-writer@npm:13.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcode-block-writer%2F-%2Fcode-block-writer-13.0.3.tgz" - checksum: 10/771546224f38610eecee0598e83c9e0f86dcd600ea316dbf27c2cfebaab4fed51b042325aa460b8e0f131fac5c1de208f6610a1ddbffe4b22e76f9b5256707cb - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 - resolution: "color-convert@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcolor-convert%2F-%2Fcolor-convert-2.0.1.tgz" + resolution: "color-convert@npm:2.0.1" dependencies: color-name: "npm:~1.1.4" checksum: 10/fa00c91b4332b294de06b443923246bccebe9fab1b253f7fe1772d37b06a2269b4039a85e309abe1fe11b267b11c08d1d0473fda3badd6167f57313af2887a64 @@ -2121,14 +1915,14 @@ __metadata: "color-name@npm:~1.1.4": version: 1.1.4 - resolution: "color-name@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcolor-name%2F-%2Fcolor-name-1.1.4.tgz" + resolution: "color-name@npm:1.1.4" checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard "combined-stream@npm:^1.0.8": version: 1.0.8 - resolution: "combined-stream@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcombined-stream%2F-%2Fcombined-stream-1.0.8.tgz" + resolution: "combined-stream@npm:1.0.8" dependencies: delayed-stream: "npm:~1.0.0" checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 @@ -2137,35 +1931,35 @@ __metadata: "comma-separated-tokens@npm:^2.0.0": version: 2.0.3 - resolution: "comma-separated-tokens@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcomma-separated-tokens%2F-%2Fcomma-separated-tokens-2.0.3.tgz" + resolution: "comma-separated-tokens@npm:2.0.3" checksum: 10/e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 - resolution: "concat-map@npm:0.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fconcat-map%2F-%2Fconcat-map-0.0.1.tgz" + resolution: "concat-map@npm:0.0.1" checksum: 10/9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2 languageName: node linkType: hard "convert-source-map@npm:^2.0.0": version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fconvert-source-map%2F-%2Fconvert-source-map-2.0.0.tgz" + resolution: "convert-source-map@npm:2.0.0" checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 languageName: node linkType: hard "cookie@npm:^1.0.1": version: 1.1.1 - resolution: "cookie@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcookie%2F-%2Fcookie-1.1.1.tgz" + resolution: "cookie@npm:1.1.1" checksum: 10/85538153054791155cf4d38d2e807e3b9382d71bf71d92fc46fca348515ea574049d0d9ef8eb84d2d54a681ad1d7a7316b1989b901dace50a6c0f4c3858dbdb2 languageName: node linkType: hard "cross-spawn@npm:^7.0.6": version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcross-spawn%2F-%2Fcross-spawn-7.0.6.tgz" + resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" @@ -2176,7 +1970,7 @@ __metadata: "cssstyle@npm:^4.0.1": version: 4.6.0 - resolution: "cssstyle@npm:4.6.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcssstyle%2F-%2Fcssstyle-4.6.0.tgz" + resolution: "cssstyle@npm:4.6.0" dependencies: "@asamuzakjp/css-color": "npm:^3.2.0" rrweb-cssom: "npm:^0.8.0" @@ -2186,21 +1980,21 @@ __metadata: "csstype@npm:^3.2.2": version: 3.2.3 - resolution: "csstype@npm:3.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fcsstype%2F-%2Fcsstype-3.2.3.tgz" + resolution: "csstype@npm:3.2.3" checksum: 10/ad41baf7e2ffac65ab544d79107bf7cd1a4bb9bab9ac3302f59ab4ba655d5e30942a8ae46e10ba160c6f4ecea464cc95b975ca2fefbdeeacd6ac63f12f99fe1f languageName: node linkType: hard "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdamerau-levenshtein%2F-%2Fdamerau-levenshtein-1.0.8.tgz" + resolution: "damerau-levenshtein@npm:1.0.8" checksum: 10/f4eba1c90170f96be25d95fa3857141b5f81e254f7e4d530da929217b19990ea9a0390fc53d3c1cafac9152fda78e722ea4894f765cf6216be413b5af1fbf821 languageName: node linkType: hard "data-urls@npm:^5.0.0": version: 5.0.0 - resolution: "data-urls@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-urls%2F-%2Fdata-urls-5.0.0.tgz" + resolution: "data-urls@npm:5.0.0" dependencies: whatwg-mimetype: "npm:^4.0.0" whatwg-url: "npm:^14.0.0" @@ -2210,7 +2004,7 @@ __metadata: "data-view-buffer@npm:^1.0.2": version: 1.0.2 - resolution: "data-view-buffer@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-view-buffer%2F-%2Fdata-view-buffer-1.0.2.tgz" + resolution: "data-view-buffer@npm:1.0.2" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -2221,7 +2015,7 @@ __metadata: "data-view-byte-length@npm:^1.0.2": version: 1.0.2 - resolution: "data-view-byte-length@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-view-byte-length%2F-%2Fdata-view-byte-length-1.0.2.tgz" + resolution: "data-view-byte-length@npm:1.0.2" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -2232,7 +2026,7 @@ __metadata: "data-view-byte-offset@npm:^1.0.1": version: 1.0.1 - resolution: "data-view-byte-offset@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdata-view-byte-offset%2F-%2Fdata-view-byte-offset-1.0.1.tgz" + resolution: "data-view-byte-offset@npm:1.0.1" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -2243,7 +2037,7 @@ __metadata: "debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.3": version: 4.4.3 - resolution: "debug@npm:4.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdebug%2F-%2Fdebug-4.4.3.tgz" + resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: @@ -2255,14 +2049,14 @@ __metadata: "decimal.js@npm:^10.4.3": version: 10.6.0 - resolution: "decimal.js@npm:10.6.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdecimal.js%2F-%2Fdecimal.js-10.6.0.tgz" + resolution: "decimal.js@npm:10.6.0" checksum: 10/c0d45842d47c311d11b38ce7ccc911121953d4df3ebb1465d92b31970eb4f6738a065426a06094af59bee4b0d64e42e7c8984abd57b6767c64ea90cf90bb4a69 languageName: node linkType: hard "decode-named-character-reference@npm:^1.0.0": version: 1.3.0 - resolution: "decode-named-character-reference@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdecode-named-character-reference%2F-%2Fdecode-named-character-reference-1.3.0.tgz" + resolution: "decode-named-character-reference@npm:1.3.0" dependencies: character-entities: "npm:^2.0.0" checksum: 10/82eb1208abf59d1f1e368285b6880201a3c3f147a4d7ce74e44cd41374ef00c9a376e8595e38002031db63291f91f7f3ff56b9724f715befff8f5566593d6de0 @@ -2271,14 +2065,14 @@ __metadata: "deep-is@npm:^0.1.3": version: 0.1.4 - resolution: "deep-is@npm:0.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdeep-is%2F-%2Fdeep-is-0.1.4.tgz" + resolution: "deep-is@npm:0.1.4" checksum: 10/ec12d074aef5ae5e81fa470b9317c313142c9e8e2afe3f8efa124db309720db96d1d222b82b84c834e5f87e7a614b44a4684b6683583118b87c833b3be40d4d8 languageName: node linkType: hard "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 - resolution: "define-data-property@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdefine-data-property%2F-%2Fdefine-data-property-1.1.4.tgz" + resolution: "define-data-property@npm:1.1.4" dependencies: es-define-property: "npm:^1.0.0" es-errors: "npm:^1.3.0" @@ -2289,7 +2083,7 @@ __metadata: "define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": version: 1.2.1 - resolution: "define-properties@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdefine-properties%2F-%2Fdefine-properties-1.2.1.tgz" + resolution: "define-properties@npm:1.2.1" dependencies: define-data-property: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.0" @@ -2300,28 +2094,21 @@ __metadata: "delayed-stream@npm:~1.0.0": version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdelayed-stream%2F-%2Fdelayed-stream-1.0.0.tgz" + resolution: "delayed-stream@npm:1.0.0" checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 languageName: node linkType: hard "dequal@npm:^2.0.0, dequal@npm:^2.0.3": version: 2.0.3 - resolution: "dequal@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdequal%2F-%2Fdequal-2.0.3.tgz" + resolution: "dequal@npm:2.0.3" checksum: 10/6ff05a7561f33603df87c45e389c9ac0a95e3c056be3da1a0c4702149e3a7f6fe5ffbb294478687ba51a9e95f3a60e8b6b9005993acd79c292c7d15f71964b6b languageName: node linkType: hard -"detect-libc@npm:^2.0.3": - version: 2.1.2 - resolution: "detect-libc@npm:2.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdetect-libc%2F-%2Fdetect-libc-2.1.2.tgz" - checksum: 10/b736c8d97d5d46164c0d1bed53eb4e6a3b1d8530d460211e2d52f1c552875e706c58a5376854e4e54f8b828c9cada58c855288c968522eb93ac7696d65970766 - languageName: node - linkType: hard - "devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 - resolution: "devlop@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdevlop%2F-%2Fdevlop-1.1.0.tgz" + resolution: "devlop@npm:1.1.0" dependencies: dequal: "npm:^2.0.0" checksum: 10/3cc5f903d02d279d6dc4aa71ab6ed9898b9f4d1f861cc5421ce7357893c21b9520de78afb203c92bd650a6977ad0ca98195453a0707a39958cf5fea3b0a8ddd8 @@ -2330,7 +2117,7 @@ __metadata: "doctrine@npm:^2.1.0": version: 2.1.0 - resolution: "doctrine@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdoctrine%2F-%2Fdoctrine-2.1.0.tgz" + resolution: "doctrine@npm:2.1.0" dependencies: esutils: "npm:^2.0.2" checksum: 10/555684f77e791b17173ea86e2eea45ef26c22219cb64670669c4f4bebd26dbc95cd90ec1f4159e9349a6bb9eb892ce4dde8cd0139e77bedd8bf4518238618474 @@ -2339,14 +2126,14 @@ __metadata: "dom-accessibility-api@npm:^0.5.9": version: 0.5.16 - resolution: "dom-accessibility-api@npm:0.5.16::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdom-accessibility-api%2F-%2Fdom-accessibility-api-0.5.16.tgz" + resolution: "dom-accessibility-api@npm:0.5.16" checksum: 10/377b4a7f9eae0a5d72e1068c369c99e0e4ca17fdfd5219f3abd32a73a590749a267475a59d7b03a891f9b673c27429133a818c44b2e47e32fec024b34274e2ca languageName: node linkType: hard "dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fdunder-proto%2F-%2Fdunder-proto-1.0.1.tgz" + resolution: "dunder-proto@npm:1.0.1" dependencies: call-bind-apply-helpers: "npm:^1.0.1" es-errors: "npm:^1.3.0" @@ -2355,37 +2142,53 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.328": - version: 1.5.349 - resolution: "electron-to-chromium@npm:1.5.349::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Felectron-to-chromium%2F-%2Felectron-to-chromium-1.5.349.tgz" - checksum: 10/f4247aae718e9bfd94d4ba0e5c77929d94d4d211a2f71c07b76fbeba8391fa2b979b7ccb9dab75c398e885c12128b22d6b4234c2a88c85e5cc5d3fe37530c945 +"electron-to-chromium@npm:^1.5.263": + version: 1.5.302 + resolution: "electron-to-chromium@npm:1.5.302" + checksum: 10/0d31470d04a0d1ea046dd363370081b67e6fe822949b10cfece0a64fd2f8180afb5ccaf14f4294251e444a0af627eb0dc0156242b714c0f10561adf2a21aa5f7 languageName: node linkType: hard "emoji-regex@npm:^9.2.2": version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Femoji-regex%2F-%2Femoji-regex-9.2.2.tgz" + resolution: "emoji-regex@npm:9.2.2" checksum: 10/915acf859cea7131dac1b2b5c9c8e35c4849e325a1d114c30adb8cd615970f6dca0e27f64f3a4949d7d6ed86ecd79a1c5c63f02e697513cddd7b5835c90948b8 languageName: node linkType: hard +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + "entities@npm:^6.0.0": version: 6.0.1 - resolution: "entities@npm:6.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fentities%2F-%2Fentities-6.0.1.tgz" + resolution: "entities@npm:6.0.1" checksum: 10/62af1307202884349d2867f0aac5c60d8b57102ea0b0e768b16246099512c28e239254ad772d6834e7e14cb1b6f153fc3d0c031934e3183b086c86d3838d874a languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 - resolution: "env-paths@npm:2.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fenv-paths%2F-%2Fenv-paths-2.2.1.tgz" + resolution: "env-paths@npm:2.2.1" checksum: 10/65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.2": - version: 1.24.2 - resolution: "es-abstract@npm:1.24.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-abstract%2F-%2Fes-abstract-1.24.2.tgz" +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd + languageName: node + linkType: hard + +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": + version: 1.24.1 + resolution: "es-abstract@npm:1.24.1" dependencies: array-buffer-byte-length: "npm:^1.0.2" arraybuffer.prototype.slice: "npm:^1.0.4" @@ -2441,32 +2244,32 @@ __metadata: typed-array-length: "npm:^1.0.7" unbox-primitive: "npm:^1.1.0" which-typed-array: "npm:^1.1.19" - checksum: 10/e2c97263d87b7faf65102d887074af421db7e48cd92b8b3cd308216cdd2547b647e8f61bf51429bdb13adc463bb7f421989544cbfd2e7f7469ef7a69ae8a4205 + checksum: 10/c84cb69ebae36781309a3ed70ff40b4767a921d3b3518060fac4e08f14ede04491b68e9f318aedf186e349d4af4a40f5d0e4111e46513800e8368551fd09de8c languageName: node linkType: hard "es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": version: 1.0.1 - resolution: "es-define-property@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-define-property%2F-%2Fes-define-property-1.0.1.tgz" + resolution: "es-define-property@npm:1.0.1" checksum: 10/f8dc9e660d90919f11084db0a893128f3592b781ce967e4fccfb8f3106cb83e400a4032c559184ec52ee1dbd4b01e7776c7cd0b3327b1961b1a4a7008920fe78 languageName: node linkType: hard "es-errors@npm:^1.3.0": version: 1.3.0 - resolution: "es-errors@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-errors%2F-%2Fes-errors-1.3.0.tgz" + resolution: "es-errors@npm:1.3.0" checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 languageName: node linkType: hard "es-iterator-helpers@npm:^1.2.1": - version: 1.3.2 - resolution: "es-iterator-helpers@npm:1.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-iterator-helpers%2F-%2Fes-iterator-helpers-1.3.2.tgz" + version: 1.2.2 + resolution: "es-iterator-helpers@npm:1.2.2" dependencies: - call-bind: "npm:^1.0.9" + call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.24.2" + es-abstract: "npm:^1.24.1" es-errors: "npm:^1.3.0" es-set-tostringtag: "npm:^2.1.0" function-bind: "npm:^1.1.2" @@ -2478,21 +2281,21 @@ __metadata: has-symbols: "npm:^1.1.0" internal-slot: "npm:^1.1.0" iterator.prototype: "npm:^1.1.5" - math-intrinsics: "npm:^1.1.0" - checksum: 10/6b8f9c55c6bb3d5edbae777e892a18e093a7d7a1aa7e8f14da908476b84fbf55769a51356a674819ec95e9655ecdc873a9b7fb5b719320ef67e1b203c77f0bad + safe-array-concat: "npm:^1.1.3" + checksum: 10/17b5b2834c4f5719d6ce0e837a4d11c6ba4640bee28290d22ec4daf7106ec3d5fe0ff4f7e5dbaa2b4612e8335934360e964a8f08608d43f2889da106b25481ee languageName: node linkType: hard -"es-module-lexer@npm:^2.0.0": - version: 2.1.0 - resolution: "es-module-lexer@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-module-lexer%2F-%2Fes-module-lexer-2.1.0.tgz" - checksum: 10/554c4374e78a812a1fa3673871ce7d42236438c414ea80c2ec35521cd9bb26d1d9155287529057d07431fd91df50d6a26d9bee5afd755fb7f6f7c81905a03956 +"es-module-lexer@npm:^1.7.0": + version: 1.7.0 + resolution: "es-module-lexer@npm:1.7.0" + checksum: 10/b6f3e576a3fed4d82b0d0ad4bbf6b3a5ad694d2e7ce8c4a069560da3db6399381eaba703616a182b16dde50ce998af64e07dcf49f2ae48153b9e07be3f107087 languageName: node linkType: hard "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 - resolution: "es-object-atoms@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-object-atoms%2F-%2Fes-object-atoms-1.1.1.tgz" + resolution: "es-object-atoms@npm:1.1.1" dependencies: es-errors: "npm:^1.3.0" checksum: 10/54fe77de288451dae51c37bfbfe3ec86732dc3778f98f3eb3bdb4bf48063b2c0b8f9c93542656986149d08aa5be3204286e2276053d19582b76753f1a2728867 @@ -2501,7 +2304,7 @@ __metadata: "es-set-tostringtag@npm:^2.1.0": version: 2.1.0 - resolution: "es-set-tostringtag@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-set-tostringtag%2F-%2Fes-set-tostringtag-2.1.0.tgz" + resolution: "es-set-tostringtag@npm:2.1.0" dependencies: es-errors: "npm:^1.3.0" get-intrinsic: "npm:^1.2.6" @@ -2513,7 +2316,7 @@ __metadata: "es-shim-unscopables@npm:^1.0.2": version: 1.1.0 - resolution: "es-shim-unscopables@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-shim-unscopables%2F-%2Fes-shim-unscopables-1.1.0.tgz" + resolution: "es-shim-unscopables@npm:1.1.0" dependencies: hasown: "npm:^2.0.2" checksum: 10/c351f586c30bbabc62355be49564b2435468b52c3532b8a1663672e3d10dc300197e69c247869dd173e56d86423ab95fc0c10b0939cdae597094e0fdca078cba @@ -2522,7 +2325,7 @@ __metadata: "es-to-primitive@npm:^1.3.0": version: 1.3.0 - resolution: "es-to-primitive@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fes-to-primitive%2F-%2Fes-to-primitive-1.3.0.tgz" + resolution: "es-to-primitive@npm:1.3.0" dependencies: is-callable: "npm:^1.2.7" is-date-object: "npm:^1.0.5" @@ -2532,35 +2335,35 @@ __metadata: linkType: hard "esbuild@npm:^0.27.0": - version: 0.27.7 - resolution: "esbuild@npm:0.27.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesbuild%2F-%2Fesbuild-0.27.7.tgz" - dependencies: - "@esbuild/aix-ppc64": "npm:0.27.7" - "@esbuild/android-arm": "npm:0.27.7" - "@esbuild/android-arm64": "npm:0.27.7" - "@esbuild/android-x64": "npm:0.27.7" - "@esbuild/darwin-arm64": "npm:0.27.7" - "@esbuild/darwin-x64": "npm:0.27.7" - "@esbuild/freebsd-arm64": "npm:0.27.7" - "@esbuild/freebsd-x64": "npm:0.27.7" - "@esbuild/linux-arm": "npm:0.27.7" - "@esbuild/linux-arm64": "npm:0.27.7" - "@esbuild/linux-ia32": "npm:0.27.7" - "@esbuild/linux-loong64": "npm:0.27.7" - "@esbuild/linux-mips64el": "npm:0.27.7" - "@esbuild/linux-ppc64": "npm:0.27.7" - "@esbuild/linux-riscv64": "npm:0.27.7" - "@esbuild/linux-s390x": "npm:0.27.7" - "@esbuild/linux-x64": "npm:0.27.7" - "@esbuild/netbsd-arm64": "npm:0.27.7" - "@esbuild/netbsd-x64": "npm:0.27.7" - "@esbuild/openbsd-arm64": "npm:0.27.7" - "@esbuild/openbsd-x64": "npm:0.27.7" - "@esbuild/openharmony-arm64": "npm:0.27.7" - "@esbuild/sunos-x64": "npm:0.27.7" - "@esbuild/win32-arm64": "npm:0.27.7" - "@esbuild/win32-ia32": "npm:0.27.7" - "@esbuild/win32-x64": "npm:0.27.7" + version: 0.27.3 + resolution: "esbuild@npm:0.27.3" + dependencies: + "@esbuild/aix-ppc64": "npm:0.27.3" + "@esbuild/android-arm": "npm:0.27.3" + "@esbuild/android-arm64": "npm:0.27.3" + "@esbuild/android-x64": "npm:0.27.3" + "@esbuild/darwin-arm64": "npm:0.27.3" + "@esbuild/darwin-x64": "npm:0.27.3" + "@esbuild/freebsd-arm64": "npm:0.27.3" + "@esbuild/freebsd-x64": "npm:0.27.3" + "@esbuild/linux-arm": "npm:0.27.3" + "@esbuild/linux-arm64": "npm:0.27.3" + "@esbuild/linux-ia32": "npm:0.27.3" + "@esbuild/linux-loong64": "npm:0.27.3" + "@esbuild/linux-mips64el": "npm:0.27.3" + "@esbuild/linux-ppc64": "npm:0.27.3" + "@esbuild/linux-riscv64": "npm:0.27.3" + "@esbuild/linux-s390x": "npm:0.27.3" + "@esbuild/linux-x64": "npm:0.27.3" + "@esbuild/netbsd-arm64": "npm:0.27.3" + "@esbuild/netbsd-x64": "npm:0.27.3" + "@esbuild/openbsd-arm64": "npm:0.27.3" + "@esbuild/openbsd-x64": "npm:0.27.3" + "@esbuild/openharmony-arm64": "npm:0.27.3" + "@esbuild/sunos-x64": "npm:0.27.3" + "@esbuild/win32-arm64": "npm:0.27.3" + "@esbuild/win32-ia32": "npm:0.27.3" + "@esbuild/win32-x64": "npm:0.27.3" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -2616,34 +2419,34 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10/262b16c4a33cb70e9f054759a7ce420541649315eef7b064172c795021ccce322e56c3f5fd52e8842873f1c23745f3ab62311a24860950bd5406ba77b36b8529 + checksum: 10/aa74b8d8a3ed8e2eea4d8421737b322f4d21215244e8fa2156c6402d49b5bda01343c220196f1e3f830a7ce92b54ef653c6c723a8cc2e912bb4d17b7398b51ae languageName: node linkType: hard "escalade@npm:^3.2.0": version: 3.2.0 - resolution: "escalade@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fescalade%2F-%2Fescalade-3.2.0.tgz" + resolution: "escalade@npm:3.2.0" checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fescape-string-regexp%2F-%2Fescape-string-regexp-4.0.0.tgz" + resolution: "escape-string-regexp@npm:4.0.0" checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 languageName: node linkType: hard "escape-string-regexp@npm:^5.0.0": version: 5.0.0 - resolution: "escape-string-regexp@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fescape-string-regexp%2F-%2Fescape-string-regexp-5.0.0.tgz" + resolution: "escape-string-regexp@npm:5.0.0" checksum: 10/20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e languageName: node linkType: hard "eslint-config-prettier@npm:^10.1.1": version: 10.1.8 - resolution: "eslint-config-prettier@npm:10.1.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-config-prettier%2F-%2Feslint-config-prettier-10.1.8.tgz" + resolution: "eslint-config-prettier@npm:10.1.8" peerDependencies: eslint: ">=7.0.0" bin: @@ -2654,7 +2457,7 @@ __metadata: "eslint-plugin-jsx-a11y@npm:^6.10.2": version: 6.10.2 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-plugin-jsx-a11y%2F-%2Feslint-plugin-jsx-a11y-6.10.2.tgz" + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" dependencies: aria-query: "npm:^5.3.2" array-includes: "npm:^3.1.8" @@ -2679,7 +2482,7 @@ __metadata: "eslint-plugin-react@npm:^7.37.5": version: 7.37.5 - resolution: "eslint-plugin-react@npm:7.37.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-plugin-react%2F-%2Feslint-plugin-react-7.37.5.tgz" + resolution: "eslint-plugin-react@npm:7.37.5" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" @@ -2707,7 +2510,7 @@ __metadata: "eslint-scope@npm:^8.4.0": version: 8.4.0 - resolution: "eslint-scope@npm:8.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-scope%2F-%2Feslint-scope-8.4.0.tgz" + resolution: "eslint-scope@npm:8.4.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" @@ -2717,14 +2520,14 @@ __metadata: "eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-visitor-keys%2F-%2Feslint-visitor-keys-3.4.3.tgz" + resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b languageName: node linkType: hard "eslint-visitor-keys@npm:^4.2.1": version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Feslint-visitor-keys%2F-%2Feslint-visitor-keys-4.2.1.tgz" + resolution: "eslint-visitor-keys@npm:4.2.1" checksum: 10/3ee00fc6a7002d4b0ffd9dc99e13a6a7882c557329e6c25ab254220d71e5c9c4f89dca4695352949ea678eb1f3ba912a18ef8aac0a7fe094196fd92f441bfce2 languageName: node linkType: hard @@ -2787,7 +2590,7 @@ __metadata: "espree@npm:^10.0.1, espree@npm:^10.4.0": version: 10.4.0 - resolution: "espree@npm:10.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fespree%2F-%2Fespree-10.4.0.tgz" + resolution: "espree@npm:10.4.0" dependencies: acorn: "npm:^8.15.0" acorn-jsx: "npm:^5.3.2" @@ -2798,7 +2601,7 @@ __metadata: "esquery@npm:^1.5.0": version: 1.7.0 - resolution: "esquery@npm:1.7.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesquery%2F-%2Fesquery-1.7.0.tgz" + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" checksum: 10/4afaf3089367e1f5885caa116ef386dffd8bfd64da21fd3d0e56e938d2667cfb2e5400ab4a825aa70e799bb3741e5b5d63c0b94d86e2d4cf3095c9e64b2f5a15 @@ -2807,7 +2610,7 @@ __metadata: "esrecurse@npm:^4.3.0": version: 4.3.0 - resolution: "esrecurse@npm:4.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesrecurse%2F-%2Fesrecurse-4.3.0.tgz" + resolution: "esrecurse@npm:4.3.0" dependencies: estraverse: "npm:^5.2.0" checksum: 10/44ffcd89e714ea6b30143e7f119b104fc4d75e77ee913f34d59076b40ef2d21967f84e019f84e1fd0465b42cdbf725db449f232b5e47f29df29ed76194db8e16 @@ -2816,21 +2619,21 @@ __metadata: "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 - resolution: "estraverse@npm:5.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Festraverse%2F-%2Festraverse-5.3.0.tgz" + resolution: "estraverse@npm:5.3.0" checksum: 10/37cbe6e9a68014d34dbdc039f90d0baf72436809d02edffcc06ba3c2a12eb298048f877511353b130153e532aac8d68ba78430c0dd2f44806ebc7c014b01585e languageName: node linkType: hard "estree-util-is-identifier-name@npm:^3.0.0": version: 3.0.0 - resolution: "estree-util-is-identifier-name@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Festree-util-is-identifier-name%2F-%2Festree-util-is-identifier-name-3.0.0.tgz" + resolution: "estree-util-is-identifier-name@npm:3.0.0" checksum: 10/cdc9187614fdb269d714eddfdf72c270a79daa9ed51e259bb78527983be6dcc68da6a914ccc41175b662194c67fbd2a1cd262f85fac1eef7111cfddfaf6f77f8 languageName: node linkType: hard "estree-walker@npm:^3.0.3": version: 3.0.3 - resolution: "estree-walker@npm:3.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Festree-walker%2F-%2Festree-walker-3.0.3.tgz" + resolution: "estree-walker@npm:3.0.3" dependencies: "@types/estree": "npm:^1.0.0" checksum: 10/a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af @@ -2839,87 +2642,65 @@ __metadata: "esutils@npm:^2.0.2": version: 2.0.3 - resolution: "esutils@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fesutils%2F-%2Fesutils-2.0.3.tgz" + resolution: "esutils@npm:2.0.3" checksum: 10/b23acd24791db11d8f65be5ea58fd9a6ce2df5120ae2da65c16cfc5331ff59d5ac4ef50af66cd4bde238881503ec839928a0135b99a036a9cdfa22d17fd56cdb languageName: node linkType: hard -"expect-type@npm:^1.3.0": +"expect-type@npm:^1.2.2": version: 1.3.0 - resolution: "expect-type@npm:1.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fexpect-type%2F-%2Fexpect-type-1.3.0.tgz" + resolution: "expect-type@npm:1.3.0" checksum: 10/a5fada3d0c621649261f886e7d93e6bf80ce26d8a86e5d517e38301b8baec8450ab2cb94ba6e7a0a6bf2fc9ee55f54e1b06938ef1efa52ddcfeffbfa01acbbcc languageName: node linkType: hard "exponential-backoff@npm:^3.1.1": version: 3.1.3 - resolution: "exponential-backoff@npm:3.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fexponential-backoff%2F-%2Fexponential-backoff-3.1.3.tgz" + resolution: "exponential-backoff@npm:3.1.3" checksum: 10/ca25962b4bbab943b7c4ed0b5228e263833a5063c65e1cdeac4be9afad350aae5466e8e619b5051f4f8d37b2144a2d6e8fcc771b6cc82934f7dade2f964f652c languageName: node linkType: hard "extend@npm:^3.0.0": version: 3.0.2 - resolution: "extend@npm:3.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fextend%2F-%2Fextend-3.0.2.tgz" + resolution: "extend@npm:3.0.2" checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-deep-equal%2F-%2Ffast-deep-equal-3.1.3.tgz" + resolution: "fast-deep-equal@npm:3.1.3" checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d languageName: node linkType: hard -"fast-glob@npm:^3.3.2": - version: 3.3.3 - resolution: "fast-glob@npm:3.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-glob%2F-%2Ffast-glob-3.3.3.tgz" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.8" - checksum: 10/dcc6432b269762dd47381d8b8358bf964d8f4f60286ac6aa41c01ade70bda459ff2001b516690b96d5365f68a49242966112b5d5cc9cd82395fa8f9d017c90ad - languageName: node - linkType: hard - "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-json-stable-stringify%2F-%2Ffast-json-stable-stringify-2.1.0.tgz" + resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e languageName: node linkType: hard "fast-levenshtein@npm:^2.0.6": version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffast-levenshtein%2F-%2Ffast-levenshtein-2.0.6.tgz" + resolution: "fast-levenshtein@npm:2.0.6" checksum: 10/eb7e220ecf2bab5159d157350b81d01f75726a4382f5a9266f42b9150c4523b9795f7f5d9fbbbeaeac09a441b2369f05ee02db48ea938584205530fe5693cfe1 languageName: node linkType: hard "fastdom@npm:^1.0.11, fastdom@npm:^1.0.12": version: 1.0.12 - resolution: "fastdom@npm:1.0.12::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffastdom%2F-%2Ffastdom-1.0.12.tgz" + resolution: "fastdom@npm:1.0.12" dependencies: strictdom: "npm:^1.0.1" checksum: 10/e87d67aaed413de24680c9ec735231b6568b62e2b7740f320c3c9f0bc57ed8079ed16aaf8c83a1c27e14948f1a87a7dab98d83a375b85bf77f8bffc2ae55777f languageName: node linkType: hard -"fastq@npm:^1.6.0": - version: 1.20.1 - resolution: "fastq@npm:1.20.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffastq%2F-%2Ffastq-1.20.1.tgz" - dependencies: - reusify: "npm:^1.0.4" - checksum: 10/ab2fe3a7a108112e7752cfe7fc11683c21e595913a6a593ad0b4415f31dddbfc283775ab66f2c8ccea6ab7cfc116157cbddcfae9798d9de98d08fe0a2c3e97b2 - languageName: node - linkType: hard - "fdir@npm:^6.5.0": version: 6.5.0 - resolution: "fdir@npm:6.5.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffdir%2F-%2Ffdir-6.5.0.tgz" + resolution: "fdir@npm:6.5.0" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2931,25 +2712,16 @@ __metadata: "file-entry-cache@npm:^8.0.0": version: 8.0.0 - resolution: "file-entry-cache@npm:8.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffile-entry-cache%2F-%2Ffile-entry-cache-8.0.0.tgz" + resolution: "file-entry-cache@npm:8.0.0" dependencies: flat-cache: "npm:^4.0.0" checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffill-range%2F-%2Ffill-range-7.1.1.tgz" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea - languageName: node - linkType: hard - "find-up@npm:^5.0.0": version: 5.0.0 - resolution: "find-up@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffind-up%2F-%2Ffind-up-5.0.0.tgz" + resolution: "find-up@npm:5.0.0" dependencies: locate-path: "npm:^6.0.0" path-exists: "npm:^4.0.0" @@ -2959,14 +2731,14 @@ __metadata: "fizban@npm:^0.7.2": version: 0.7.2 - resolution: "fizban@npm:0.7.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffizban%2F-%2Ffizban-0.7.2.tgz" + resolution: "fizban@npm:0.7.2" checksum: 10/ff7f96df55968bdccc132dec82de4aa2edfe87e92a6b3f19e0b8e8ef8e37f7d83617939bc643d38b57beb18e4b3e53765f497508c96aba6b8f037a000765ab77 languageName: node linkType: hard "flat-cache@npm:^4.0.0": version: 4.0.1 - resolution: "flat-cache@npm:4.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fflat-cache%2F-%2Fflat-cache-4.0.1.tgz" + resolution: "flat-cache@npm:4.0.1" dependencies: flatted: "npm:^3.2.9" keyv: "npm:^4.5.4" @@ -2983,7 +2755,7 @@ __metadata: "for-each@npm:^0.3.3, for-each@npm:^0.3.5": version: 0.3.5 - resolution: "for-each@npm:0.3.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffor-each%2F-%2Ffor-each-0.3.5.tgz" + resolution: "for-each@npm:0.3.5" dependencies: is-callable: "npm:^1.2.7" checksum: 10/330cc2439f85c94f4609de3ee1d32c5693ae15cdd7fe3d112c4fd9efd4ce7143f2c64ef6c2c9e0cfdb0058437f33ef05b5bdae5b98fcc903fb2143fbaf0fea0f @@ -2992,7 +2764,7 @@ __metadata: "form-data@npm:^4.0.0": version: 4.0.5 - resolution: "form-data@npm:4.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fform-data%2F-%2Fform-data-4.0.5.tgz" + resolution: "form-data@npm:4.0.5" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" @@ -3003,9 +2775,18 @@ __metadata: languageName: node linkType: hard +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10/af143246cf6884fe26fa281621d45cfe111d34b30535a475bfa38dafe343dadb466c047a924ffc7d6b7b18265df4110224ce3803806dbb07173bf2087b648d7f + languageName: node + linkType: hard + "fsevents@npm:2.3.2": version: 2.3.2 - resolution: "fsevents@npm:2.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffsevents%2F-%2Ffsevents-2.3.2.tgz" + resolution: "fsevents@npm:2.3.2" dependencies: node-gyp: "npm:latest" checksum: 10/6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256 @@ -3015,7 +2796,7 @@ __metadata: "fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 - resolution: "fsevents@npm:2.3.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffsevents%2F-%2Ffsevents-2.3.3.tgz" + resolution: "fsevents@npm:2.3.3" dependencies: node-gyp: "npm:latest" checksum: 10/4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0 @@ -3025,7 +2806,7 @@ __metadata: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin": version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Ffsevents%252F-%252Ffsevents-2.3.2.tgz#optional!builtin::version=2.3.2&hash=df0bf1" + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" dependencies: node-gyp: "npm:latest" conditions: os=darwin @@ -3034,7 +2815,7 @@ __metadata: "fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Ffsevents%252F-%252Ffsevents-2.3.3.tgz#optional!builtin::version=2.3.3&hash=df0bf1" + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: node-gyp: "npm:latest" conditions: os=darwin @@ -3043,14 +2824,14 @@ __metadata: "function-bind@npm:^1.1.2": version: 1.1.2 - resolution: "function-bind@npm:1.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffunction-bind%2F-%2Ffunction-bind-1.1.2.tgz" + resolution: "function-bind@npm:1.1.2" checksum: 10/185e20d20f10c8d661d59aac0f3b63b31132d492e1b11fcc2a93cb2c47257ebaee7407c38513efd2b35cafdf972d9beb2ea4593c1e0f3bf8f2744836928d7454 languageName: node linkType: hard "function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": version: 1.1.8 - resolution: "function.prototype.name@npm:1.1.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffunction.prototype.name%2F-%2Ffunction.prototype.name-1.1.8.tgz" + resolution: "function.prototype.name@npm:1.1.8" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -3064,28 +2845,28 @@ __metadata: "functions-have-names@npm:^1.2.3": version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ffunctions-have-names%2F-%2Ffunctions-have-names-1.2.3.tgz" + resolution: "functions-have-names@npm:1.2.3" checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 languageName: node linkType: hard "generator-function@npm:^2.0.0": version: 2.0.1 - resolution: "generator-function@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgenerator-function%2F-%2Fgenerator-function-2.0.1.tgz" + resolution: "generator-function@npm:2.0.1" checksum: 10/eb7e7eb896c5433f3d40982b2ccacdb3dd990dd3499f14040e002b5d54572476513be8a2e6f9609f6e41ab29f2c4469307611ddbfc37ff4e46b765c326663805 languageName: node linkType: hard "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgensync%2F-%2Fgensync-1.0.0-beta.2.tgz" + resolution: "gensync@npm:1.0.0-beta.2" checksum: 10/17d8333460204fbf1f9160d067e1e77f908a5447febb49424b8ab043026049835c9ef3974445c57dbd39161f4d2b04356d7de12b2eecaa27a7a7ea7d871cbedd languageName: node linkType: hard "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": version: 1.3.1 - resolution: "get-intrinsic@npm:1.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fget-intrinsic%2F-%2Fget-intrinsic-1.3.1.tgz" + resolution: "get-intrinsic@npm:1.3.1" dependencies: async-function: "npm:^1.0.0" async-generator-function: "npm:^1.0.0" @@ -3106,7 +2887,7 @@ __metadata: "get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": version: 1.0.1 - resolution: "get-proto@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fget-proto%2F-%2Fget-proto-1.0.1.tgz" + resolution: "get-proto@npm:1.0.1" dependencies: dunder-proto: "npm:^1.0.1" es-object-atoms: "npm:^1.0.0" @@ -3116,7 +2897,7 @@ __metadata: "get-symbol-description@npm:^1.1.0": version: 1.1.0 - resolution: "get-symbol-description@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fget-symbol-description%2F-%2Fget-symbol-description-1.1.0.tgz" + resolution: "get-symbol-description@npm:1.1.0" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -3125,27 +2906,18 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglob-parent%2F-%2Fglob-parent-5.1.2.tgz" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10/32cd106ce8c0d83731966d31517adb766d02c3812de49c30cfe0675c7c0ae6630c11214c54a5ae67aca882cf738d27fd7768f21aa19118b9245950554be07247 - languageName: node - linkType: hard - "glob-parent@npm:^6.0.2": version: 6.0.2 - resolution: "glob-parent@npm:6.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglob-parent%2F-%2Fglob-parent-6.0.2.tgz" + resolution: "glob-parent@npm:6.0.2" dependencies: is-glob: "npm:^4.0.3" checksum: 10/c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 languageName: node linkType: hard -"glob@npm:^13.0.3": +"glob@npm:^13.0.0, glob@npm:^13.0.3": version: 13.0.6 - resolution: "glob@npm:13.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglob%2F-%2Fglob-13.0.6.tgz" + resolution: "glob@npm:13.0.6" dependencies: minimatch: "npm:^10.2.2" minipass: "npm:^7.1.3" @@ -3156,14 +2928,14 @@ __metadata: "globals@npm:^14.0.0": version: 14.0.0 - resolution: "globals@npm:14.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglobals%2F-%2Fglobals-14.0.0.tgz" + resolution: "globals@npm:14.0.0" checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 languageName: node linkType: hard "globalthis@npm:^1.0.4": version: 1.0.4 - resolution: "globalthis@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fglobalthis%2F-%2Fglobalthis-1.0.4.tgz" + resolution: "globalthis@npm:1.0.4" dependencies: define-properties: "npm:^1.2.1" gopd: "npm:^1.0.1" @@ -3173,35 +2945,35 @@ __metadata: "gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 - resolution: "gopd@npm:1.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgopd%2F-%2Fgopd-1.2.0.tgz" + resolution: "gopd@npm:1.2.0" checksum: 10/94e296d69f92dc1c0768fcfeecfb3855582ab59a7c75e969d5f96ce50c3d201fd86d5a2857c22565764d5bb8a816c7b1e58f133ec318cd56274da36c5e3fb1a1 languageName: node linkType: hard "graceful-fs@npm:^4.2.6": version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fgraceful-fs%2F-%2Fgraceful-fs-4.2.11.tgz" + resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 languageName: node linkType: hard "has-bigints@npm:^1.0.2": version: 1.1.0 - resolution: "has-bigints@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-bigints%2F-%2Fhas-bigints-1.1.0.tgz" + resolution: "has-bigints@npm:1.1.0" checksum: 10/90fb1b24d40d2472bcd1c8bd9dd479037ec240215869bdbff97b2be83acef57d28f7e96bdd003a21bed218d058b49097f4acc8821c05b1629cc5d48dd7bfcccd languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 - resolution: "has-flag@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-flag%2F-%2Fhas-flag-4.0.0.tgz" + resolution: "has-flag@npm:4.0.0" checksum: 10/261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad languageName: node linkType: hard "has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-property-descriptors%2F-%2Fhas-property-descriptors-1.0.2.tgz" + resolution: "has-property-descriptors@npm:1.0.2" dependencies: es-define-property: "npm:^1.0.0" checksum: 10/2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2 @@ -3210,7 +2982,7 @@ __metadata: "has-proto@npm:^1.2.0": version: 1.2.0 - resolution: "has-proto@npm:1.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-proto%2F-%2Fhas-proto-1.2.0.tgz" + resolution: "has-proto@npm:1.2.0" dependencies: dunder-proto: "npm:^1.0.0" checksum: 10/7eaed07728eaa28b77fadccabce53f30de467ff186a766872669a833ac2e87d8922b76a22cc58339d7e0277aefe98d6d00762113b27a97cdf65adcf958970935 @@ -3219,14 +2991,14 @@ __metadata: "has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 - resolution: "has-symbols@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-symbols%2F-%2Fhas-symbols-1.1.0.tgz" + resolution: "has-symbols@npm:1.1.0" checksum: 10/959385c98696ebbca51e7534e0dc723ada325efa3475350951363cce216d27373e0259b63edb599f72eb94d6cde8577b4b2375f080b303947e560f85692834fa languageName: node linkType: hard "has-tostringtag@npm:^1.0.2": version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhas-tostringtag%2F-%2Fhas-tostringtag-1.0.2.tgz" + resolution: "has-tostringtag@npm:1.0.2" dependencies: has-symbols: "npm:^1.0.3" checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe @@ -3234,17 +3006,17 @@ __metadata: linkType: hard "hasown@npm:^2.0.2": - version: 2.0.3 - resolution: "hasown@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhasown%2F-%2Fhasown-2.0.3.tgz" + version: 2.0.2 + resolution: "hasown@npm:2.0.2" dependencies: function-bind: "npm:^1.1.2" - checksum: 10/619526379cda755409d856cbf3c65b82ea342151719a0a550920cf7d6a7f58f7cf079e5a78f3acd162324fc784a3d3d6f6f61aff613b47a0163c16fbe09ea89f + checksum: 10/7898a9c1788b2862cf0f9c345a6bec77ba4a0c0983c7f19d610c382343d4f98fa260686b225dfb1f88393a66679d2ec58ee310c1d6868c081eda7918f32cc70a languageName: node linkType: hard "hast-util-is-element@npm:^3.0.0": version: 3.0.0 - resolution: "hast-util-is-element@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-is-element%2F-%2Fhast-util-is-element-3.0.0.tgz" + resolution: "hast-util-is-element@npm:3.0.0" dependencies: "@types/hast": "npm:^3.0.0" checksum: 10/b4e6d84c763ffdc44198ba0c4a5a7430794a7b2c1eec699d37776ea9832eef79f129726c175982103eb3b21f531a6bfd2fa43ce26e1ed6d8f6a87c102ba212c8 @@ -3253,7 +3025,7 @@ __metadata: "hast-util-to-jsx-runtime@npm:^2.0.0": version: 2.3.6 - resolution: "hast-util-to-jsx-runtime@npm:2.3.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-to-jsx-runtime%2F-%2Fhast-util-to-jsx-runtime-2.3.6.tgz" + resolution: "hast-util-to-jsx-runtime@npm:2.3.6" dependencies: "@types/estree": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -3276,7 +3048,7 @@ __metadata: "hast-util-to-text@npm:^4.0.0": version: 4.0.2 - resolution: "hast-util-to-text@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-to-text%2F-%2Fhast-util-to-text-4.0.2.tgz" + resolution: "hast-util-to-text@npm:4.0.2" dependencies: "@types/hast": "npm:^3.0.0" "@types/unist": "npm:^3.0.0" @@ -3288,7 +3060,7 @@ __metadata: "hast-util-whitespace@npm:^3.0.0": version: 3.0.0 - resolution: "hast-util-whitespace@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhast-util-whitespace%2F-%2Fhast-util-whitespace-3.0.0.tgz" + resolution: "hast-util-whitespace@npm:3.0.0" dependencies: "@types/hast": "npm:^3.0.0" checksum: 10/8c7e9eeb8131fc18702f3a42623eb6b0b09d470347aa8badacac70e6d91f79657ab8c6b57c4c6fee3658cff405fac30e816d1cdfb3ed1fbf6045d0a4555cf4d4 @@ -3297,14 +3069,14 @@ __metadata: "highlight.js@npm:~11.11.0": version: 11.11.1 - resolution: "highlight.js@npm:11.11.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhighlight.js%2F-%2Fhighlight.js-11.11.1.tgz" + resolution: "highlight.js@npm:11.11.1" checksum: 10/205272f12f2c8ab1760452a75c58b043b11129cf3a5d2a9c0c90d43993580d0f5c385a73a4b8aba197eef20c0ec37d64000e6b35c4ed5991324f4c2dc78f4e43 languageName: node linkType: hard "html-encoding-sniffer@npm:^4.0.0": version: 4.0.0 - resolution: "html-encoding-sniffer@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhtml-encoding-sniffer%2F-%2Fhtml-encoding-sniffer-4.0.0.tgz" + resolution: "html-encoding-sniffer@npm:4.0.0" dependencies: whatwg-encoding: "npm:^3.1.1" checksum: 10/e86efd493293a5671b8239bd099d42128433bb3c7b0fdc7819282ef8e118a21f5dead0ad6f358e024a4e5c84f17ebb7a9b36075220fac0a6222b207248bede6f @@ -3313,21 +3085,28 @@ __metadata: "html-escaper@npm:^2.0.0": version: 2.0.2 - resolution: "html-escaper@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhtml-escaper%2F-%2Fhtml-escaper-2.0.2.tgz" + resolution: "html-escaper@npm:2.0.2" checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 languageName: node linkType: hard "html-url-attributes@npm:^3.0.0": version: 3.0.1 - resolution: "html-url-attributes@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhtml-url-attributes%2F-%2Fhtml-url-attributes-3.0.1.tgz" + resolution: "html-url-attributes@npm:3.0.1" checksum: 10/494074c2f730c5c0e517aa1b10111fb36732534a2d2b70427582c4a615472b47da472cf3a17562cc653826d378d20960f2783e0400f4f7cf0c3c2d91c6188d13 languageName: node linkType: hard -"http-proxy-agent@npm:^7.0.2": +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10/4efd2dfcfeea9d5e88c84af450b9980be8a43c2c8179508b1c57c7b4421c855f3e8efe92fa53e0b3f4a43c85824ada930eabbc306d1b3beab750b6dcc5187693 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhttp-proxy-agent%2F-%2Fhttp-proxy-agent-7.0.2.tgz" + resolution: "http-proxy-agent@npm:7.0.2" dependencies: agent-base: "npm:^7.1.0" debug: "npm:^4.3.4" @@ -3335,9 +3114,9 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.5": +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": version: 7.0.6 - resolution: "https-proxy-agent@npm:7.0.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fhttps-proxy-agent%2F-%2Fhttps-proxy-agent-7.0.6.tgz" + resolution: "https-proxy-agent@npm:7.0.6" dependencies: agent-base: "npm:^7.1.2" debug: "npm:4" @@ -3345,9 +3124,9 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ficonv-lite%2F-%2Ficonv-lite-0.6.3.tgz" + resolution: "iconv-lite@npm:0.6.3" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f @@ -3356,21 +3135,21 @@ __metadata: "ignore@npm:^5.2.0": version: 5.3.2 - resolution: "ignore@npm:5.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fignore%2F-%2Fignore-5.3.2.tgz" + resolution: "ignore@npm:5.3.2" checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 languageName: node linkType: hard "ignore@npm:^7.0.5": version: 7.0.5 - resolution: "ignore@npm:7.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fignore%2F-%2Fignore-7.0.5.tgz" + resolution: "ignore@npm:7.0.5" checksum: 10/f134b96a4de0af419196f52c529d5c6120c4456ff8a6b5a14ceaaa399f883e15d58d2ce651c9b69b9388491d4669dda47285d307e827de9304a53a1824801bc6 languageName: node linkType: hard "import-fresh@npm:^3.2.1": version: 3.3.1 - resolution: "import-fresh@npm:3.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fimport-fresh%2F-%2Fimport-fresh-3.3.1.tgz" + resolution: "import-fresh@npm:3.3.1" dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" @@ -3380,14 +3159,14 @@ __metadata: "imurmurhash@npm:^0.1.4": version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fimurmurhash%2F-%2Fimurmurhash-0.1.4.tgz" + resolution: "imurmurhash@npm:0.1.4" checksum: 10/2d30b157a91fe1c1d7c6f653cbf263f039be6c5bfa959245a16d4ee191fc0f2af86c08545b6e6beeb041c56b574d2d5b9f95343d378ab49c0f37394d541e7fc8 languageName: node linkType: hard "inline-style-parser@npm:0.2.7": version: 0.2.7 - resolution: "inline-style-parser@npm:0.2.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Finline-style-parser%2F-%2Finline-style-parser-0.2.7.tgz" + resolution: "inline-style-parser@npm:0.2.7" checksum: 10/cdfe719bd694b53bfbad20a645a9a4dda89c3ff56ee2b95945ad4eea86c541501f49f852d23bc2f73cd8127b6b62ea9027f697838e323a7f7d0d9b760e27a632 languageName: node linkType: hard @@ -3409,7 +3188,7 @@ __metadata: "internal-slot@npm:^1.1.0": version: 1.1.0 - resolution: "internal-slot@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Finternal-slot%2F-%2Finternal-slot-1.1.0.tgz" + resolution: "internal-slot@npm:1.1.0" dependencies: es-errors: "npm:^1.3.0" hasown: "npm:^2.0.2" @@ -3418,16 +3197,23 @@ __metadata: languageName: node linkType: hard +"ip-address@npm:^10.0.1": + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 10/a6979629d1ad9c1fb424bc25182203fad739b40225aebc55ec6243bbff5035faf7b9ed6efab3a097de6e713acbbfde944baacfa73e11852bb43989c45a68d79e + languageName: node + linkType: hard + "is-alphabetical@npm:^2.0.0": version: 2.0.1 - resolution: "is-alphabetical@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-alphabetical%2F-%2Fis-alphabetical-2.0.1.tgz" + resolution: "is-alphabetical@npm:2.0.1" checksum: 10/56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa languageName: node linkType: hard "is-alphanumerical@npm:^2.0.0": version: 2.0.1 - resolution: "is-alphanumerical@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-alphanumerical%2F-%2Fis-alphanumerical-2.0.1.tgz" + resolution: "is-alphanumerical@npm:2.0.1" dependencies: is-alphabetical: "npm:^2.0.0" is-decimal: "npm:^2.0.0" @@ -3437,7 +3223,7 @@ __metadata: "is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": version: 3.0.5 - resolution: "is-array-buffer@npm:3.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-array-buffer%2F-%2Fis-array-buffer-3.0.5.tgz" + resolution: "is-array-buffer@npm:3.0.5" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -3448,7 +3234,7 @@ __metadata: "is-async-function@npm:^2.0.0": version: 2.1.1 - resolution: "is-async-function@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-async-function%2F-%2Fis-async-function-2.1.1.tgz" + resolution: "is-async-function@npm:2.1.1" dependencies: async-function: "npm:^1.0.0" call-bound: "npm:^1.0.3" @@ -3461,7 +3247,7 @@ __metadata: "is-bigint@npm:^1.1.0": version: 1.1.0 - resolution: "is-bigint@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-bigint%2F-%2Fis-bigint-1.1.0.tgz" + resolution: "is-bigint@npm:1.1.0" dependencies: has-bigints: "npm:^1.0.2" checksum: 10/10cf327310d712fe227cfaa32d8b11814c214392b6ac18c827f157e1e85363cf9c8e2a22df526689bd5d25e53b58cc110894787afb54e138e7c504174dba15fd @@ -3470,7 +3256,7 @@ __metadata: "is-boolean-object@npm:^1.2.1": version: 1.2.2 - resolution: "is-boolean-object@npm:1.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-boolean-object%2F-%2Fis-boolean-object-1.2.2.tgz" + resolution: "is-boolean-object@npm:1.2.2" dependencies: call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" @@ -3480,14 +3266,14 @@ __metadata: "is-callable@npm:^1.2.7": version: 1.2.7 - resolution: "is-callable@npm:1.2.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-callable%2F-%2Fis-callable-1.2.7.tgz" + resolution: "is-callable@npm:1.2.7" checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 languageName: node linkType: hard "is-core-module@npm:^2.16.1": version: 2.16.1 - resolution: "is-core-module@npm:2.16.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-core-module%2F-%2Fis-core-module-2.16.1.tgz" + resolution: "is-core-module@npm:2.16.1" dependencies: hasown: "npm:^2.0.2" checksum: 10/452b2c2fb7f889cbbf7e54609ef92cf6c24637c568acc7e63d166812a0fb365ae8a504c333a29add8bdb1686704068caa7f4e4b639b650dde4f00a038b8941fb @@ -3496,7 +3282,7 @@ __metadata: "is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": version: 1.0.2 - resolution: "is-data-view@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-data-view%2F-%2Fis-data-view-1.0.2.tgz" + resolution: "is-data-view@npm:1.0.2" dependencies: call-bound: "npm:^1.0.2" get-intrinsic: "npm:^1.2.6" @@ -3507,7 +3293,7 @@ __metadata: "is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": version: 1.1.0 - resolution: "is-date-object@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-date-object%2F-%2Fis-date-object-1.1.0.tgz" + resolution: "is-date-object@npm:1.1.0" dependencies: call-bound: "npm:^1.0.2" has-tostringtag: "npm:^1.0.2" @@ -3517,21 +3303,21 @@ __metadata: "is-decimal@npm:^2.0.0": version: 2.0.1 - resolution: "is-decimal@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-decimal%2F-%2Fis-decimal-2.0.1.tgz" + resolution: "is-decimal@npm:2.0.1" checksum: 10/97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 - resolution: "is-extglob@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-extglob%2F-%2Fis-extglob-2.1.1.tgz" + resolution: "is-extglob@npm:2.1.1" checksum: 10/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 languageName: node linkType: hard "is-finalizationregistry@npm:^1.1.0": version: 1.1.1 - resolution: "is-finalizationregistry@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-finalizationregistry%2F-%2Fis-finalizationregistry-1.1.1.tgz" + resolution: "is-finalizationregistry@npm:1.1.1" dependencies: call-bound: "npm:^1.0.3" checksum: 10/0bfb145e9a1ba852ddde423b0926d2169ae5fe9e37882cde9e8f69031281a986308df4d982283e152396e88b86562ed2256cbaa5e6390fb840a4c25ab54b8a80 @@ -3540,7 +3326,7 @@ __metadata: "is-generator-function@npm:^1.0.10": version: 1.1.2 - resolution: "is-generator-function@npm:1.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-generator-function%2F-%2Fis-generator-function-1.1.2.tgz" + resolution: "is-generator-function@npm:1.1.2" dependencies: call-bound: "npm:^1.0.4" generator-function: "npm:^2.0.0" @@ -3551,9 +3337,9 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": version: 4.0.3 - resolution: "is-glob@npm:4.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-glob%2F-%2Fis-glob-4.0.3.tgz" + resolution: "is-glob@npm:4.0.3" dependencies: is-extglob: "npm:^2.1.1" checksum: 10/3ed74f2b0cdf4f401f38edb0442ddfde3092d79d7d35c9919c86641efdbcbb32e45aa3c0f70ce5eecc946896cd5a0f26e4188b9f2b881876f7cb6c505b82da11 @@ -3562,28 +3348,28 @@ __metadata: "is-hexadecimal@npm:^2.0.0": version: 2.0.1 - resolution: "is-hexadecimal@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-hexadecimal%2F-%2Fis-hexadecimal-2.0.1.tgz" + resolution: "is-hexadecimal@npm:2.0.1" checksum: 10/66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 languageName: node linkType: hard "is-map@npm:^2.0.3": version: 2.0.3 - resolution: "is-map@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-map%2F-%2Fis-map-2.0.3.tgz" + resolution: "is-map@npm:2.0.3" checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb languageName: node linkType: hard "is-negative-zero@npm:^2.0.3": version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-negative-zero%2F-%2Fis-negative-zero-2.0.3.tgz" + resolution: "is-negative-zero@npm:2.0.3" checksum: 10/8fe5cffd8d4fb2ec7b49d657e1691889778d037494c6f40f4d1a524cadd658b4b53ad7b6b73a59bcb4b143ae9a3d15829af864b2c0f9d65ac1e678c4c80f17e5 languageName: node linkType: hard "is-number-object@npm:^1.1.1": version: 1.1.1 - resolution: "is-number-object@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-number-object%2F-%2Fis-number-object-1.1.1.tgz" + resolution: "is-number-object@npm:1.1.1" dependencies: call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" @@ -3591,30 +3377,23 @@ __metadata: languageName: node linkType: hard -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-number%2F-%2Fis-number-7.0.0.tgz" - checksum: 10/6a6c3383f68afa1e05b286af866017c78f1226d43ac8cb064e115ff9ed85eb33f5c4f7216c96a71e4dfea289ef52c5da3aef5bbfade8ffe47a0465d70c0c8e86 - languageName: node - linkType: hard - "is-plain-obj@npm:^4.0.0": version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-plain-obj%2F-%2Fis-plain-obj-4.1.0.tgz" + resolution: "is-plain-obj@npm:4.1.0" checksum: 10/6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce languageName: node linkType: hard "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-potential-custom-element-name%2F-%2Fis-potential-custom-element-name-1.0.1.tgz" + resolution: "is-potential-custom-element-name@npm:1.0.1" checksum: 10/ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab languageName: node linkType: hard "is-regex@npm:^1.2.1": version: 1.2.1 - resolution: "is-regex@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-regex%2F-%2Fis-regex-1.2.1.tgz" + resolution: "is-regex@npm:1.2.1" dependencies: call-bound: "npm:^1.0.2" gopd: "npm:^1.2.0" @@ -3626,14 +3405,14 @@ __metadata: "is-set@npm:^2.0.3": version: 2.0.3 - resolution: "is-set@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-set%2F-%2Fis-set-2.0.3.tgz" + resolution: "is-set@npm:2.0.3" checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669 languageName: node linkType: hard "is-shared-array-buffer@npm:^1.0.4": version: 1.0.4 - resolution: "is-shared-array-buffer@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-shared-array-buffer%2F-%2Fis-shared-array-buffer-1.0.4.tgz" + resolution: "is-shared-array-buffer@npm:1.0.4" dependencies: call-bound: "npm:^1.0.3" checksum: 10/0380d7c60cc692856871526ffcd38a8133818a2ee42d47bb8008248a0cd2121d8c8b5f66b6da3cac24bc5784553cacb6faaf678f66bc88c6615b42af2825230e @@ -3642,7 +3421,7 @@ __metadata: "is-string@npm:^1.1.1": version: 1.1.1 - resolution: "is-string@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-string%2F-%2Fis-string-1.1.1.tgz" + resolution: "is-string@npm:1.1.1" dependencies: call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" @@ -3652,7 +3431,7 @@ __metadata: "is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": version: 1.1.1 - resolution: "is-symbol@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-symbol%2F-%2Fis-symbol-1.1.1.tgz" + resolution: "is-symbol@npm:1.1.1" dependencies: call-bound: "npm:^1.0.2" has-symbols: "npm:^1.1.0" @@ -3663,7 +3442,7 @@ __metadata: "is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-typed-array%2F-%2Fis-typed-array-1.1.15.tgz" + resolution: "is-typed-array@npm:1.1.15" dependencies: which-typed-array: "npm:^1.1.16" checksum: 10/e8cf60b9ea85667097a6ad68c209c9722cfe8c8edf04d6218366469e51944c5cc25bae45ffb845c23f811d262e4314d3b0168748eb16711aa34d12724cdf0735 @@ -3672,14 +3451,14 @@ __metadata: "is-weakmap@npm:^2.0.2": version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-weakmap%2F-%2Fis-weakmap-2.0.2.tgz" + resolution: "is-weakmap@npm:2.0.2" checksum: 10/a7b7e23206c542dcf2fa0abc483142731788771527e90e7e24f658c0833a0d91948a4f7b30d78f7a65255a48512e41a0288b778ba7fc396137515c12e201fd11 languageName: node linkType: hard "is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": version: 1.1.1 - resolution: "is-weakref@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-weakref%2F-%2Fis-weakref-1.1.1.tgz" + resolution: "is-weakref@npm:1.1.1" dependencies: call-bound: "npm:^1.0.3" checksum: 10/543506fd8259038b371bb083aac25b16cb4fd8b12fc58053aa3d45ac28dfd001cd5c6dffbba7aeea4213c74732d46b6cb2cfb5b412eed11f2db524f3f97d09a0 @@ -3688,7 +3467,7 @@ __metadata: "is-weakset@npm:^2.0.3": version: 2.0.4 - resolution: "is-weakset@npm:2.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fis-weakset%2F-%2Fis-weakset-2.0.4.tgz" + resolution: "is-weakset@npm:2.0.4" dependencies: call-bound: "npm:^1.0.3" get-intrinsic: "npm:^1.2.6" @@ -3698,35 +3477,35 @@ __metadata: "isarray@npm:^2.0.5": version: 2.0.5 - resolution: "isarray@npm:2.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fisarray%2F-%2Fisarray-2.0.5.tgz" + resolution: "isarray@npm:2.0.5" checksum: 10/1d8bc7911e13bb9f105b1b3e0b396c787a9e63046af0b8fe0ab1414488ab06b2b099b87a2d8a9e31d21c9a6fad773c7fc8b257c4880f2d957274479d28ca3414 languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 - resolution: "isexe@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fisexe%2F-%2Fisexe-2.0.0.tgz" + resolution: "isexe@npm:2.0.0" checksum: 10/7c9f715c03aff08f35e98b1fadae1b9267b38f0615d501824f9743f3aab99ef10e303ce7db3f186763a0b70a19de5791ebfc854ff884d5a8c4d92211f642ec92 languageName: node linkType: hard "isexe@npm:^4.0.0": version: 4.0.0 - resolution: "isexe@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fisexe%2F-%2Fisexe-4.0.0.tgz" + resolution: "isexe@npm:4.0.0" checksum: 10/2ead327ef596042ef9c9ec5f236b316acfaedb87f4bb61b3c3d574fb2e9c8a04b67305e04733bde52c24d9622fdebd3270aadb632adfbf9cadef88fe30f479e5 languageName: node linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fistanbul-lib-coverage%2F-%2Fistanbul-lib-coverage-3.2.2.tgz" + resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 10/40bbdd1e937dfd8c830fa286d0f665e81b7a78bdabcd4565f6d5667c99828bda3db7fb7ac6b96a3e2e8a2461ddbc5452d9f8bc7d00cb00075fa6a3e99f5b6a81 languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fistanbul-lib-report%2F-%2Fistanbul-lib-report-3.0.1.tgz" + resolution: "istanbul-lib-report@npm:3.0.1" dependencies: istanbul-lib-coverage: "npm:^3.0.0" make-dir: "npm:^4.0.0" @@ -3737,7 +3516,7 @@ __metadata: "istanbul-reports@npm:^3.2.0": version: 3.2.0 - resolution: "istanbul-reports@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fistanbul-reports%2F-%2Fistanbul-reports-3.2.0.tgz" + resolution: "istanbul-reports@npm:3.2.0" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" @@ -3747,7 +3526,7 @@ __metadata: "iterator.prototype@npm:^1.1.5": version: 1.1.5 - resolution: "iterator.prototype@npm:1.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fiterator.prototype%2F-%2Fiterator.prototype-1.1.5.tgz" + resolution: "iterator.prototype@npm:1.1.5" dependencies: define-data-property: "npm:^1.1.4" es-object-atoms: "npm:^1.0.0" @@ -3761,21 +3540,21 @@ __metadata: "js-tokens@npm:^10.0.0": version: 10.0.0 - resolution: "js-tokens@npm:10.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjs-tokens%2F-%2Fjs-tokens-10.0.0.tgz" + resolution: "js-tokens@npm:10.0.0" checksum: 10/88f536ec89f076fc230d29df255b3c55531237669d746d1868fca716b1e3f5f2e4abf8e5b8701903216e3f00d2dc3918d078b35da87772d433ab6a513c3bf76d languageName: node linkType: hard "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 - resolution: "js-tokens@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjs-tokens%2F-%2Fjs-tokens-4.0.0.tgz" + resolution: "js-tokens@npm:4.0.0" checksum: 10/af37d0d913fb56aec6dc0074c163cc71cd23c0b8aad5c2350747b6721d37ba118af35abdd8b33c47ec2800de07dedb16a527ca9c530ee004093e04958bd0cbf2 languageName: node linkType: hard "js-yaml@npm:^4.1.1": version: 4.1.1 - resolution: "js-yaml@npm:4.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjs-yaml%2F-%2Fjs-yaml-4.1.1.tgz" + resolution: "js-yaml@npm:4.1.1" dependencies: argparse: "npm:^2.0.1" bin: @@ -3786,7 +3565,7 @@ __metadata: "jsdom@npm:^24.0.0": version: 24.1.3 - resolution: "jsdom@npm:24.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjsdom%2F-%2Fjsdom-24.1.3.tgz" + resolution: "jsdom@npm:24.1.3" dependencies: cssstyle: "npm:^4.0.1" data-urls: "npm:^5.0.0" @@ -3820,7 +3599,7 @@ __metadata: "jsesc@npm:^3.0.2": version: 3.1.0 - resolution: "jsesc@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjsesc%2F-%2Fjsesc-3.1.0.tgz" + resolution: "jsesc@npm:3.1.0" bin: jsesc: bin/jsesc checksum: 10/20bd37a142eca5d1794f354db8f1c9aeb54d85e1f5c247b371de05d23a9751ecd7bd3a9c4fc5298ea6fa09a100dafb4190fa5c98c6610b75952c3487f3ce7967 @@ -3829,28 +3608,28 @@ __metadata: "json-buffer@npm:3.0.1": version: 3.0.1 - resolution: "json-buffer@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson-buffer%2F-%2Fjson-buffer-3.0.1.tgz" + resolution: "json-buffer@npm:3.0.1" checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson-schema-traverse%2F-%2Fjson-schema-traverse-0.4.1.tgz" + resolution: "json-schema-traverse@npm:0.4.1" checksum: 10/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b languageName: node linkType: hard "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson-stable-stringify-without-jsonify%2F-%2Fjson-stable-stringify-without-jsonify-1.0.1.tgz" + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" checksum: 10/12786c2e2f22c27439e6db0532ba321f1d0617c27ad8cb1c352a0e9249a50182fd1ba8b52a18899291604b0c32eafa8afd09e51203f19109a0537f68db2b652d languageName: node linkType: hard "json5@npm:^2.2.3": version: 2.2.3 - resolution: "json5@npm:2.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjson5%2F-%2Fjson5-2.2.3.tgz" + resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js checksum: 10/1db67b853ff0de3534085d630691d3247de53a2ed1390ba0ddff681ea43e9b3e30ecbdb65c5e9aab49435e44059c23dbd6fee8ee619419ba37465bb0dd7135da @@ -3859,7 +3638,7 @@ __metadata: "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": version: 3.3.5 - resolution: "jsx-ast-utils@npm:3.3.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fjsx-ast-utils%2F-%2Fjsx-ast-utils-3.3.5.tgz" + resolution: "jsx-ast-utils@npm:3.3.5" dependencies: array-includes: "npm:^3.1.6" array.prototype.flat: "npm:^1.3.1" @@ -3871,7 +3650,7 @@ __metadata: "keyv@npm:^4.5.4": version: 4.5.4 - resolution: "keyv@npm:4.5.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fkeyv%2F-%2Fkeyv-4.5.4.tgz" + resolution: "keyv@npm:4.5.4" dependencies: json-buffer: "npm:3.0.1" checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 @@ -3880,21 +3659,21 @@ __metadata: "kuliso@npm:^0.4.13": version: 0.4.13 - resolution: "kuliso@npm:0.4.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fkuliso%2F-%2Fkuliso-0.4.13.tgz" + resolution: "kuliso@npm:0.4.13" checksum: 10/14682faf22ce6fec6f5197915e44563763be040aacfa13e279301f532d3b6d7862385048c8c141817b2fc9c40bedb75883785d7fa344eb4d1f59da91e6c5d90c languageName: node linkType: hard "language-subtag-registry@npm:^0.3.20": version: 0.3.23 - resolution: "language-subtag-registry@npm:0.3.23::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flanguage-subtag-registry%2F-%2Flanguage-subtag-registry-0.3.23.tgz" + resolution: "language-subtag-registry@npm:0.3.23" checksum: 10/fe13ed74ab9f862db8e5747b98cc9aa08d52a19f85b5cdb4975cd364c8539bd2da3380e4560d2dbbd728ec33dff8a4b4421fcb2e5b1b1bdaa21d16f91a54d0d4 languageName: node linkType: hard "language-tags@npm:^1.0.9": version: 1.0.9 - resolution: "language-tags@npm:1.0.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flanguage-tags%2F-%2Flanguage-tags-1.0.9.tgz" + resolution: "language-tags@npm:1.0.9" dependencies: language-subtag-registry: "npm:^0.3.20" checksum: 10/d3a7c14b694e67f519153d6df6cb200681648d38d623c3bfa9d6a66a5ec5493628acb88e9df5aceef3cf1902ab263a205e7d59ee4cf1d6bb67e707b83538bd6d @@ -3903,7 +3682,7 @@ __metadata: "levn@npm:^0.4.1": version: 0.4.1 - resolution: "levn@npm:0.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flevn%2F-%2Flevn-0.4.1.tgz" + resolution: "levn@npm:0.4.1" dependencies: prelude-ls: "npm:^1.2.1" type-check: "npm:~0.4.0" @@ -3911,129 +3690,9 @@ __metadata: languageName: node linkType: hard -"lightningcss-android-arm64@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-android-arm64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-android-arm64%2F-%2Flightningcss-android-arm64-1.32.0.tgz" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"lightningcss-darwin-arm64@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-darwin-arm64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-darwin-arm64%2F-%2Flightningcss-darwin-arm64-1.32.0.tgz" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"lightningcss-darwin-x64@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-darwin-x64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-darwin-x64%2F-%2Flightningcss-darwin-x64-1.32.0.tgz" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"lightningcss-freebsd-x64@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-freebsd-x64@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-freebsd-x64%2F-%2Flightningcss-freebsd-x64-1.32.0.tgz" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"lightningcss-linux-arm-gnueabihf@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-linux-arm-gnueabihf@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-arm-gnueabihf%2F-%2Flightningcss-linux-arm-gnueabihf-1.32.0.tgz" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"lightningcss-linux-arm64-gnu@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-linux-arm64-gnu@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-arm64-gnu%2F-%2Flightningcss-linux-arm64-gnu-1.32.0.tgz" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"lightningcss-linux-arm64-musl@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-linux-arm64-musl@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-arm64-musl%2F-%2Flightningcss-linux-arm64-musl-1.32.0.tgz" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"lightningcss-linux-x64-gnu@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-linux-x64-gnu@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-x64-gnu%2F-%2Flightningcss-linux-x64-gnu-1.32.0.tgz" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"lightningcss-linux-x64-musl@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-linux-x64-musl@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-linux-x64-musl%2F-%2Flightningcss-linux-x64-musl-1.32.0.tgz" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"lightningcss-win32-arm64-msvc@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-win32-arm64-msvc@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-win32-arm64-msvc%2F-%2Flightningcss-win32-arm64-msvc-1.32.0.tgz" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"lightningcss-win32-x64-msvc@npm:1.32.0": - version: 1.32.0 - resolution: "lightningcss-win32-x64-msvc@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss-win32-x64-msvc%2F-%2Flightningcss-win32-x64-msvc-1.32.0.tgz" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"lightningcss@npm:^1.32.0": - version: 1.32.0 - resolution: "lightningcss@npm:1.32.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flightningcss%2F-%2Flightningcss-1.32.0.tgz" - dependencies: - detect-libc: "npm:^2.0.3" - lightningcss-android-arm64: "npm:1.32.0" - lightningcss-darwin-arm64: "npm:1.32.0" - lightningcss-darwin-x64: "npm:1.32.0" - lightningcss-freebsd-x64: "npm:1.32.0" - lightningcss-linux-arm-gnueabihf: "npm:1.32.0" - lightningcss-linux-arm64-gnu: "npm:1.32.0" - lightningcss-linux-arm64-musl: "npm:1.32.0" - lightningcss-linux-x64-gnu: "npm:1.32.0" - lightningcss-linux-x64-musl: "npm:1.32.0" - lightningcss-win32-arm64-msvc: "npm:1.32.0" - lightningcss-win32-x64-msvc: "npm:1.32.0" - dependenciesMeta: - lightningcss-android-arm64: - optional: true - lightningcss-darwin-arm64: - optional: true - lightningcss-darwin-x64: - optional: true - lightningcss-freebsd-x64: - optional: true - lightningcss-linux-arm-gnueabihf: - optional: true - lightningcss-linux-arm64-gnu: - optional: true - lightningcss-linux-arm64-musl: - optional: true - lightningcss-linux-x64-gnu: - optional: true - lightningcss-linux-x64-musl: - optional: true - lightningcss-win32-arm64-msvc: - optional: true - lightningcss-win32-x64-msvc: - optional: true - checksum: 10/098e61007f0d0ec8b5c50884e33b543b551d1ff21bc7b062434b6638fd0b8596858f823b60dfc2a4aa756f3cb120ad79f2b7f4a55b1bda2c0269ab8cf476f114 - languageName: node - linkType: hard - "locate-path@npm:^6.0.0": version: 6.0.0 - resolution: "locate-path@npm:6.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flocate-path%2F-%2Flocate-path-6.0.0.tgz" + resolution: "locate-path@npm:6.0.0" dependencies: p-locate: "npm:^5.0.0" checksum: 10/72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a @@ -4042,21 +3701,21 @@ __metadata: "lodash.merge@npm:^4.6.2": version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flodash.merge%2F-%2Flodash.merge-4.6.2.tgz" + resolution: "lodash.merge@npm:4.6.2" checksum: 10/d0ea2dd0097e6201be083865d50c3fb54fbfbdb247d9cc5950e086c991f448b7ab0cdab0d57eacccb43473d3f2acd21e134db39f22dac2d6c9ba6bf26978e3d6 languageName: node linkType: hard "longest-streak@npm:^3.0.0": version: 3.1.0 - resolution: "longest-streak@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flongest-streak%2F-%2Flongest-streak-3.1.0.tgz" + resolution: "longest-streak@npm:3.1.0" checksum: 10/d7f952ed004cbdb5c8bcfc4f7f5c3d65449e6c5a9e9be4505a656e3df5a57ee125f284286b4bf8ecea0c21a7b3bf2b8f9001ad506c319b9815ad6a63a47d0fd0 languageName: node linkType: hard "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 - resolution: "loose-envify@npm:1.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Floose-envify%2F-%2Floose-envify-1.4.0.tgz" + resolution: "loose-envify@npm:1.4.0" dependencies: js-tokens: "npm:^3.0.0 || ^4.0.0" bin: @@ -4067,7 +3726,7 @@ __metadata: "lowlight@npm:^3.0.0": version: 3.3.0 - resolution: "lowlight@npm:3.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flowlight%2F-%2Flowlight-3.3.0.tgz" + resolution: "lowlight@npm:3.3.0" dependencies: "@types/hast": "npm:^3.0.0" devlop: "npm:^1.0.0" @@ -4078,21 +3737,21 @@ __metadata: "lru-cache@npm:^10.4.3": version: 10.4.3 - resolution: "lru-cache@npm:10.4.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flru-cache%2F-%2Flru-cache-10.4.3.tgz" + resolution: "lru-cache@npm:10.4.3" checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a languageName: node linkType: hard -"lru-cache@npm:^11.0.0": - version: 11.3.6 - resolution: "lru-cache@npm:11.3.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flru-cache%2F-%2Flru-cache-11.3.6.tgz" - checksum: 10/d69ab552776954c7d310a6b2843e7d6be3a1c36c0ce45fca373c225ce5a06b95fd4ed724305d9d15fa55aa24d3cd42f854aa061bc481241225b3accf32993eab +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.6 + resolution: "lru-cache@npm:11.2.6" + checksum: 10/91222bbd59f793a0a0ad57789388f06b34ac9bb1613433c1d1810457d09db5cd3ec8943227ce2e1f5d6a0a15d6f1a9f129cb2c49ae9b6b10e82d4965fddecbef languageName: node linkType: hard "lru-cache@npm:^5.1.1": version: 5.1.1 - resolution: "lru-cache@npm:5.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flru-cache%2F-%2Flru-cache-5.1.1.tgz" + resolution: "lru-cache@npm:5.1.1" dependencies: yallist: "npm:^3.0.2" checksum: 10/951d2673dcc64a7fb888bf3d13bc2fdf923faca97d89cdb405ba3dfff77e2b26e5798d405e78fcd7094c9e7b8b4dab2ddc5a4f8a11928af24a207b7c738ca3f8 @@ -4101,7 +3760,7 @@ __metadata: "lz-string@npm:^1.5.0": version: 1.5.0 - resolution: "lz-string@npm:1.5.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Flz-string%2F-%2Flz-string-1.5.0.tgz" + resolution: "lz-string@npm:1.5.0" bin: lz-string: bin/bin.js checksum: 10/e86f0280e99a8d8cd4eef24d8601ddae15ce54e43ac9990dfcb79e1e081c255ad24424a30d78d2ad8e51a8ce82a66a930047fed4b4aa38c6f0b392ff9300edfc @@ -4110,16 +3769,16 @@ __metadata: "magic-string@npm:^0.30.21": version: 0.30.21 - resolution: "magic-string@npm:0.30.21::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmagic-string%2F-%2Fmagic-string-0.30.21.tgz" + resolution: "magic-string@npm:0.30.21" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.5" checksum: 10/57d5691f41ed40d962d8bd300148114f53db67fadbff336207db10a99f2bdf4a1be9cac3a68ee85dba575912ee1d4402e4396408196ec2d3afd043b076156221 languageName: node linkType: hard -"magicast@npm:^0.5.2": +"magicast@npm:^0.5.1": version: 0.5.2 - resolution: "magicast@npm:0.5.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmagicast%2F-%2Fmagicast-0.5.2.tgz" + resolution: "magicast@npm:0.5.2" dependencies: "@babel/parser": "npm:^7.29.0" "@babel/types": "npm:^7.29.0" @@ -4130,30 +3789,49 @@ __metadata: "make-dir@npm:^4.0.0": version: 4.0.0 - resolution: "make-dir@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmake-dir%2F-%2Fmake-dir-4.0.0.tgz" + resolution: "make-dir@npm:4.0.0" dependencies: semver: "npm:^7.5.3" checksum: 10/bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a languageName: node linkType: hard +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" + dependencies: + "@npmcli/agent": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^13.0.0" + checksum: 10/78da4fc1df83cb596e2bae25aa0653b8a9c6cbdd6674a104894e03be3acfcd08c70b78f06ef6407fbd6b173f6a60672480d78641e693d05eb71c09c13ee35278 + languageName: node + linkType: hard + "markdown-table@npm:^3.0.0": version: 3.0.4 - resolution: "markdown-table@npm:3.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmarkdown-table%2F-%2Fmarkdown-table-3.0.4.tgz" + resolution: "markdown-table@npm:3.0.4" checksum: 10/bc699819e6a15607e5def0f21aa862aa061cf1f49877baa93b0185574f6ab143591afe0e18b94d9b15ea80c6a693894150dbccfacf4f6767160dc32ae393dfe0 languageName: node linkType: hard "math-intrinsics@npm:^1.1.0": version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmath-intrinsics%2F-%2Fmath-intrinsics-1.1.0.tgz" + resolution: "math-intrinsics@npm:1.1.0" checksum: 10/11df2eda46d092a6035479632e1ec865b8134bdfc4bd9e571a656f4191525404f13a283a515938c3a8de934dbfd9c09674d9da9fa831e6eb7e22b50b197d2edd languageName: node linkType: hard "mdast-util-find-and-replace@npm:^3.0.0": version: 3.0.2 - resolution: "mdast-util-find-and-replace@npm:3.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-find-and-replace%2F-%2Fmdast-util-find-and-replace-3.0.2.tgz" + resolution: "mdast-util-find-and-replace@npm:3.0.2" dependencies: "@types/mdast": "npm:^4.0.0" escape-string-regexp: "npm:^5.0.0" @@ -4165,7 +3843,7 @@ __metadata: "mdast-util-from-markdown@npm:^2.0.0": version: 2.0.3 - resolution: "mdast-util-from-markdown@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-from-markdown%2F-%2Fmdast-util-from-markdown-2.0.3.tgz" + resolution: "mdast-util-from-markdown@npm:2.0.3" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -4185,7 +3863,7 @@ __metadata: "mdast-util-gfm-autolink-literal@npm:^2.0.0": version: 2.0.1 - resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-autolink-literal%2F-%2Fmdast-util-gfm-autolink-literal-2.0.1.tgz" + resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1" dependencies: "@types/mdast": "npm:^4.0.0" ccount: "npm:^2.0.0" @@ -4198,7 +3876,7 @@ __metadata: "mdast-util-gfm-footnote@npm:^2.0.0": version: 2.1.0 - resolution: "mdast-util-gfm-footnote@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-footnote%2F-%2Fmdast-util-gfm-footnote-2.1.0.tgz" + resolution: "mdast-util-gfm-footnote@npm:2.1.0" dependencies: "@types/mdast": "npm:^4.0.0" devlop: "npm:^1.1.0" @@ -4211,7 +3889,7 @@ __metadata: "mdast-util-gfm-strikethrough@npm:^2.0.0": version: 2.0.0 - resolution: "mdast-util-gfm-strikethrough@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-strikethrough%2F-%2Fmdast-util-gfm-strikethrough-2.0.0.tgz" + resolution: "mdast-util-gfm-strikethrough@npm:2.0.0" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-from-markdown: "npm:^2.0.0" @@ -4222,7 +3900,7 @@ __metadata: "mdast-util-gfm-table@npm:^2.0.0": version: 2.0.0 - resolution: "mdast-util-gfm-table@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-table%2F-%2Fmdast-util-gfm-table-2.0.0.tgz" + resolution: "mdast-util-gfm-table@npm:2.0.0" dependencies: "@types/mdast": "npm:^4.0.0" devlop: "npm:^1.0.0" @@ -4235,7 +3913,7 @@ __metadata: "mdast-util-gfm-task-list-item@npm:^2.0.0": version: 2.0.0 - resolution: "mdast-util-gfm-task-list-item@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm-task-list-item%2F-%2Fmdast-util-gfm-task-list-item-2.0.0.tgz" + resolution: "mdast-util-gfm-task-list-item@npm:2.0.0" dependencies: "@types/mdast": "npm:^4.0.0" devlop: "npm:^1.0.0" @@ -4247,7 +3925,7 @@ __metadata: "mdast-util-gfm@npm:^3.0.0": version: 3.1.0 - resolution: "mdast-util-gfm@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-gfm%2F-%2Fmdast-util-gfm-3.1.0.tgz" + resolution: "mdast-util-gfm@npm:3.1.0" dependencies: mdast-util-from-markdown: "npm:^2.0.0" mdast-util-gfm-autolink-literal: "npm:^2.0.0" @@ -4262,7 +3940,7 @@ __metadata: "mdast-util-mdx-expression@npm:^2.0.0": version: 2.0.1 - resolution: "mdast-util-mdx-expression@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-mdx-expression%2F-%2Fmdast-util-mdx-expression-2.0.1.tgz" + resolution: "mdast-util-mdx-expression@npm:2.0.1" dependencies: "@types/estree-jsx": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -4276,7 +3954,7 @@ __metadata: "mdast-util-mdx-jsx@npm:^3.0.0": version: 3.2.0 - resolution: "mdast-util-mdx-jsx@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-mdx-jsx%2F-%2Fmdast-util-mdx-jsx-3.2.0.tgz" + resolution: "mdast-util-mdx-jsx@npm:3.2.0" dependencies: "@types/estree-jsx": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -4296,7 +3974,7 @@ __metadata: "mdast-util-mdxjs-esm@npm:^2.0.0": version: 2.0.1 - resolution: "mdast-util-mdxjs-esm@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-mdxjs-esm%2F-%2Fmdast-util-mdxjs-esm-2.0.1.tgz" + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" dependencies: "@types/estree-jsx": "npm:^1.0.0" "@types/hast": "npm:^3.0.0" @@ -4310,7 +3988,7 @@ __metadata: "mdast-util-phrasing@npm:^4.0.0": version: 4.1.0 - resolution: "mdast-util-phrasing@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-phrasing%2F-%2Fmdast-util-phrasing-4.1.0.tgz" + resolution: "mdast-util-phrasing@npm:4.1.0" dependencies: "@types/mdast": "npm:^4.0.0" unist-util-is: "npm:^6.0.0" @@ -4320,7 +3998,7 @@ __metadata: "mdast-util-to-hast@npm:^13.0.0": version: 13.2.1 - resolution: "mdast-util-to-hast@npm:13.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-to-hast%2F-%2Fmdast-util-to-hast-13.2.1.tgz" + resolution: "mdast-util-to-hast@npm:13.2.1" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" @@ -4337,7 +4015,7 @@ __metadata: "mdast-util-to-markdown@npm:^2.0.0": version: 2.1.2 - resolution: "mdast-util-to-markdown@npm:2.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-to-markdown%2F-%2Fmdast-util-to-markdown-2.1.2.tgz" + resolution: "mdast-util-to-markdown@npm:2.1.2" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -4354,23 +4032,16 @@ __metadata: "mdast-util-to-string@npm:^4.0.0": version: 4.0.0 - resolution: "mdast-util-to-string@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmdast-util-to-string%2F-%2Fmdast-util-to-string-4.0.0.tgz" + resolution: "mdast-util-to-string@npm:4.0.0" dependencies: "@types/mdast": "npm:^4.0.0" checksum: 10/f4a5dbb9ea03521d7d3e26a9ba5652a1d6fbd55706dddd2155427517085688830e0ecd3f12418cfd40892640886eb39a4034c3c967d85e01e2fa64cfb53cff05 languageName: node linkType: hard -"merge2@npm:^1.3.0": - version: 1.4.1 - resolution: "merge2@npm:1.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmerge2%2F-%2Fmerge2-1.4.1.tgz" - checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - "micromark-core-commonmark@npm:^2.0.0": version: 2.0.3 - resolution: "micromark-core-commonmark@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-core-commonmark%2F-%2Fmicromark-core-commonmark-2.0.3.tgz" + resolution: "micromark-core-commonmark@npm:2.0.3" dependencies: decode-named-character-reference: "npm:^1.0.0" devlop: "npm:^1.0.0" @@ -4394,7 +4065,7 @@ __metadata: "micromark-extension-gfm-autolink-literal@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-autolink-literal%2F-%2Fmicromark-extension-gfm-autolink-literal-2.1.0.tgz" + resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-sanitize-uri: "npm:^2.0.0" @@ -4406,7 +4077,7 @@ __metadata: "micromark-extension-gfm-footnote@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-footnote@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-footnote%2F-%2Fmicromark-extension-gfm-footnote-2.1.0.tgz" + resolution: "micromark-extension-gfm-footnote@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-core-commonmark: "npm:^2.0.0" @@ -4422,7 +4093,7 @@ __metadata: "micromark-extension-gfm-strikethrough@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-strikethrough%2F-%2Fmicromark-extension-gfm-strikethrough-2.1.0.tgz" + resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-util-chunked: "npm:^2.0.0" @@ -4436,7 +4107,7 @@ __metadata: "micromark-extension-gfm-table@npm:^2.0.0": version: 2.1.1 - resolution: "micromark-extension-gfm-table@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-table%2F-%2Fmicromark-extension-gfm-table-2.1.1.tgz" + resolution: "micromark-extension-gfm-table@npm:2.1.1" dependencies: devlop: "npm:^1.0.0" micromark-factory-space: "npm:^2.0.0" @@ -4449,7 +4120,7 @@ __metadata: "micromark-extension-gfm-tagfilter@npm:^2.0.0": version: 2.0.0 - resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-tagfilter%2F-%2Fmicromark-extension-gfm-tagfilter-2.0.0.tgz" + resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" dependencies: micromark-util-types: "npm:^2.0.0" checksum: 10/c5e3f8cdf22e184de3f55968e6b010876a100dff31f509b7d2975f2b981a7fdda6c2d9e452238b9fe54dc51f5d7b069e86de509d421d4efbdfc9194749b3f132 @@ -4458,7 +4129,7 @@ __metadata: "micromark-extension-gfm-task-list-item@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm-task-list-item%2F-%2Fmicromark-extension-gfm-task-list-item-2.1.0.tgz" + resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-factory-space: "npm:^2.0.0" @@ -4471,7 +4142,7 @@ __metadata: "micromark-extension-gfm@npm:^3.0.0": version: 3.0.0 - resolution: "micromark-extension-gfm@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-extension-gfm%2F-%2Fmicromark-extension-gfm-3.0.0.tgz" + resolution: "micromark-extension-gfm@npm:3.0.0" dependencies: micromark-extension-gfm-autolink-literal: "npm:^2.0.0" micromark-extension-gfm-footnote: "npm:^2.0.0" @@ -4487,7 +4158,7 @@ __metadata: "micromark-factory-destination@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-destination@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-destination%2F-%2Fmicromark-factory-destination-2.0.1.tgz" + resolution: "micromark-factory-destination@npm:2.0.1" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" @@ -4498,7 +4169,7 @@ __metadata: "micromark-factory-label@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-label@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-label%2F-%2Fmicromark-factory-label-2.0.1.tgz" + resolution: "micromark-factory-label@npm:2.0.1" dependencies: devlop: "npm:^1.0.0" micromark-util-character: "npm:^2.0.0" @@ -4510,7 +4181,7 @@ __metadata: "micromark-factory-space@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-space@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-space%2F-%2Fmicromark-factory-space-2.0.1.tgz" + resolution: "micromark-factory-space@npm:2.0.1" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" @@ -4520,7 +4191,7 @@ __metadata: "micromark-factory-title@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-title@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-title%2F-%2Fmicromark-factory-title-2.0.1.tgz" + resolution: "micromark-factory-title@npm:2.0.1" dependencies: micromark-factory-space: "npm:^2.0.0" micromark-util-character: "npm:^2.0.0" @@ -4532,7 +4203,7 @@ __metadata: "micromark-factory-whitespace@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-factory-whitespace@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-factory-whitespace%2F-%2Fmicromark-factory-whitespace-2.0.1.tgz" + resolution: "micromark-factory-whitespace@npm:2.0.1" dependencies: micromark-factory-space: "npm:^2.0.0" micromark-util-character: "npm:^2.0.0" @@ -4544,7 +4215,7 @@ __metadata: "micromark-util-character@npm:^2.0.0": version: 2.1.1 - resolution: "micromark-util-character@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-character%2F-%2Fmicromark-util-character-2.1.1.tgz" + resolution: "micromark-util-character@npm:2.1.1" dependencies: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" @@ -4554,7 +4225,7 @@ __metadata: "micromark-util-chunked@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-chunked@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-chunked%2F-%2Fmicromark-util-chunked-2.0.1.tgz" + resolution: "micromark-util-chunked@npm:2.0.1" dependencies: micromark-util-symbol: "npm:^2.0.0" checksum: 10/f8cb2a67bcefe4bd2846d838c97b777101f0043b9f1de4f69baf3e26bb1f9885948444e3c3aec66db7595cad8173bd4567a000eb933576c233d54631f6323fe4 @@ -4563,7 +4234,7 @@ __metadata: "micromark-util-classify-character@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-classify-character@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-classify-character%2F-%2Fmicromark-util-classify-character-2.0.1.tgz" + resolution: "micromark-util-classify-character@npm:2.0.1" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" @@ -4574,7 +4245,7 @@ __metadata: "micromark-util-combine-extensions@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-combine-extensions@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-combine-extensions%2F-%2Fmicromark-util-combine-extensions-2.0.1.tgz" + resolution: "micromark-util-combine-extensions@npm:2.0.1" dependencies: micromark-util-chunked: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" @@ -4584,7 +4255,7 @@ __metadata: "micromark-util-decode-numeric-character-reference@npm:^2.0.0": version: 2.0.2 - resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-decode-numeric-character-reference%2F-%2Fmicromark-util-decode-numeric-character-reference-2.0.2.tgz" + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2" dependencies: micromark-util-symbol: "npm:^2.0.0" checksum: 10/ee11c8bde51e250e302050474c4a2adca094bca05c69f6cdd241af12df285c48c88d19ee6e022b9728281c280be16328904adca994605680c43af56019f4b0b6 @@ -4593,7 +4264,7 @@ __metadata: "micromark-util-decode-string@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-decode-string@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-decode-string%2F-%2Fmicromark-util-decode-string-2.0.1.tgz" + resolution: "micromark-util-decode-string@npm:2.0.1" dependencies: decode-named-character-reference: "npm:^1.0.0" micromark-util-character: "npm:^2.0.0" @@ -4605,21 +4276,21 @@ __metadata: "micromark-util-encode@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-encode@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-encode%2F-%2Fmicromark-util-encode-2.0.1.tgz" + resolution: "micromark-util-encode@npm:2.0.1" checksum: 10/be890b98e78dd0cdd953a313f4148c4692cc2fb05533e56fef5f421287d3c08feee38ca679f318e740530791fc251bfe8c80efa926fcceb4419b269c9343d226 languageName: node linkType: hard "micromark-util-html-tag-name@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-html-tag-name@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-html-tag-name%2F-%2Fmicromark-util-html-tag-name-2.0.1.tgz" + resolution: "micromark-util-html-tag-name@npm:2.0.1" checksum: 10/dea365f5ad28ad74ff29fcb581f7b74fc1f80271c5141b3b2bc91c454cbb6dfca753f28ae03730d657874fcbd89d0494d0e3965dfdca06d9855f467c576afa9d languageName: node linkType: hard "micromark-util-normalize-identifier@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-normalize-identifier@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-normalize-identifier%2F-%2Fmicromark-util-normalize-identifier-2.0.1.tgz" + resolution: "micromark-util-normalize-identifier@npm:2.0.1" dependencies: micromark-util-symbol: "npm:^2.0.0" checksum: 10/1eb9a289d7da067323df9fdc78bfa90ca3207ad8fd893ca02f3133e973adcb3743b233393d23d95c84ccaf5d220ae7f5a28402a644f135dcd4b8cfa60a7b5f84 @@ -4628,7 +4299,7 @@ __metadata: "micromark-util-resolve-all@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-resolve-all@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-resolve-all%2F-%2Fmicromark-util-resolve-all-2.0.1.tgz" + resolution: "micromark-util-resolve-all@npm:2.0.1" dependencies: micromark-util-types: "npm:^2.0.0" checksum: 10/9275f3ddb6c26f254dd2158e66215d050454b279707a7d9ce5a3cd0eba23201021cedcb78ae1a746c1b23227dcc418ee40dd074ade195359506797a5493550cc @@ -4637,7 +4308,7 @@ __metadata: "micromark-util-sanitize-uri@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-sanitize-uri@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-sanitize-uri%2F-%2Fmicromark-util-sanitize-uri-2.0.1.tgz" + resolution: "micromark-util-sanitize-uri@npm:2.0.1" dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-encode: "npm:^2.0.0" @@ -4648,7 +4319,7 @@ __metadata: "micromark-util-subtokenize@npm:^2.0.0": version: 2.1.0 - resolution: "micromark-util-subtokenize@npm:2.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-subtokenize%2F-%2Fmicromark-util-subtokenize-2.1.0.tgz" + resolution: "micromark-util-subtokenize@npm:2.1.0" dependencies: devlop: "npm:^1.0.0" micromark-util-chunked: "npm:^2.0.0" @@ -4660,21 +4331,21 @@ __metadata: "micromark-util-symbol@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-util-symbol@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-symbol%2F-%2Fmicromark-util-symbol-2.0.1.tgz" + resolution: "micromark-util-symbol@npm:2.0.1" checksum: 10/497e6d95fc21c2bb5265b78a6a60db518c376dc438739b2e7d4aee6f9f165222711724b456c63163314f32b8eea68a064687711d41e986262926eab23ddb9229 languageName: node linkType: hard "micromark-util-types@npm:^2.0.0": version: 2.0.2 - resolution: "micromark-util-types@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark-util-types%2F-%2Fmicromark-util-types-2.0.2.tgz" + resolution: "micromark-util-types@npm:2.0.2" checksum: 10/a9eb067bd9384eab61942285d53738aa22f3fef4819eaf20249bec6ec13f1e4da2800230fd0ceb7e705108987aa9062fe3e9a8e5e48aa60180db80b9489dc3e2 languageName: node linkType: hard "micromark@npm:^4.0.0": version: 4.0.2 - resolution: "micromark@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromark%2F-%2Fmicromark-4.0.2.tgz" + resolution: "micromark@npm:4.0.2" dependencies: "@types/debug": "npm:^4.0.0" debug: "npm:^4.0.0" @@ -4697,26 +4368,16 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.8": - version: 4.0.8 - resolution: "micromatch@npm:4.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmicromatch%2F-%2Fmicromatch-4.0.8.tgz" - dependencies: - braces: "npm:^3.0.3" - picomatch: "npm:^2.3.1" - checksum: 10/6bf2a01672e7965eb9941d1f02044fad2bd12486b5553dc1116ff24c09a8723157601dc992e74c911d896175918448762df3b3fd0a6b61037dd1a9766ddfbf58 - languageName: node - linkType: hard - "mime-db@npm:1.52.0": version: 1.52.0 - resolution: "mime-db@npm:1.52.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmime-db%2F-%2Fmime-db-1.52.0.tgz" + resolution: "mime-db@npm:1.52.0" checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 languageName: node linkType: hard "mime-types@npm:^2.1.12": version: 2.1.35 - resolution: "mime-types@npm:2.1.35::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fmime-types%2F-%2Fmime-types-2.1.35.tgz" + resolution: "mime-types@npm:2.1.35" dependencies: mime-db: "npm:1.52.0" checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a @@ -4724,20 +4385,20 @@ __metadata: linkType: hard "minimatch@npm:^10.2.2": - version: 10.2.5 - resolution: "minimatch@npm:10.2.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminimatch%2F-%2Fminimatch-10.2.5.tgz" + version: 10.2.2 + resolution: "minimatch@npm:10.2.2" dependencies: - brace-expansion: "npm:^5.0.5" - checksum: 10/19e87a931aff60ee7b9d80f39f817b8bfc54f61f8356ee3549fbf636dbccacacfec8d803eac73293955c4527cd085247dfc064bce4a5e349f8f3b85e2bf5da0f + brace-expansion: "npm:^5.0.2" + checksum: 10/e135be7b502ac97c02bcee42ccc1c55dc26dbac036c0f4acde69e42fe339d7fb53fae711e57b3546cb533426382ea492c73a073c7f78832e0453d120d48dd015 languageName: node linkType: hard -"minimatch@npm:^3.1.2, minimatch@npm:^3.1.5": - version: 3.1.5 - resolution: "minimatch@npm:3.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminimatch%2F-%2Fminimatch-3.1.5.tgz" +"minimatch@npm:^3.1.2": + version: 3.1.3 + resolution: "minimatch@npm:3.1.3" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 10/b11a7ee5773cd34c1a0c8436cdbe910901018fb4b6cb47aa508a18d567f6efd2148507959e35fba798389b161b8604a2d704ccef751ea36bd4582f9852b7d63f + checksum: 10/d430c40785fdb42c9fc1a36b9c9e3b08146044bd0f2fd043b05afb436aa4eaf6cdcb7756939ab8fc01664cd75d6335fd5043b2fe2aa084756927ffc77c1e3597 languageName: node linkType: hard @@ -4750,16 +4411,76 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10/b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 + languageName: node + linkType: hard + +"minipass-fetch@npm:^5.0.0": + version: 5.0.1 + resolution: "minipass-fetch@npm:5.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^2.0.0" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10/08bf0c9866e7f344bf1863ce0d99c0a6fe96b43ef5a4119e23d84a21e613a3f55ecf302adf28d9e228b4ebd50e81d5e84c397e0535089090427319379f478d94 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10/56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10/b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^2.0.0": + version: 2.0.0 + resolution: "minipass-sized@npm:2.0.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10/3b89adf64ca705662f77481e278eff5ec0a57aeffb5feba7cc8843722b1e7770efc880f2a17d1d4877b2d7bf227873cd46afb4da44c0fd18088b601ea50f96bb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10/a5c6ef069f70d9a524d3428af39f2b117ff8cd84172e19b754e7264a33df460873e6eb3d6e55758531580970de50ae950c496256bb4ad3691a2974cddff189f0 + languageName: node + linkType: hard + +"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": version: 7.1.3 - resolution: "minipass@npm:7.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminipass%2F-%2Fminipass-7.1.3.tgz" + resolution: "minipass@npm:7.1.3" checksum: 10/175e4d5e20980c3cd316ae82d2c031c42f6c746467d8b1905b51060a0ba4461441a0c25bb67c025fd9617f9a3873e152c7b543c6b5ac83a1846be8ade80dffd6 languageName: node linkType: hard -"minizlib@npm:^3.1.0": +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": version: 3.1.0 - resolution: "minizlib@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fminizlib%2F-%2Fminizlib-3.1.0.tgz" + resolution: "minizlib@npm:3.1.0" dependencies: minipass: "npm:^7.1.2" checksum: 10/f47365cc2cb7f078cbe7e046eb52655e2e7e97f8c0a9a674f4da60d94fb0624edfcec9b5db32e8ba5a99a5f036f595680ae6fe02a262beaa73026e505cc52f99 @@ -4768,30 +4489,37 @@ __metadata: "ms@npm:^2.1.3": version: 2.1.3 - resolution: "ms@npm:2.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fms%2F-%2Fms-2.1.3.tgz" + resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard "nanoid@npm:^3.3.11": - version: 3.3.12 - resolution: "nanoid@npm:3.3.12::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnanoid%2F-%2Fnanoid-3.3.12.tgz" + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" bin: nanoid: bin/nanoid.cjs - checksum: 10/6eec280694e2088d18fb802b1e3bfc4578e27b665b7ecfbe36c7356612fea2f814277056e671e2a1529dff551588a652efdc0bfa39f8a3185bc2247be311872e + checksum: 10/73b5afe5975a307aaa3c95dfe3334c52cdf9ae71518176895229b8d65ab0d1c0417dd081426134eb7571c055720428ea5d57c645138161e7d10df80815527c48 languageName: node linkType: hard "natural-compare@npm:^1.4.0": version: 1.4.0 - resolution: "natural-compare@npm:1.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnatural-compare%2F-%2Fnatural-compare-1.4.0.tgz" + resolution: "natural-compare@npm:1.4.0" checksum: 10/23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d languageName: node linkType: hard +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10/b5734e87295324fabf868e36fb97c84b7d7f3156ec5f4ee5bf6e488079c11054f818290fc33804cef7b1ee21f55eeb14caea83e7dafae6492a409b3e573153e5 + languageName: node + linkType: hard + "node-exports-info@npm:^1.6.0": version: 1.6.0 - resolution: "node-exports-info@npm:1.6.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnode-exports-info%2F-%2Fnode-exports-info-1.6.0.tgz" + resolution: "node-exports-info@npm:1.6.0" dependencies: array.prototype.flatmap: "npm:^1.3.3" es-errors: "npm:^1.3.0" @@ -4802,35 +4530,35 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 12.3.0 - resolution: "node-gyp@npm:12.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnode-gyp%2F-%2Fnode-gyp-12.3.0.tgz" + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^15.0.0" nopt: "npm:^9.0.0" proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" tar: "npm:^7.5.4" tinyglobby: "npm:^0.2.12" - undici: "npm:^6.25.0" which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/cd97bf17f0f3e6288c42cc23a6db8528a98e7530abdb72ab558272906d603362e4558069f99f8a5250bc78f65ff305b1438caca4f1b31c81904a8798c242603e + checksum: 10/4ebab5b77585a637315e969c2274b5520562473fe75de850639a580c2599652fb9f33959ec782ea45a2e149d8f04b548030f472eeeb3dbdf19a7f2ccbc30b908 languageName: node linkType: hard -"node-releases@npm:^2.0.36": - version: 2.0.38 - resolution: "node-releases@npm:2.0.38::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnode-releases%2F-%2Fnode-releases-2.0.38.tgz" - checksum: 10/0e6bba9d7e75dddf7d45c099f202ac7cb0eaeb363c36a34880c219e1697cf7369b6548e48f538490b706501ff9aa017e102adf3362184b9b64786de8377e0501 +"node-releases@npm:^2.0.27": + version: 2.0.27 + resolution: "node-releases@npm:2.0.27" + checksum: 10/f6c78ddb392ae500719644afcbe68a9ea533242c02312eb6a34e8478506eb7482a3fb709c70235b01c32fe65625b68dfa9665113f816d87f163bc3819b62b106 languageName: node linkType: hard "nopt@npm:^9.0.0": version: 9.0.0 - resolution: "nopt@npm:9.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnopt%2F-%2Fnopt-9.0.0.tgz" + resolution: "nopt@npm:9.0.0" dependencies: abbrev: "npm:^4.0.0" bin: @@ -4841,35 +4569,35 @@ __metadata: "nwsapi@npm:^2.2.12": version: 2.2.23 - resolution: "nwsapi@npm:2.2.23::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fnwsapi%2F-%2Fnwsapi-2.2.23.tgz" + resolution: "nwsapi@npm:2.2.23" checksum: 10/aa4a570039c33d70b51436d1bb533f3e2c33c488ccbe9b09285c46a6cee5ef266fd60103461085c6954ba52460786a8138f042958328c7c1b4763898eb3dadfa languageName: node linkType: hard "object-assign@npm:^4.1.1": version: 4.1.1 - resolution: "object-assign@npm:4.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject-assign%2F-%2Fobject-assign-4.1.1.tgz" + resolution: "object-assign@npm:4.1.1" checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard "object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": version: 1.13.4 - resolution: "object-inspect@npm:1.13.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject-inspect%2F-%2Fobject-inspect-1.13.4.tgz" + resolution: "object-inspect@npm:1.13.4" checksum: 10/aa13b1190ad3e366f6c83ad8a16ed37a19ed57d267385aa4bfdccda833d7b90465c057ff6c55d035a6b2e52c1a2295582b294217a0a3a1ae7abdd6877ef781fb languageName: node linkType: hard "object-keys@npm:^1.1.1": version: 1.1.1 - resolution: "object-keys@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject-keys%2F-%2Fobject-keys-1.1.1.tgz" + resolution: "object-keys@npm:1.1.1" checksum: 10/3d81d02674115973df0b7117628ea4110d56042e5326413e4b4313f0bcdf7dd78d4a3acef2c831463fa3796a66762c49daef306f4a0ea1af44877d7086d73bde languageName: node linkType: hard "object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": version: 4.1.7 - resolution: "object.assign@npm:4.1.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.assign%2F-%2Fobject.assign-4.1.7.tgz" + resolution: "object.assign@npm:4.1.7" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -4883,7 +4611,7 @@ __metadata: "object.entries@npm:^1.1.9": version: 1.1.9 - resolution: "object.entries@npm:1.1.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.entries%2F-%2Fobject.entries-1.1.9.tgz" + resolution: "object.entries@npm:1.1.9" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.4" @@ -4895,7 +4623,7 @@ __metadata: "object.fromentries@npm:^2.0.8": version: 2.0.8 - resolution: "object.fromentries@npm:2.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.fromentries%2F-%2Fobject.fromentries-2.0.8.tgz" + resolution: "object.fromentries@npm:2.0.8" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -4907,7 +4635,7 @@ __metadata: "object.values@npm:^1.1.6, object.values@npm:^1.2.1": version: 1.2.1 - resolution: "object.values@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobject.values%2F-%2Fobject.values-1.2.1.tgz" + resolution: "object.values@npm:1.2.1" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -4919,14 +4647,14 @@ __metadata: "obug@npm:^2.1.1": version: 2.1.1 - resolution: "obug@npm:2.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fobug%2F-%2Fobug-2.1.1.tgz" + resolution: "obug@npm:2.1.1" checksum: 10/bdcf9213361786688019345f3452b95a1dc73710e4b403c82a1994b98bad6abc31b26cb72a482128c5fd53ea9daf6fbb7d0e0e7b2b7e9c8be6d779deeccee07f languageName: node linkType: hard "optionator@npm:^0.9.3": version: 0.9.4 - resolution: "optionator@npm:0.9.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Foptionator%2F-%2Foptionator-0.9.4.tgz" + resolution: "optionator@npm:0.9.4" dependencies: deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" @@ -4940,7 +4668,7 @@ __metadata: "own-keys@npm:^1.0.1": version: 1.0.1 - resolution: "own-keys@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fown-keys%2F-%2Fown-keys-1.0.1.tgz" + resolution: "own-keys@npm:1.0.1" dependencies: get-intrinsic: "npm:^1.2.6" object-keys: "npm:^1.1.1" @@ -4951,7 +4679,7 @@ __metadata: "p-limit@npm:^3.0.2": version: 3.1.0 - resolution: "p-limit@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fp-limit%2F-%2Fp-limit-3.1.0.tgz" + resolution: "p-limit@npm:3.1.0" dependencies: yocto-queue: "npm:^0.1.0" checksum: 10/7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 @@ -4960,23 +4688,30 @@ __metadata: "p-locate@npm:^5.0.0": version: 5.0.0 - resolution: "p-locate@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fp-locate%2F-%2Fp-locate-5.0.0.tgz" + resolution: "p-locate@npm:5.0.0" dependencies: p-limit: "npm:^3.0.2" checksum: 10/1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 10/ef48c3b2e488f31c693c9fcc0df0ef76518cf6426a495cf9486ebbb0fd7f31aef7f90e96f72e0070c0ff6e3177c9318f644b512e2c29e3feee8d7153fcb6782e + languageName: node + linkType: hard + "package-json-from-dist@npm:^1.0.1": version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpackage-json-from-dist%2F-%2Fpackage-json-from-dist-1.0.1.tgz" + resolution: "package-json-from-dist@npm:1.0.1" checksum: 10/58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 languageName: node linkType: hard "parent-module@npm:^1.0.0": version: 1.0.1 - resolution: "parent-module@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fparent-module%2F-%2Fparent-module-1.0.1.tgz" + resolution: "parent-module@npm:1.0.1" dependencies: callsites: "npm:^3.0.0" checksum: 10/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff @@ -4985,7 +4720,7 @@ __metadata: "parse-entities@npm:^4.0.0": version: 4.0.2 - resolution: "parse-entities@npm:4.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fparse-entities%2F-%2Fparse-entities-4.0.2.tgz" + resolution: "parse-entities@npm:4.0.2" dependencies: "@types/unist": "npm:^2.0.0" character-entities-legacy: "npm:^3.0.0" @@ -5000,44 +4735,37 @@ __metadata: "parse5@npm:^7.1.2": version: 7.3.0 - resolution: "parse5@npm:7.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fparse5%2F-%2Fparse5-7.3.0.tgz" + resolution: "parse5@npm:7.3.0" dependencies: entities: "npm:^6.0.0" checksum: 10/b0e48be20b820c655b138b86fa6fb3a790de6c891aa2aba536524f8027b4dca4fe538f11a0e5cf2f6f847d120dbb9e4822dcaeb933ff1e10850a2ef0154d1d88 languageName: node linkType: hard -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-browserify%2F-%2Fpath-browserify-1.0.1.tgz" - checksum: 10/7e7368a5207e7c6b9051ef045711d0dc3c2b6203e96057e408e6e74d09f383061010d2be95cb8593fe6258a767c3e9fc6b2bfc7ce8d48ae8c3d9f6994cca9ad8 - languageName: node - linkType: hard - "path-exists@npm:^4.0.0": version: 4.0.0 - resolution: "path-exists@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-exists%2F-%2Fpath-exists-4.0.0.tgz" + resolution: "path-exists@npm:4.0.0" checksum: 10/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 languageName: node linkType: hard "path-key@npm:^3.1.0": version: 3.1.1 - resolution: "path-key@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-key%2F-%2Fpath-key-3.1.1.tgz" + resolution: "path-key@npm:3.1.1" checksum: 10/55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 languageName: node linkType: hard "path-parse@npm:^1.0.7": version: 1.0.7 - resolution: "path-parse@npm:1.0.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-parse%2F-%2Fpath-parse-1.0.7.tgz" + resolution: "path-parse@npm:1.0.7" checksum: 10/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a languageName: node linkType: hard "path-scurry@npm:^2.0.2": version: 2.0.2 - resolution: "path-scurry@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpath-scurry%2F-%2Fpath-scurry-2.0.2.tgz" + resolution: "path-scurry@npm:2.0.2" dependencies: lru-cache: "npm:^11.0.0" minipass: "npm:^7.1.2" @@ -5047,77 +4775,70 @@ __metadata: "pathe@npm:^2.0.3": version: 2.0.3 - resolution: "pathe@npm:2.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpathe%2F-%2Fpathe-2.0.3.tgz" + resolution: "pathe@npm:2.0.3" checksum: 10/01e9a69928f39087d96e1751ce7d6d50da8c39abf9a12e0ac2389c42c83bc76f78c45a475bd9026a02e6a6f79be63acc75667df855862fe567d99a00a540d23d languageName: node linkType: hard "picocolors@npm:1.1.1, picocolors@npm:^1.1.1": version: 1.1.1 - resolution: "picocolors@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpicocolors%2F-%2Fpicocolors-1.1.1.tgz" + resolution: "picocolors@npm:1.1.1" checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard -"picomatch@npm:^2.3.1": - version: 2.3.2 - resolution: "picomatch@npm:2.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpicomatch%2F-%2Fpicomatch-2.3.2.tgz" - checksum: 10/b788ef8148a2415b9dec12f0bb350ae6a5830f8f1950e472abc2f5225494debf7d1b75eb031df0ceaea9e8ec3e7bad599e8dbf3c60d61b42be429ba41bff4426 - languageName: node - linkType: hard - -"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": - version: 4.0.4 - resolution: "picomatch@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpicomatch%2F-%2Fpicomatch-4.0.4.tgz" - checksum: 10/f6ef80a3590827ce20378ae110ac78209cc4f74d39236370f1780f957b7ee41c12acde0e4651b90f39983506fd2f5e449994716f516db2e9752924aff8de93ce +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10/57b99055f40b16798f2802916d9c17e9744e620a0db136554af01d19598b96e45e2f00014c91d1b8b13874b80caa8c295b3d589a3f72373ec4aaf54baa5962d5 languageName: node linkType: hard -"playwright-core@npm:1.59.1": - version: 1.59.1 - resolution: "playwright-core@npm:1.59.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fplaywright-core%2F-%2Fplaywright-core-1.59.1.tgz" +"playwright-core@npm:1.58.2": + version: 1.58.2 + resolution: "playwright-core@npm:1.58.2" bin: playwright-core: cli.js - checksum: 10/d27857a6701587c2a9bfa26fed9a5d8c617a392299b99b187f2ddc198d012a1e296449806bc907220debea938152677e8b4d91d304ed00645f762f778de3abec + checksum: 10/8a98fcf122167e8703d525db2252de0e3da4ab9110ab6ea9951247e52d846310eb25ea2c805e1b7ccb54b4010c44e5adc3a76aae6da02f34324ccc3e76683bb1 languageName: node linkType: hard -"playwright@npm:1.59.1": - version: 1.59.1 - resolution: "playwright@npm:1.59.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fplaywright%2F-%2Fplaywright-1.59.1.tgz" +"playwright@npm:1.58.2": + version: 1.58.2 + resolution: "playwright@npm:1.58.2" dependencies: fsevents: "npm:2.3.2" - playwright-core: "npm:1.59.1" + playwright-core: "npm:1.58.2" dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 10/17b2df42effa362adc6aa3192b625bd80f26b91a0c253a2375ac89ace68407b746dd87b4081629c50c58c3cb031c5b837a32fef43a3c98c60ea504e0b001e5fa + checksum: 10/d89d6c8a32388911b9aff9ee0f1a90076219f15c804f2b287db048b9e9cde182aea3131fac1959051d25189ed4218ec4272b137c83cd7f9cd24781cbc77edd86 languageName: node linkType: hard "possible-typed-array-names@npm:^1.0.0": version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpossible-typed-array-names%2F-%2Fpossible-typed-array-names-1.1.0.tgz" + resolution: "possible-typed-array-names@npm:1.1.0" checksum: 10/2f44137b8d3dd35f4a7ba7469eec1cd9cfbb46ec164b93a5bc1f4c3d68599c9910ee3b91da1d28b4560e9cc8414c3cd56fedc07259c67e52cc774476270d3302 languageName: node linkType: hard -"postcss@npm:^8.5.10, postcss@npm:^8.5.6": - version: 8.5.14 - resolution: "postcss@npm:8.5.14::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpostcss%2F-%2Fpostcss-8.5.14.tgz" +"postcss@npm:^8.5.6": + version: 8.5.6 + resolution: "postcss@npm:8.5.6" dependencies: nanoid: "npm:^3.3.11" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10/2e3f4dea69692918fe9df5402beb0e54df84499995a094f2fbf63d1a9e38bc1b7a42854df47f09e02593213e01a5eb0627b1d1bd6d1b0ea90767b2e072f7167c + checksum: 10/9e4fbe97574091e9736d0e82a591e29aa100a0bf60276a926308f8c57249698935f35c5d2f4e80de778d0cbb8dcffab4f383d85fd50c5649aca421c3df729b86 languageName: node linkType: hard "prelude-ls@npm:^1.2.1": version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fprelude-ls%2F-%2Fprelude-ls-1.2.1.tgz" + resolution: "prelude-ls@npm:1.2.1" checksum: 10/0b9d2c76801ca652a7f64892dd37b7e3fab149a37d2424920099bf894acccc62abb4424af2155ab36dea8744843060a2d8ddc983518d0b1e22265a22324b72ed languageName: node linkType: hard @@ -5133,7 +4854,7 @@ __metadata: "pretty-format@npm:^27.0.2": version: 27.5.1 - resolution: "pretty-format@npm:27.5.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpretty-format%2F-%2Fpretty-format-27.5.1.tgz" + resolution: "pretty-format@npm:27.5.1" dependencies: ansi-regex: "npm:^5.0.1" ansi-styles: "npm:^5.0.0" @@ -5144,14 +4865,24 @@ __metadata: "proc-log@npm:^6.0.0": version: 6.1.0 - resolution: "proc-log@npm:6.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fproc-log%2F-%2Fproc-log-6.1.0.tgz" + resolution: "proc-log@npm:6.1.0" checksum: 10/9033f30f168ed5a0991b773d0c50ff88384c4738e9a0a67d341de36bf7293771eed648ab6a0562f62276da12fde91f3bbfc75ffff6e71ad49aafd74fc646be66 languageName: node linkType: hard +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 + languageName: node + linkType: hard + "prop-types@npm:^15.8.1": version: 15.8.1 - resolution: "prop-types@npm:15.8.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fprop-types%2F-%2Fprop-types-15.8.1.tgz" + resolution: "prop-types@npm:15.8.1" dependencies: loose-envify: "npm:^1.4.0" object-assign: "npm:^4.1.1" @@ -5162,14 +4893,14 @@ __metadata: "property-information@npm:^7.0.0": version: 7.1.0 - resolution: "property-information@npm:7.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fproperty-information%2F-%2Fproperty-information-7.1.0.tgz" + resolution: "property-information@npm:7.1.0" checksum: 10/896d38a52ad7170de73f832d277c69e76a9605d941ebb3f0d6e56271414a7fdf95ff6d2819e68036b8a0c7d2d4d88bf1d4a5765c032cb19c2343567ee3a14b15 languageName: node linkType: hard "psl@npm:^1.1.33": version: 1.15.0 - resolution: "psl@npm:1.15.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpsl%2F-%2Fpsl-1.15.0.tgz" + resolution: "psl@npm:1.15.0" dependencies: punycode: "npm:^2.3.1" checksum: 10/5e7467eb5196eb7900d156783d12907d445c0122f76c73203ce96b148a6ccf8c5450cc805887ffada38ff92d634afcf33720c24053cb01d5b6598d1c913c5caf @@ -5178,28 +4909,21 @@ __metadata: "punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": version: 2.3.1 - resolution: "punycode@npm:2.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fpunycode%2F-%2Fpunycode-2.3.1.tgz" + resolution: "punycode@npm:2.3.1" checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 languageName: node linkType: hard "querystringify@npm:^2.1.1": version: 2.2.0 - resolution: "querystringify@npm:2.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fquerystringify%2F-%2Fquerystringify-2.2.0.tgz" + resolution: "querystringify@npm:2.2.0" checksum: 10/46ab16f252fd892fc29d6af60966d338cdfeea68a231e9457631ffd22d67cec1e00141e0a5236a2eb16c0d7d74175d9ec1d6f963660c6f2b1c2fc85b194c5680 languageName: node linkType: hard -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fqueue-microtask%2F-%2Fqueue-microtask-1.2.3.tgz" - checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b - languageName: node - linkType: hard - "react-dom@npm:^18.3.1": version: 18.3.1 - resolution: "react-dom@npm:18.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-dom%2F-%2Freact-dom-18.3.1.tgz" + resolution: "react-dom@npm:18.3.1" dependencies: loose-envify: "npm:^1.1.0" scheduler: "npm:^0.23.2" @@ -5211,21 +4935,21 @@ __metadata: "react-is@npm:^16.13.1": version: 16.13.1 - resolution: "react-is@npm:16.13.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-is%2F-%2Freact-is-16.13.1.tgz" + resolution: "react-is@npm:16.13.1" checksum: 10/5aa564a1cde7d391ac980bedee21202fc90bdea3b399952117f54fb71a932af1e5902020144fb354b4690b2414a0c7aafe798eb617b76a3d441d956db7726fdf languageName: node linkType: hard "react-is@npm:^17.0.1": version: 17.0.2 - resolution: "react-is@npm:17.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-is%2F-%2Freact-is-17.0.2.tgz" + resolution: "react-is@npm:17.0.2" checksum: 10/73b36281e58eeb27c9cc6031301b6ae19ecdc9f18ae2d518bdb39b0ac564e65c5779405d623f1df9abf378a13858b79442480244bd579968afc1faf9a2ce5e05 languageName: node linkType: hard "react-markdown@npm:^9.0.1": version: 9.1.0 - resolution: "react-markdown@npm:9.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-markdown%2F-%2Freact-markdown-9.1.0.tgz" + resolution: "react-markdown@npm:9.1.0" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" @@ -5247,26 +4971,26 @@ __metadata: "react-refresh@npm:^0.17.0": version: 0.17.0 - resolution: "react-refresh@npm:0.17.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-refresh%2F-%2Freact-refresh-0.17.0.tgz" + resolution: "react-refresh@npm:0.17.0" checksum: 10/5e94f07d43bb1cfdc9b0c6e0c8c73e754005489950dcff1edb53aa8451d1d69a47b740b195c7c80fb4eb511c56a3585dc55eddd83f0097fb5e015116a1460467 languageName: node linkType: hard "react-router-dom@npm:^7.1.1": - version: 7.14.2 - resolution: "react-router-dom@npm:7.14.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-router-dom%2F-%2Freact-router-dom-7.14.2.tgz" + version: 7.13.0 + resolution: "react-router-dom@npm:7.13.0" dependencies: - react-router: "npm:7.14.2" + react-router: "npm:7.13.0" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10/1819cf481a581941509d390800cd6e5fbf6feae27e6a82a96b1e2a14af35e8ffe9667870e73dab6d973462a2b5136e3c3f54a30ccd6925e011be01fceb56a8fb + checksum: 10/7d0f283302710b54a24254aecdfc680832e0f28256a1743f7190e5742ac6072be70c30f731ee9350dcc4ef832d645e701aeef501b9a075da53ce1668d050322c languageName: node linkType: hard -"react-router@npm:7.14.2": - version: 7.14.2 - resolution: "react-router@npm:7.14.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact-router%2F-%2Freact-router-7.14.2.tgz" +"react-router@npm:7.13.0": + version: 7.13.0 + resolution: "react-router@npm:7.13.0" dependencies: cookie: "npm:^1.0.1" set-cookie-parser: "npm:^2.6.0" @@ -5276,13 +5000,13 @@ __metadata: peerDependenciesMeta: react-dom: optional: true - checksum: 10/6a12db0f6c8fd9b08631da98ba5e8c63675f4830cb7dccf1d70f3da23acbbc39079f48479b7c2c94b4ecd138fb1e0d4d8efd60914c48b224bfd8f1fd87b3b8cd + checksum: 10/8bc0a1eebf37136851ee345e53b137b5a7ec0de10c842861a06810bb54c0a389826734a7454f4afe8731daf39499948ba73657e60a6bd2acb93b3e567fd79127 languageName: node linkType: hard "react@npm:^18.3.1": version: 18.3.1 - resolution: "react@npm:18.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freact%2F-%2Freact-18.3.1.tgz" + resolution: "react@npm:18.3.1" dependencies: loose-envify: "npm:^1.1.0" checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf @@ -5291,7 +5015,7 @@ __metadata: "reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": version: 1.0.10 - resolution: "reflect.getprototypeof@npm:1.0.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freflect.getprototypeof%2F-%2Freflect.getprototypeof-1.0.10.tgz" + resolution: "reflect.getprototypeof@npm:1.0.10" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -5307,7 +5031,7 @@ __metadata: "regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": version: 1.5.4 - resolution: "regexp.prototype.flags@npm:1.5.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fregexp.prototype.flags%2F-%2Fregexp.prototype.flags-1.5.4.tgz" + resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" @@ -5321,7 +5045,7 @@ __metadata: "rehype-highlight@npm:^7.0.1": version: 7.0.2 - resolution: "rehype-highlight@npm:7.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frehype-highlight%2F-%2Frehype-highlight-7.0.2.tgz" + resolution: "rehype-highlight@npm:7.0.2" dependencies: "@types/hast": "npm:^3.0.0" hast-util-to-text: "npm:^4.0.0" @@ -5334,7 +5058,7 @@ __metadata: "remark-gfm@npm:^4.0.0": version: 4.0.1 - resolution: "remark-gfm@npm:4.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-gfm%2F-%2Fremark-gfm-4.0.1.tgz" + resolution: "remark-gfm@npm:4.0.1" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-gfm: "npm:^3.0.0" @@ -5348,7 +5072,7 @@ __metadata: "remark-parse@npm:^11.0.0": version: 11.0.0 - resolution: "remark-parse@npm:11.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-parse%2F-%2Fremark-parse-11.0.0.tgz" + resolution: "remark-parse@npm:11.0.0" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-from-markdown: "npm:^2.0.0" @@ -5360,7 +5084,7 @@ __metadata: "remark-rehype@npm:^11.0.0": version: 11.1.2 - resolution: "remark-rehype@npm:11.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-rehype%2F-%2Fremark-rehype-11.1.2.tgz" + resolution: "remark-rehype@npm:11.1.2" dependencies: "@types/hast": "npm:^3.0.0" "@types/mdast": "npm:^4.0.0" @@ -5373,7 +5097,7 @@ __metadata: "remark-stringify@npm:^11.0.0": version: 11.0.0 - resolution: "remark-stringify@npm:11.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fremark-stringify%2F-%2Fremark-stringify-11.0.0.tgz" + resolution: "remark-stringify@npm:11.0.0" dependencies: "@types/mdast": "npm:^4.0.0" mdast-util-to-markdown: "npm:^2.0.0" @@ -5384,21 +5108,21 @@ __metadata: "requires-port@npm:^1.0.0": version: 1.0.0 - resolution: "requires-port@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frequires-port%2F-%2Frequires-port-1.0.0.tgz" + resolution: "requires-port@npm:1.0.0" checksum: 10/878880ee78ccdce372784f62f52a272048e2d0827c29ae31e7f99da18b62a2b9463ea03a75f277352f4697c100183debb0532371ad515a2d49d4bfe596dd4c20 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 - resolution: "resolve-from@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fresolve-from%2F-%2Fresolve-from-4.0.0.tgz" + resolution: "resolve-from@npm:4.0.0" checksum: 10/91eb76ce83621eea7bbdd9b55121a5c1c4a39e54a9ce04a9ad4517f102f8b5131c2cf07622c738a6683991bf54f2ce178f5a42803ecbd527ddc5105f362cc9e3 languageName: node linkType: hard "resolve@npm:^2.0.0-next.5": version: 2.0.0-next.6 - resolution: "resolve@npm:2.0.0-next.6::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fresolve%2F-%2Fresolve-2.0.0-next.6.tgz" + resolution: "resolve@npm:2.0.0-next.6" dependencies: es-errors: "npm:^1.3.0" is-core-module: "npm:^2.16.1" @@ -5414,7 +5138,7 @@ __metadata: "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": version: 2.0.0-next.6 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Fresolve%252F-%252Fresolve-2.0.0-next.6.tgz#optional!builtin::version=2.0.0-next.6&hash=c3c19d" + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" dependencies: es-errors: "npm:^1.3.0" is-core-module: "npm:^2.16.1" @@ -5428,16 +5152,16 @@ __metadata: languageName: node linkType: hard -"reusify@npm:^1.0.4": - version: 1.1.0 - resolution: "reusify@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Freusify%2F-%2Freusify-1.1.0.tgz" - checksum: 10/af47851b547e8a8dc89af144fceee17b80d5beaf5e6f57ed086432d79943434ff67ca526e92275be6f54b6189f6920a24eace75c2657eed32d02c400312b21ec +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 languageName: node linkType: hard "rimraf@npm:^6.0.1": version: 6.1.3 - resolution: "rimraf@npm:6.1.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frimraf%2F-%2Frimraf-6.1.3.tgz" + resolution: "rimraf@npm:6.1.3" dependencies: glob: "npm:^13.0.3" package-json-from-dist: "npm:^1.0.1" @@ -5447,93 +5171,35 @@ __metadata: languageName: node linkType: hard -"rolldown@npm:1.0.0-rc.17": - version: 1.0.0-rc.17 - resolution: "rolldown@npm:1.0.0-rc.17::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frolldown%2F-%2Frolldown-1.0.0-rc.17.tgz" - dependencies: - "@oxc-project/types": "npm:=0.127.0" - "@rolldown/binding-android-arm64": "npm:1.0.0-rc.17" - "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.17" - "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.17" - "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.17" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.17" - "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.17" - "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.17" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.17" - "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.17" - "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.17" - "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.17" - "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.17" - "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.17" - "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.17" - "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.17" - "@rolldown/pluginutils": "npm:1.0.0-rc.17" - dependenciesMeta: - "@rolldown/binding-android-arm64": - optional: true - "@rolldown/binding-darwin-arm64": - optional: true - "@rolldown/binding-darwin-x64": - optional: true - "@rolldown/binding-freebsd-x64": - optional: true - "@rolldown/binding-linux-arm-gnueabihf": - optional: true - "@rolldown/binding-linux-arm64-gnu": - optional: true - "@rolldown/binding-linux-arm64-musl": - optional: true - "@rolldown/binding-linux-ppc64-gnu": - optional: true - "@rolldown/binding-linux-s390x-gnu": - optional: true - "@rolldown/binding-linux-x64-gnu": - optional: true - "@rolldown/binding-linux-x64-musl": - optional: true - "@rolldown/binding-openharmony-arm64": - optional: true - "@rolldown/binding-wasm32-wasi": - optional: true - "@rolldown/binding-win32-arm64-msvc": - optional: true - "@rolldown/binding-win32-x64-msvc": - optional: true - bin: - rolldown: bin/cli.mjs - checksum: 10/5e7415a7cb732c4f7168ab6dcc841ed9ec4ad614058294a53d94821a762c274a69b009e41e9c8e4983a059907f02d462030a36b42543c0f41ce702fcd68d10d5 - languageName: node - linkType: hard - "rollup@npm:^4.43.0": - version: 4.60.3 - resolution: "rollup@npm:4.60.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frollup%2F-%2Frollup-4.60.3.tgz" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.60.3" - "@rollup/rollup-android-arm64": "npm:4.60.3" - "@rollup/rollup-darwin-arm64": "npm:4.60.3" - "@rollup/rollup-darwin-x64": "npm:4.60.3" - "@rollup/rollup-freebsd-arm64": "npm:4.60.3" - "@rollup/rollup-freebsd-x64": "npm:4.60.3" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.60.3" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.60.3" - "@rollup/rollup-linux-arm64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-arm64-musl": "npm:4.60.3" - "@rollup/rollup-linux-loong64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-loong64-musl": "npm:4.60.3" - "@rollup/rollup-linux-ppc64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-ppc64-musl": "npm:4.60.3" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-riscv64-musl": "npm:4.60.3" - "@rollup/rollup-linux-s390x-gnu": "npm:4.60.3" - "@rollup/rollup-linux-x64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-x64-musl": "npm:4.60.3" - "@rollup/rollup-openbsd-x64": "npm:4.60.3" - "@rollup/rollup-openharmony-arm64": "npm:4.60.3" - "@rollup/rollup-win32-arm64-msvc": "npm:4.60.3" - "@rollup/rollup-win32-ia32-msvc": "npm:4.60.3" - "@rollup/rollup-win32-x64-gnu": "npm:4.60.3" - "@rollup/rollup-win32-x64-msvc": "npm:4.60.3" + version: 4.59.0 + resolution: "rollup@npm:4.59.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.59.0" + "@rollup/rollup-android-arm64": "npm:4.59.0" + "@rollup/rollup-darwin-arm64": "npm:4.59.0" + "@rollup/rollup-darwin-x64": "npm:4.59.0" + "@rollup/rollup-freebsd-arm64": "npm:4.59.0" + "@rollup/rollup-freebsd-x64": "npm:4.59.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.59.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.59.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.59.0" + "@rollup/rollup-linux-loong64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-loong64-musl": "npm:4.59.0" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-ppc64-musl": "npm:4.59.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.59.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.59.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-x64-musl": "npm:4.59.0" + "@rollup/rollup-openbsd-x64": "npm:4.59.0" + "@rollup/rollup-openharmony-arm64": "npm:4.59.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.59.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.59.0" + "@rollup/rollup-win32-x64-gnu": "npm:4.59.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.59.0" "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -5591,49 +5257,40 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/576a68253d3d8ad6ae390e4ad70e13726923ed5d0dc8e74f663ce691fa862dc326c3855a296ebf79a95d28761a62556af956e5ec14aa743f1c701e97eda60636 + checksum: 10/728237932aad7022c0640cd126b9fe5285f2578099f22a0542229a17785320a6553b74582fa5977877541c1faf27de65ed2750bc89dbb55b525405244a46d9f1 languageName: node linkType: hard "rrweb-cssom@npm:^0.7.1": version: 0.7.1 - resolution: "rrweb-cssom@npm:0.7.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frrweb-cssom%2F-%2Frrweb-cssom-0.7.1.tgz" + resolution: "rrweb-cssom@npm:0.7.1" checksum: 10/e80cf25c223a823921d7ab57c0ce78f5b7ebceab857b400cce99dd4913420ce679834bc5707e8ada47d062e21ad368108a9534c314dc8d72c20aa4a4fa0ed16a languageName: node linkType: hard "rrweb-cssom@npm:^0.8.0": version: 0.8.0 - resolution: "rrweb-cssom@npm:0.8.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frrweb-cssom%2F-%2Frrweb-cssom-0.8.0.tgz" + resolution: "rrweb-cssom@npm:0.8.0" checksum: 10/07521ee36fb6569c17906afad1ac7ff8f099d49ade9249e190693ac36cdf27f88d9acf0cc66978935d5d0a23fca105643d7e9125b9a9d91ed9db9e02d31d7d80 languageName: node linkType: hard -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Frun-parallel%2F-%2Frun-parallel-1.2.0.tgz" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - "safe-array-concat@npm:^1.1.3": - version: 1.1.4 - resolution: "safe-array-concat@npm:1.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafe-array-concat%2F-%2Fsafe-array-concat-1.1.4.tgz" + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" dependencies: - call-bind: "npm:^1.0.9" - call-bound: "npm:^1.0.4" - get-intrinsic: "npm:^1.3.0" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" has-symbols: "npm:^1.1.0" isarray: "npm:^2.0.5" - checksum: 10/89e6a4d2759225515e5ea6b9f21a62dfad74c3aef45c769c9bf000b1c681f15568183e62935711ec9d10c35712c4f21f0d6acb094bd35138608b4a57fa64667d + checksum: 10/fac4f40f20a3f7da024b54792fcc61059e814566dcbb04586bfefef4d3b942b2408933f25b7b3dd024affd3f2a6bbc916bef04807855e4f192413941369db864 languageName: node linkType: hard "safe-push-apply@npm:^1.0.0": version: 1.0.0 - resolution: "safe-push-apply@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafe-push-apply%2F-%2Fsafe-push-apply-1.0.0.tgz" + resolution: "safe-push-apply@npm:1.0.0" dependencies: es-errors: "npm:^1.3.0" isarray: "npm:^2.0.5" @@ -5643,7 +5300,7 @@ __metadata: "safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafe-regex-test%2F-%2Fsafe-regex-test-1.1.0.tgz" + resolution: "safe-regex-test@npm:1.1.0" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -5654,14 +5311,14 @@ __metadata: "safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsafer-buffer%2F-%2Fsafer-buffer-2.1.2.tgz" + resolution: "safer-buffer@npm:2.1.2" checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 languageName: node linkType: hard "saxes@npm:^6.0.0": version: 6.0.0 - resolution: "saxes@npm:6.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsaxes%2F-%2Fsaxes-6.0.0.tgz" + resolution: "saxes@npm:6.0.0" dependencies: xmlchars: "npm:^2.2.0" checksum: 10/97b50daf6ca3a153e89842efa18a862e446248296622b7473c169c84c823ee8a16e4a43bac2f73f11fc8cb9168c73fbb0d73340f26552bac17970e9052367aa9 @@ -5670,7 +5327,7 @@ __metadata: "scheduler@npm:^0.23.2": version: 0.23.2 - resolution: "scheduler@npm:0.23.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fscheduler%2F-%2Fscheduler-0.23.2.tgz" + resolution: "scheduler@npm:0.23.2" dependencies: loose-envify: "npm:^1.1.0" checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9 @@ -5679,7 +5336,7 @@ __metadata: "semver@npm:^6.3.1": version: 6.3.1 - resolution: "semver@npm:6.3.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsemver%2F-%2Fsemver-6.3.1.tgz" + resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js checksum: 10/1ef3a85bd02a760c6ef76a45b8c1ce18226de40831e02a00bad78485390b98b6ccaa31046245fc63bba4a47a6a592b6c7eedc65cc47126e60489f9cc1ce3ed7e @@ -5688,7 +5345,7 @@ __metadata: "semver@npm:^7.3.5, semver@npm:^7.5.3": version: 7.7.4 - resolution: "semver@npm:7.7.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsemver%2F-%2Fsemver-7.7.4.tgz" + resolution: "semver@npm:7.7.4" bin: semver: bin/semver.js checksum: 10/26bdc6d58b29528f4142d29afb8526bc335f4fc04c4a10f2b98b217f277a031c66736bf82d3d3bb354a2f6a3ae50f18fd62b053c4ac3f294a3d10a61f5075b75 @@ -5706,14 +5363,14 @@ __metadata: "set-cookie-parser@npm:^2.6.0": version: 2.7.2 - resolution: "set-cookie-parser@npm:2.7.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-cookie-parser%2F-%2Fset-cookie-parser-2.7.2.tgz" + resolution: "set-cookie-parser@npm:2.7.2" checksum: 10/4b6f5ec4e3fa1aef471d9207117704d217ba6bb6443400b41f5ea945c4a7f6fc08e405a122c1a32b4ebde41f06dea75e02c2af87cee9abb27f3e3fe911e5839b languageName: node linkType: hard "set-function-length@npm:^1.2.2": version: 1.2.2 - resolution: "set-function-length@npm:1.2.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-function-length%2F-%2Fset-function-length-1.2.2.tgz" + resolution: "set-function-length@npm:1.2.2" dependencies: define-data-property: "npm:^1.1.4" es-errors: "npm:^1.3.0" @@ -5727,7 +5384,7 @@ __metadata: "set-function-name@npm:^2.0.2": version: 2.0.2 - resolution: "set-function-name@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-function-name%2F-%2Fset-function-name-2.0.2.tgz" + resolution: "set-function-name@npm:2.0.2" dependencies: define-data-property: "npm:^1.1.4" es-errors: "npm:^1.3.0" @@ -5739,7 +5396,7 @@ __metadata: "set-proto@npm:^1.0.0": version: 1.0.0 - resolution: "set-proto@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fset-proto%2F-%2Fset-proto-1.0.0.tgz" + resolution: "set-proto@npm:1.0.0" dependencies: dunder-proto: "npm:^1.0.1" es-errors: "npm:^1.3.0" @@ -5750,7 +5407,7 @@ __metadata: "shebang-command@npm:^2.0.0": version: 2.0.0 - resolution: "shebang-command@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fshebang-command%2F-%2Fshebang-command-2.0.0.tgz" + resolution: "shebang-command@npm:2.0.0" dependencies: shebang-regex: "npm:^3.0.0" checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa @@ -5759,24 +5416,24 @@ __metadata: "shebang-regex@npm:^3.0.0": version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fshebang-regex%2F-%2Fshebang-regex-3.0.0.tgz" + resolution: "shebang-regex@npm:3.0.0" checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 languageName: node linkType: hard "side-channel-list@npm:^1.0.0": - version: 1.0.1 - resolution: "side-channel-list@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel-list%2F-%2Fside-channel-list-1.0.1.tgz" + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" dependencies: es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.4" - checksum: 10/3499671cd52adaee739eac1e14d07530b8e3530192741aeb05e7fe4ad1b51d1368ceea2cd3c21b0f62b05410a5c70a7c4d997ba4b143303ef73d0c65dfd1c252 + object-inspect: "npm:^1.13.3" + checksum: 10/603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f languageName: node linkType: hard "side-channel-map@npm:^1.0.1": version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel-map%2F-%2Fside-channel-map-1.0.1.tgz" + resolution: "side-channel-map@npm:1.0.1" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -5788,7 +5445,7 @@ __metadata: "side-channel-weakmap@npm:^1.0.2": version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel-weakmap%2F-%2Fside-channel-weakmap-1.0.2.tgz" + resolution: "side-channel-weakmap@npm:1.0.2" dependencies: call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" @@ -5801,7 +5458,7 @@ __metadata: "side-channel@npm:^1.1.0": version: 1.1.0 - resolution: "side-channel@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fside-channel%2F-%2Fside-channel-1.1.0.tgz" + resolution: "side-channel@npm:1.1.0" dependencies: es-errors: "npm:^1.3.0" object-inspect: "npm:^1.13.3" @@ -5814,42 +5471,79 @@ __metadata: "siginfo@npm:^2.0.0": version: 2.0.0 - resolution: "siginfo@npm:2.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsiginfo%2F-%2Fsiginfo-2.0.0.tgz" + resolution: "siginfo@npm:2.0.0" checksum: 10/e93ff66c6531a079af8fb217240df01f980155b5dc408d2d7bebc398dd284e383eb318153bf8acd4db3c4fe799aa5b9a641e38b0ba3b1975700b1c89547ea4e7 languageName: node linkType: hard +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10/927484aa0b1640fd9473cee3e0a0bcad6fce93fd7bbc18bac9ad0c33686f5d2e2c422fba24b5899c184524af01e11dd2bd051c2bf2b07e47aff8ca72cbfc60d2 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10/ee99e1dacab0985b52cbe5a75640be6e604135e9489ebdc3048635d186012fbaecc20fbbe04b177dee434c319ba20f09b3e7dfefb7d932466c0d707744eac05c + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.7 + resolution: "socks@npm:2.8.7" + dependencies: + ip-address: "npm:^10.0.1" + smart-buffer: "npm:^4.2.0" + checksum: 10/d19366c95908c19db154f329bbe94c2317d315dc933a7c2b5101e73f32a555c84fb199b62174e1490082a593a4933d8d5a9b297bde7d1419c14a11a965f51356 + languageName: node + linkType: hard + "source-map-js@npm:^1.2.1": version: 1.2.1 - resolution: "source-map-js@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsource-map-js%2F-%2Fsource-map-js-1.2.1.tgz" + resolution: "source-map-js@npm:1.2.1" checksum: 10/ff9d8c8bf096d534a5b7707e0382ef827b4dd360a577d3f34d2b9f48e12c9d230b5747974ee7c607f0df65113732711bb701fe9ece3c7edbd43cb2294d707df3 languageName: node linkType: hard "space-separated-tokens@npm:^2.0.0": version: 2.0.2 - resolution: "space-separated-tokens@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fspace-separated-tokens%2F-%2Fspace-separated-tokens-2.0.2.tgz" + resolution: "space-separated-tokens@npm:2.0.2" checksum: 10/202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 languageName: node linkType: hard +"ssri@npm:^13.0.0": + version: 13.0.1 + resolution: "ssri@npm:13.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10/ae560d0378d074006a71b06af71bfbe84a3fe1ac6e16c1f07575f69e670d40170507fe52b21bcc23399429bc6a15f4bc3ea8d9bc88e9dfd7e87de564e6da6a72 + languageName: node + linkType: hard + "stackback@npm:0.0.2": version: 0.0.2 - resolution: "stackback@npm:0.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstackback%2F-%2Fstackback-0.0.2.tgz" + resolution: "stackback@npm:0.0.2" checksum: 10/2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 languageName: node linkType: hard -"std-env@npm:^4.0.0-rc.1": - version: 4.1.0 - resolution: "std-env@npm:4.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstd-env%2F-%2Fstd-env-4.1.0.tgz" - checksum: 10/008146cdb834010383138d356e0dd3e3b0ac127a8229f711b8c518bb22940813cc0dcd654fc76b17f0b18179f56089f8b8e52bd6a7ffa0041a966581e7a44dbe +"std-env@npm:^3.10.0": + version: 3.10.0 + resolution: "std-env@npm:3.10.0" + checksum: 10/19c9cda4f370b1ffae2b8b08c72167d8c3e5cfa972aaf5c6873f85d0ed2faa729407f5abb194dc33380708c00315002febb6f1e1b484736bfcf9361ad366013a languageName: node linkType: hard "stop-iteration-iterator@npm:^1.1.0": version: 1.1.0 - resolution: "stop-iteration-iterator@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstop-iteration-iterator%2F-%2Fstop-iteration-iterator-1.1.0.tgz" + resolution: "stop-iteration-iterator@npm:1.1.0" dependencies: es-errors: "npm:^1.3.0" internal-slot: "npm:^1.1.0" @@ -5859,14 +5553,14 @@ __metadata: "strictdom@npm:^1.0.1": version: 1.0.1 - resolution: "strictdom@npm:1.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstrictdom%2F-%2Fstrictdom-1.0.1.tgz" + resolution: "strictdom@npm:1.0.1" checksum: 10/e9e030dd9b14eaee81e698044e405aaaceec6e09f32c920fa24c2ee9fe8153bf30780a06028b6c185dc6348b54cc803addb4bfa498246b9d26583b23b359b9fa languageName: node linkType: hard "string.prototype.includes@npm:^2.0.1": version: 2.0.1 - resolution: "string.prototype.includes@npm:2.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.includes%2F-%2Fstring.prototype.includes-2.0.1.tgz" + resolution: "string.prototype.includes@npm:2.0.1" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -5877,7 +5571,7 @@ __metadata: "string.prototype.matchall@npm:^4.0.12": version: 4.0.12 - resolution: "string.prototype.matchall@npm:4.0.12::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.matchall%2F-%2Fstring.prototype.matchall-4.0.12.tgz" + resolution: "string.prototype.matchall@npm:4.0.12" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" @@ -5898,7 +5592,7 @@ __metadata: "string.prototype.repeat@npm:^1.0.0": version: 1.0.0 - resolution: "string.prototype.repeat@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.repeat%2F-%2Fstring.prototype.repeat-1.0.0.tgz" + resolution: "string.prototype.repeat@npm:1.0.0" dependencies: define-properties: "npm:^1.1.3" es-abstract: "npm:^1.17.5" @@ -5908,7 +5602,7 @@ __metadata: "string.prototype.trim@npm:^1.2.10": version: 1.2.10 - resolution: "string.prototype.trim@npm:1.2.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.trim%2F-%2Fstring.prototype.trim-1.2.10.tgz" + resolution: "string.prototype.trim@npm:1.2.10" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.2" @@ -5923,7 +5617,7 @@ __metadata: "string.prototype.trimend@npm:^1.0.9": version: 1.0.9 - resolution: "string.prototype.trimend@npm:1.0.9::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.trimend%2F-%2Fstring.prototype.trimend-1.0.9.tgz" + resolution: "string.prototype.trimend@npm:1.0.9" dependencies: call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.2" @@ -5935,7 +5629,7 @@ __metadata: "string.prototype.trimstart@npm:^1.0.8": version: 1.0.8 - resolution: "string.prototype.trimstart@npm:1.0.8::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstring.prototype.trimstart%2F-%2Fstring.prototype.trimstart-1.0.8.tgz" + resolution: "string.prototype.trimstart@npm:1.0.8" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -5946,7 +5640,7 @@ __metadata: "stringify-entities@npm:^4.0.0": version: 4.0.4 - resolution: "stringify-entities@npm:4.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstringify-entities%2F-%2Fstringify-entities-4.0.4.tgz" + resolution: "stringify-entities@npm:4.0.4" dependencies: character-entities-html4: "npm:^2.0.0" character-entities-legacy: "npm:^3.0.0" @@ -5956,14 +5650,14 @@ __metadata: "strip-json-comments@npm:^3.1.1": version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstrip-json-comments%2F-%2Fstrip-json-comments-3.1.1.tgz" + resolution: "strip-json-comments@npm:3.1.1" checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 languageName: node linkType: hard "style-to-js@npm:^1.0.0": version: 1.1.21 - resolution: "style-to-js@npm:1.1.21::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstyle-to-js%2F-%2Fstyle-to-js-1.1.21.tgz" + resolution: "style-to-js@npm:1.1.21" dependencies: style-to-object: "npm:1.0.14" checksum: 10/5e30b4c52ed4e0294324adab2a43a0438b5495a77a72a6b1258637eebfc4dc8e0614f5ac7bf38a2f514879b3b448215d01fecf1f8d7468b8b95d90bed1d05d57 @@ -5972,7 +5666,7 @@ __metadata: "style-to-object@npm:1.0.14": version: 1.0.14 - resolution: "style-to-object@npm:1.0.14::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fstyle-to-object%2F-%2Fstyle-to-object-1.0.14.tgz" + resolution: "style-to-object@npm:1.0.14" dependencies: inline-style-parser: "npm:0.2.7" checksum: 10/06b86a5cf435dafac908d19082842983f9052d8cf3682915b1bd9251e3fe9b8065dbd2aef060dc5dfa0fa2ee24d717b587a5205f571513a10f30e3947f9d28ff @@ -5981,7 +5675,7 @@ __metadata: "supports-color@npm:^7.1.0": version: 7.2.0 - resolution: "supports-color@npm:7.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsupports-color%2F-%2Fsupports-color-7.2.0.tgz" + resolution: "supports-color@npm:7.2.0" dependencies: has-flag: "npm:^4.0.0" checksum: 10/c8bb7afd564e3b26b50ca6ee47572c217526a1389fe018d00345856d4a9b08ffbd61fadaf283a87368d94c3dcdb8f5ffe2650a5a65863e21ad2730ca0f05210a @@ -5990,74 +5684,65 @@ __metadata: "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsupports-preserve-symlinks-flag%2F-%2Fsupports-preserve-symlinks-flag-1.0.0.tgz" + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e languageName: node linkType: hard "symbol-tree@npm:^3.2.4": version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fsymbol-tree%2F-%2Fsymbol-tree-3.2.4.tgz" + resolution: "symbol-tree@npm:3.2.4" checksum: 10/c09a00aadf279d47d0c5c46ca3b6b2fbaeb45f0a184976d599637d412d3a70bbdc043ff33effe1206dea0e36e0ad226cb957112e7ce9a4bf2daedf7fa4f85c53 languageName: node linkType: hard "tar@npm:^7.5.4": - version: 7.5.13 - resolution: "tar@npm:7.5.13::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftar%2F-%2Ftar-7.5.13.tgz" + version: 7.5.9 + resolution: "tar@npm:7.5.9" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/2bc2b6f0349038a6621dbba1c4522d45752d5071b2994692257113c2050cd23fafc30308f820e5f8ad6fda3f7d7f92adc9a432aa733daa04c42af2061c021c3f + checksum: 10/1213cdde9c22d6acf8809ba5d2a025212ce3517bc99c4a4c6981b7dc0489bf3b164db9c826c9517680889194c9ba57448c8ff0da35eca9a60bb7689bf0b3897d languageName: node linkType: hard "tinybench@npm:^2.9.0": version: 2.9.0 - resolution: "tinybench@npm:2.9.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinybench%2F-%2Ftinybench-2.9.0.tgz" + resolution: "tinybench@npm:2.9.0" checksum: 10/cfa1e1418e91289219501703c4693c70708c91ffb7f040fd318d24aef419fb5a43e0c0160df9471499191968b2451d8da7f8087b08c3133c251c40d24aced06c languageName: node linkType: hard "tinyexec@npm:^1.0.2": - version: 1.1.2 - resolution: "tinyexec@npm:1.1.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinyexec%2F-%2Ftinyexec-1.1.2.tgz" - checksum: 10/2bbe37f9001c6f5723ab39eb8dc1e88f77e830d7cf2e8f34bb75019eb505fcfe3b061b4799c502ff31fa63aa1a9adc649add5ff1e17b7fbd8c16e1afb75d0b9e + version: 1.0.2 + resolution: "tinyexec@npm:1.0.2" + checksum: 10/cb709ed4240e873d3816e67f851d445f5676e0ae3a52931a60ff571d93d388da09108c8057b62351766133ee05ff3159dd56c3a0fbd39a5933c6639ce8771405 languageName: node linkType: hard -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.16": - version: 0.2.16 - resolution: "tinyglobby@npm:0.2.16::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinyglobby%2F-%2Ftinyglobby-0.2.16.tgz" +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" dependencies: fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.4" - checksum: 10/5c2c41b572ada38449e7c86a5fe034f204a1dbba577225a761a14f29f48dc3f2fc0d81a6c56fcc67c5a742cc3aa9fb5e2ca18dbf22b610b0bc0e549b34d5a0f8 - languageName: node - linkType: hard - -"tinyrainbow@npm:^3.1.0": - version: 3.1.0 - resolution: "tinyrainbow@npm:3.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftinyrainbow%2F-%2Ftinyrainbow-3.1.0.tgz" - checksum: 10/4c2c01dde1e5bb9a74973daaae141d4d733d246280b2f9a7f6a9e7dd8e940d48b2580a6086125278777897bc44635d6ccec5f9f563c2179dd2129f4542d0ec05 + picomatch: "npm:^4.0.3" + checksum: 10/d72bd826a8b0fa5fa3929e7fe5ba48fceb2ae495df3a231b6c5408cd7d8c00b58ab5a9c2a76ba56a62ee9b5e083626f1f33599734bed1ffc4b792406408f0ca2 languageName: node linkType: hard -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fto-regex-range%2F-%2Fto-regex-range-5.0.1.tgz" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10/10dda13571e1f5ad37546827e9b6d4252d2e0bc176c24a101252153ef435d83696e2557fe128c4678e4e78f5f01e83711c703eef9814eb12dab028580d45980a +"tinyrainbow@npm:^3.0.3": + version: 3.0.3 + resolution: "tinyrainbow@npm:3.0.3" + checksum: 10/169cc63c15e1378674180f3207c82c05bfa58fc79992e48792e8d97b4b759012f48e95297900ede24a81f0087cf329a0d85bb81109739eacf03c650127b3f6c1 languageName: node linkType: hard "tough-cookie@npm:^4.1.4": version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftough-cookie%2F-%2Ftough-cookie-4.1.4.tgz" + resolution: "tough-cookie@npm:4.1.4" dependencies: psl: "npm:^1.1.33" punycode: "npm:^2.1.1" @@ -6069,7 +5754,7 @@ __metadata: "tr46@npm:^5.1.0": version: 5.1.1 - resolution: "tr46@npm:5.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftr46%2F-%2Ftr46-5.1.1.tgz" + resolution: "tr46@npm:5.1.1" dependencies: punycode: "npm:^2.3.1" checksum: 10/833a0e1044574da5790148fd17866d4ddaea89e022de50279967bcd6b28b4ce0d30d59eb3acf9702b60918975b3bad481400337e3a2e6326cffa5c77b874753d @@ -6078,14 +5763,14 @@ __metadata: "trim-lines@npm:^3.0.0": version: 3.0.1 - resolution: "trim-lines@npm:3.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftrim-lines%2F-%2Ftrim-lines-3.0.1.tgz" + resolution: "trim-lines@npm:3.0.1" checksum: 10/7a1325e4ce8ff7e9e52007600e9c9862a166d0db1f1cf0c9357e359e410acab1278fcd91cc279dfa5123fc37b69f080de02f471e91dbbc61b155b9ca92597929 languageName: node linkType: hard "trough@npm:^2.0.0": version: 2.2.0 - resolution: "trough@npm:2.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftrough%2F-%2Ftrough-2.2.0.tgz" + resolution: "trough@npm:2.2.0" checksum: 10/999c1cb3db6ec63e1663f911146a90125065da37f66ba342b031d53edb22a62f56c1f934bbc61a55b2b29dd74207544cfd78875b414665c1ffadcd9a9a009eeb languageName: node linkType: hard @@ -6101,7 +5786,7 @@ __metadata: "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 - resolution: "type-check@npm:0.4.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftype-check%2F-%2Ftype-check-0.4.0.tgz" + resolution: "type-check@npm:0.4.0" dependencies: prelude-ls: "npm:^1.2.1" checksum: 10/14687776479d048e3c1dbfe58a2409e00367810d6960c0f619b33793271ff2a27f81b52461f14a162f1f89a9b1d8da1b237fc7c99b0e1fdcec28ec63a86b1fec @@ -6110,7 +5795,7 @@ __metadata: "typed-array-buffer@npm:^1.0.3": version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-buffer%2F-%2Ftyped-array-buffer-1.0.3.tgz" + resolution: "typed-array-buffer@npm:1.0.3" dependencies: call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" @@ -6121,7 +5806,7 @@ __metadata: "typed-array-byte-length@npm:^1.0.3": version: 1.0.3 - resolution: "typed-array-byte-length@npm:1.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-byte-length%2F-%2Ftyped-array-byte-length-1.0.3.tgz" + resolution: "typed-array-byte-length@npm:1.0.3" dependencies: call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" @@ -6134,7 +5819,7 @@ __metadata: "typed-array-byte-offset@npm:^1.0.4": version: 1.0.4 - resolution: "typed-array-byte-offset@npm:1.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-byte-offset%2F-%2Ftyped-array-byte-offset-1.0.4.tgz" + resolution: "typed-array-byte-offset@npm:1.0.4" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -6149,7 +5834,7 @@ __metadata: "typed-array-length@npm:^1.0.7": version: 1.0.7 - resolution: "typed-array-length@npm:1.0.7::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftyped-array-length%2F-%2Ftyped-array-length-1.0.7.tgz" + resolution: "typed-array-length@npm:1.0.7" dependencies: call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" @@ -6163,7 +5848,7 @@ __metadata: "typescript@npm:^5.9.3": version: 5.9.3 - resolution: "typescript@npm:5.9.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Ftypescript%2F-%2Ftypescript-5.9.3.tgz" + resolution: "typescript@npm:5.9.3" bin: tsc: bin/tsc tsserver: bin/tsserver @@ -6173,7 +5858,7 @@ __metadata: "typescript@patch:typescript@npm%3A^5.9.3#optional!builtin": version: 5.9.3 - resolution: "typescript@patch:typescript@npm%3A5.9.3%3A%3A__archiveUrl=https%253A%252F%252Fnpm.dev.wixpress.com%252Fapi%252Fnpm%252Fnpm-repos%252Ftypescript%252F-%252Ftypescript-5.9.3.tgz#optional!builtin::version=5.9.3&hash=5786d5" + resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver @@ -6183,7 +5868,7 @@ __metadata: "unbox-primitive@npm:^1.1.0": version: 1.1.0 - resolution: "unbox-primitive@npm:1.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funbox-primitive%2F-%2Funbox-primitive-1.1.0.tgz" + resolution: "unbox-primitive@npm:1.1.0" dependencies: call-bound: "npm:^1.0.3" has-bigints: "npm:^1.0.2" @@ -6193,16 +5878,9 @@ __metadata: languageName: node linkType: hard -"undici@npm:^6.25.0": - version: 6.25.0 - resolution: "undici@npm:6.25.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fundici%2F-%2Fundici-6.25.0.tgz" - checksum: 10/a475e45da3e1d1073283bb70531666f09a432eabff2b857bd7063d469a1ee1486192ff61dc0dadbb526673ce1120fee14d66a59b6b17d1e0bd3a4d5f0a52d0a6 - languageName: node - linkType: hard - "unified@npm:^11.0.0": version: 11.0.5 - resolution: "unified@npm:11.0.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funified%2F-%2Funified-11.0.5.tgz" + resolution: "unified@npm:11.0.5" dependencies: "@types/unist": "npm:^3.0.0" bail: "npm:^2.0.0" @@ -6215,9 +5893,27 @@ __metadata: languageName: node linkType: hard +"unique-filename@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-filename@npm:5.0.0" + dependencies: + unique-slug: "npm:^6.0.0" + checksum: 10/a5f67085caef74bdd2a6869a200ed5d68d171f5cc38435a836b5fd12cce4e4eb55e6a190298035c325053a5687ed7a3c96f0a91e82215fd14729769d9ac57d9b + languageName: node + linkType: hard + +"unique-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "unique-slug@npm:6.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10/b78ed9d5b01ff465f80975f17387750ed3639909ac487fa82c4ae4326759f6de87c2131c0c39eca4c68cf06c537a8d104fba1dfc8a30308f99bc505345e1eba3 + languageName: node + linkType: hard + "unist-util-find-after@npm:^5.0.0": version: 5.0.0 - resolution: "unist-util-find-after@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-find-after%2F-%2Funist-util-find-after-5.0.0.tgz" + resolution: "unist-util-find-after@npm:5.0.0" dependencies: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" @@ -6227,7 +5923,7 @@ __metadata: "unist-util-is@npm:^6.0.0": version: 6.0.1 - resolution: "unist-util-is@npm:6.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-is%2F-%2Funist-util-is-6.0.1.tgz" + resolution: "unist-util-is@npm:6.0.1" dependencies: "@types/unist": "npm:^3.0.0" checksum: 10/dc3ebfb481f097863ae3674c440add6fe2d51a4cfcd565b13fb759c8a2eaefb71903a619b385e892c2ad6db6a5b60d068dfc5592b6dd57f4b60180082b3136d6 @@ -6236,7 +5932,7 @@ __metadata: "unist-util-position@npm:^5.0.0": version: 5.0.0 - resolution: "unist-util-position@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-position%2F-%2Funist-util-position-5.0.0.tgz" + resolution: "unist-util-position@npm:5.0.0" dependencies: "@types/unist": "npm:^3.0.0" checksum: 10/89d4da00e74618d7562ac7ac288961df9bcd4ccca6df3b5a90650f018eceb6b95de6e771e88bdbef46cc9d96861d456abe57b7ad1108921e0feb67c6292aa29d @@ -6245,7 +5941,7 @@ __metadata: "unist-util-stringify-position@npm:^4.0.0": version: 4.0.0 - resolution: "unist-util-stringify-position@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-stringify-position%2F-%2Funist-util-stringify-position-4.0.0.tgz" + resolution: "unist-util-stringify-position@npm:4.0.0" dependencies: "@types/unist": "npm:^3.0.0" checksum: 10/d15c88aca7a31902d95d5b5355bbe09583cf6f6ff6e59e134ef76c76d3c30bc1021f2d7ea5b7897c6d0858ed5f3770c1b19de9c78274f50d72f95a0d05f1af71 @@ -6254,7 +5950,7 @@ __metadata: "unist-util-visit-parents@npm:^6.0.0": version: 6.0.2 - resolution: "unist-util-visit-parents@npm:6.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-visit-parents%2F-%2Funist-util-visit-parents-6.0.2.tgz" + resolution: "unist-util-visit-parents@npm:6.0.2" dependencies: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" @@ -6264,7 +5960,7 @@ __metadata: "unist-util-visit@npm:^5.0.0": version: 5.1.0 - resolution: "unist-util-visit@npm:5.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funist-util-visit%2F-%2Funist-util-visit-5.1.0.tgz" + resolution: "unist-util-visit@npm:5.1.0" dependencies: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" @@ -6275,14 +5971,14 @@ __metadata: "universalify@npm:^0.2.0": version: 0.2.0 - resolution: "universalify@npm:0.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Funiversalify%2F-%2Funiversalify-0.2.0.tgz" + resolution: "universalify@npm:0.2.0" checksum: 10/e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 languageName: node linkType: hard -"update-browserslist-db@npm:^1.2.3": +"update-browserslist-db@npm:^1.2.0": version: 1.2.3 - resolution: "update-browserslist-db@npm:1.2.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fupdate-browserslist-db%2F-%2Fupdate-browserslist-db-1.2.3.tgz" + resolution: "update-browserslist-db@npm:1.2.3" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -6296,7 +5992,7 @@ __metadata: "uri-js@npm:^4.2.2": version: 4.4.1 - resolution: "uri-js@npm:4.4.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Furi-js%2F-%2Furi-js-4.4.1.tgz" + resolution: "uri-js@npm:4.4.1" dependencies: punycode: "npm:^2.1.0" checksum: 10/b271ca7e3d46b7160222e3afa3e531505161c9a4e097febae9664e4b59912f4cbe94861361a4175edac3a03fee99d91e44b6a58c17a634bc5a664b19fc76fbcb @@ -6305,7 +6001,7 @@ __metadata: "url-parse@npm:^1.5.3": version: 1.5.10 - resolution: "url-parse@npm:1.5.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Furl-parse%2F-%2Furl-parse-1.5.10.tgz" + resolution: "url-parse@npm:1.5.10" dependencies: querystringify: "npm:^2.1.1" requires-port: "npm:^1.0.0" @@ -6315,7 +6011,7 @@ __metadata: "vfile-message@npm:^4.0.0": version: 4.0.3 - resolution: "vfile-message@npm:4.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvfile-message%2F-%2Fvfile-message-4.0.3.tgz" + resolution: "vfile-message@npm:4.0.3" dependencies: "@types/unist": "npm:^3.0.0" unist-util-stringify-position: "npm:^4.0.0" @@ -6325,7 +6021,7 @@ __metadata: "vfile@npm:^6.0.0": version: 6.0.3 - resolution: "vfile@npm:6.0.3::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvfile%2F-%2Fvfile-6.0.3.tgz" + resolution: "vfile@npm:6.0.3" dependencies: "@types/unist": "npm:^3.0.0" vfile-message: "npm:^4.0.0" @@ -6333,66 +6029,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0": - version: 8.0.10 - resolution: "vite@npm:8.0.10::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvite%2F-%2Fvite-8.0.10.tgz" - dependencies: - fsevents: "npm:~2.3.3" - lightningcss: "npm:^1.32.0" - picomatch: "npm:^4.0.4" - postcss: "npm:^8.5.10" - rolldown: "npm:1.0.0-rc.17" - tinyglobby: "npm:^0.2.16" - peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - "@vitejs/devtools": ^0.1.0 - esbuild: ^0.27.0 || ^0.28.0 - jiti: ">=1.21.0" - less: ^4.0.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: ">=0.54.8" - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - "@vitejs/devtools": - optional: true - esbuild: - optional: true - jiti: - optional: true - less: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10/64c6fa4efa1a9ca3e1cacbcca16487b75ea25d62efbfb99c4e571b5f716296dc4f8af825eb624e273b11c3bee4e87daec35815fb6a56e01c843659c003ed2bcd - languageName: node - linkType: hard - -"vite@npm:^7.2.2": - version: 7.3.2 - resolution: "vite@npm:7.3.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvite%2F-%2Fvite-7.3.2.tgz" +"vite@npm:^6.0.0 || ^7.0.0, vite@npm:^7.2.2": + version: 7.3.1 + resolution: "vite@npm:7.3.1" dependencies: esbuild: "npm:^0.27.0" fdir: "npm:^6.5.0" @@ -6441,47 +6080,44 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/c5f7a9a60011c41c836cedf31c8ee7624102aff9b6a7f3aab2ff47639721bba0916f81994c3a3ea6577a16c4f0dfee1e7dbd244e0da8edd5954e3c6d48daaaa2 + checksum: 10/62e48ffa4283b688f0049005405a004447ad38ffc99a0efea4c3aa9b7eed739f7402b43f00668c0ee5a895b684dc953d62f0722d8a92c5b2f6c95f051bceb208 languageName: node linkType: hard "vitest@npm:^4.0.14": - version: 4.1.5 - resolution: "vitest@npm:4.1.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fvitest%2F-%2Fvitest-4.1.5.tgz" - dependencies: - "@vitest/expect": "npm:4.1.5" - "@vitest/mocker": "npm:4.1.5" - "@vitest/pretty-format": "npm:4.1.5" - "@vitest/runner": "npm:4.1.5" - "@vitest/snapshot": "npm:4.1.5" - "@vitest/spy": "npm:4.1.5" - "@vitest/utils": "npm:4.1.5" - es-module-lexer: "npm:^2.0.0" - expect-type: "npm:^1.3.0" + version: 4.0.18 + resolution: "vitest@npm:4.0.18" + dependencies: + "@vitest/expect": "npm:4.0.18" + "@vitest/mocker": "npm:4.0.18" + "@vitest/pretty-format": "npm:4.0.18" + "@vitest/runner": "npm:4.0.18" + "@vitest/snapshot": "npm:4.0.18" + "@vitest/spy": "npm:4.0.18" + "@vitest/utils": "npm:4.0.18" + es-module-lexer: "npm:^1.7.0" + expect-type: "npm:^1.2.2" magic-string: "npm:^0.30.21" obug: "npm:^2.1.1" pathe: "npm:^2.0.3" picomatch: "npm:^4.0.3" - std-env: "npm:^4.0.0-rc.1" + std-env: "npm:^3.10.0" tinybench: "npm:^2.9.0" tinyexec: "npm:^1.0.2" tinyglobby: "npm:^0.2.15" - tinyrainbow: "npm:^3.1.0" - vite: "npm:^6.0.0 || ^7.0.0 || ^8.0.0" + tinyrainbow: "npm:^3.0.3" + vite: "npm:^6.0.0 || ^7.0.0" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" "@opentelemetry/api": ^1.9.0 "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 - "@vitest/browser-playwright": 4.1.5 - "@vitest/browser-preview": 4.1.5 - "@vitest/browser-webdriverio": 4.1.5 - "@vitest/coverage-istanbul": 4.1.5 - "@vitest/coverage-v8": 4.1.5 - "@vitest/ui": 4.1.5 + "@vitest/browser-playwright": 4.0.18 + "@vitest/browser-preview": 4.0.18 + "@vitest/browser-webdriverio": 4.0.18 + "@vitest/ui": 4.0.18 happy-dom: "*" jsdom: "*" - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: "@edge-runtime/vm": optional: true @@ -6495,27 +6131,21 @@ __metadata: optional: true "@vitest/browser-webdriverio": optional: true - "@vitest/coverage-istanbul": - optional: true - "@vitest/coverage-v8": - optional: true "@vitest/ui": optional: true happy-dom: optional: true jsdom: optional: true - vite: - optional: false bin: vitest: vitest.mjs - checksum: 10/8b768514993d8908fc9b5f2d619943d23b81aaba9443132583bd58aeb441bf76d152961326de9ca328ff0efcddbf8a58f4568a7b66a4391202542ed772613d81 + checksum: 10/6c6464ebcf3af83546862896fd1b5f10cb6607261bffce39df60033a288b8c1687ae1dd20002b6e4997a7a05303376d1eb58ce20afe63be052529a4378a8c165 languageName: node linkType: hard "w3c-xmlserializer@npm:^5.0.0": version: 5.0.0 - resolution: "w3c-xmlserializer@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fw3c-xmlserializer%2F-%2Fw3c-xmlserializer-5.0.0.tgz" + resolution: "w3c-xmlserializer@npm:5.0.0" dependencies: xml-name-validator: "npm:^5.0.0" checksum: 10/d78f59e6b4f924aa53b6dfc56949959229cae7fe05ea9374eb38d11edcec01398b7f5d7a12576bd5acc57ff446abb5c9115cd83b9d882555015437cf858d42f0 @@ -6524,14 +6154,14 @@ __metadata: "webidl-conversions@npm:^7.0.0": version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwebidl-conversions%2F-%2Fwebidl-conversions-7.0.0.tgz" + resolution: "webidl-conversions@npm:7.0.0" checksum: 10/4c4f65472c010eddbe648c11b977d048dd96956a625f7f8b9d64e1b30c3c1f23ea1acfd654648426ce5c743c2108a5a757c0592f02902cf7367adb7d14e67721 languageName: node linkType: hard "whatwg-encoding@npm:^3.1.1": version: 3.1.1 - resolution: "whatwg-encoding@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhatwg-encoding%2F-%2Fwhatwg-encoding-3.1.1.tgz" + resolution: "whatwg-encoding@npm:3.1.1" dependencies: iconv-lite: "npm:0.6.3" checksum: 10/bbef815eb67f91487c7f2ef96329743f5fd8357d7d62b1119237d25d41c7e452dff8197235b2d3c031365a17f61d3bb73ca49d0ed1582475aa4a670815e79534 @@ -6540,14 +6170,14 @@ __metadata: "whatwg-mimetype@npm:^4.0.0": version: 4.0.0 - resolution: "whatwg-mimetype@npm:4.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhatwg-mimetype%2F-%2Fwhatwg-mimetype-4.0.0.tgz" + resolution: "whatwg-mimetype@npm:4.0.0" checksum: 10/894a618e2d90bf444b6f309f3ceb6e58cf21b2beaa00c8b333696958c4076f0c7b30b9d33413c9ffff7c5832a0a0c8569e5bb347ef44beded72aeefd0acd62e8 languageName: node linkType: hard "whatwg-url@npm:^14.0.0": version: 14.2.0 - resolution: "whatwg-url@npm:14.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhatwg-url%2F-%2Fwhatwg-url-14.2.0.tgz" + resolution: "whatwg-url@npm:14.2.0" dependencies: tr46: "npm:^5.1.0" webidl-conversions: "npm:^7.0.0" @@ -6557,7 +6187,7 @@ __metadata: "which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": version: 1.1.1 - resolution: "which-boxed-primitive@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-boxed-primitive%2F-%2Fwhich-boxed-primitive-1.1.1.tgz" + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: is-bigint: "npm:^1.1.0" is-boolean-object: "npm:^1.2.1" @@ -6570,7 +6200,7 @@ __metadata: "which-builtin-type@npm:^1.2.1": version: 1.2.1 - resolution: "which-builtin-type@npm:1.2.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-builtin-type%2F-%2Fwhich-builtin-type-1.2.1.tgz" + resolution: "which-builtin-type@npm:1.2.1" dependencies: call-bound: "npm:^1.0.2" function.prototype.name: "npm:^1.1.6" @@ -6591,7 +6221,7 @@ __metadata: "which-collection@npm:^1.0.2": version: 1.0.2 - resolution: "which-collection@npm:1.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-collection%2F-%2Fwhich-collection-1.0.2.tgz" + resolution: "which-collection@npm:1.0.2" dependencies: is-map: "npm:^2.0.3" is-set: "npm:^2.0.3" @@ -6603,7 +6233,7 @@ __metadata: "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": version: 1.1.20 - resolution: "which-typed-array@npm:1.1.20::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich-typed-array%2F-%2Fwhich-typed-array-1.1.20.tgz" + resolution: "which-typed-array@npm:1.1.20" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -6618,7 +6248,7 @@ __metadata: "which@npm:^2.0.1": version: 2.0.2 - resolution: "which@npm:2.0.2::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich%2F-%2Fwhich-2.0.2.tgz" + resolution: "which@npm:2.0.2" dependencies: isexe: "npm:^2.0.0" bin: @@ -6629,7 +6259,7 @@ __metadata: "which@npm:^6.0.0": version: 6.0.1 - resolution: "which@npm:6.0.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhich%2F-%2Fwhich-6.0.1.tgz" + resolution: "which@npm:6.0.1" dependencies: isexe: "npm:^4.0.0" bin: @@ -6640,7 +6270,7 @@ __metadata: "why-is-node-running@npm:^2.3.0": version: 2.3.0 - resolution: "why-is-node-running@npm:2.3.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fwhy-is-node-running%2F-%2Fwhy-is-node-running-2.3.0.tgz" + resolution: "why-is-node-running@npm:2.3.0" dependencies: siginfo: "npm:^2.0.0" stackback: "npm:0.0.2" @@ -6652,14 +6282,14 @@ __metadata: "word-wrap@npm:^1.2.5": version: 1.2.5 - resolution: "word-wrap@npm:1.2.5::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fword-wrap%2F-%2Fword-wrap-1.2.5.tgz" + resolution: "word-wrap@npm:1.2.5" checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854 languageName: node linkType: hard "ws@npm:^8.18.0": - version: 8.20.0 - resolution: "ws@npm:8.20.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fws%2F-%2Fws-8.20.0.tgz" + version: 8.19.0 + resolution: "ws@npm:8.19.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -6668,57 +6298,55 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/b7ab934b21ffdea9f25a5af5097e8c1ec7625db553bca026c5a23e35b7c236f3fb89782f2b57fab9da553864512f9aa7d245827ef998d26ffa1b2187a19a6d10 + checksum: 10/26e4901e93abaf73af9f26a93707c95b4845e91a7a347ec8c569e6e9be7f9df066f6c2b817b2d685544e208207898a750b78461e6e8d810c11a370771450c31b languageName: node linkType: hard "xml-name-validator@npm:^5.0.0": version: 5.0.0 - resolution: "xml-name-validator@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fxml-name-validator%2F-%2Fxml-name-validator-5.0.0.tgz" + resolution: "xml-name-validator@npm:5.0.0" checksum: 10/43f30f3f6786e406dd665acf08cd742d5f8a46486bd72517edb04b27d1bcd1599664c2a4a99fc3f1e56a3194bff588b12f178b7972bc45c8047bdc4c3ac8d4a1 languageName: node linkType: hard "xmlchars@npm:^2.2.0": version: 2.2.0 - resolution: "xmlchars@npm:2.2.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fxmlchars%2F-%2Fxmlchars-2.2.0.tgz" + resolution: "xmlchars@npm:2.2.0" checksum: 10/4ad5924974efd004a47cce6acf5c0269aee0e62f9a805a426db3337af7bcbd331099df174b024ace4fb18971b8a56de386d2e73a1c4b020e3abd63a4a9b917f1 languageName: node linkType: hard "yallist@npm:^3.0.2": version: 3.1.1 - resolution: "yallist@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyallist%2F-%2Fyallist-3.1.1.tgz" + resolution: "yallist@npm:3.1.1" checksum: 10/9af0a4329c3c6b779ac4736c69fae4190ac03029fa27c1aef4e6bcc92119b73dea6fe5db5fe881fb0ce2a0e9539a42cdf60c7c21eda04d1a0b8c082e38509efb languageName: node linkType: hard -"yallist@npm:^5.0.0": - version: 5.0.0 - resolution: "yallist@npm:5.0.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyallist%2F-%2Fyallist-5.0.0.tgz" - checksum: 10/1884d272d485845ad04759a255c71775db0fac56308764b4c77ea56a20d56679fad340213054c8c9c9c26fcfd4c4b2a90df993b7e0aaf3cdb73c618d1d1a802a +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10/4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd languageName: node linkType: hard -"yaml@npm:^2.7.0": - version: 2.8.4 - resolution: "yaml@npm:2.8.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyaml%2F-%2Fyaml-2.8.4.tgz" - bin: - yaml: bin.mjs - checksum: 10/1ccf5d9692c6521141515c2df24c30dd3f633fdb96b548ccc744094893cc58868ad0b3220e040b914a6308c52d258dc2d228a0330343e544a13c871569b92305 +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10/1884d272d485845ad04759a255c71775db0fac56308764b4c77ea56a20d56679fad340213054c8c9c9c26fcfd4c4b2a90df993b7e0aaf3cdb73c618d1d1a802a languageName: node linkType: hard "yocto-queue@npm:^0.1.0": version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fyocto-queue%2F-%2Fyocto-queue-0.1.0.tgz" + resolution: "yocto-queue@npm:0.1.0" checksum: 10/f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 languageName: node linkType: hard "zwitch@npm:^2.0.0": version: 2.0.4 - resolution: "zwitch@npm:2.0.4::__archiveUrl=https%3A%2F%2Fnpm.dev.wixpress.com%2Fapi%2Fnpm%2Fnpm-repos%2Fzwitch%2F-%2Fzwitch-2.0.4.tgz" + resolution: "zwitch@npm:2.0.4" checksum: 10/f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 languageName: node linkType: hard \ No newline at end of file From 5e44b85c408a868647cec5559f8f5031f31c4d73 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 14:18:02 +0300 Subject: [PATCH 11/18] removing old stale implementation --- yarn.lock | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 37c69d01..1d55e0ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6349,4 +6349,5 @@ __metadata: resolution: "zwitch@npm:2.0.4" checksum: 10/f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 languageName: node - linkType: hard \ No newline at end of file + linkType: hard + \ No newline at end of file From f9b44f79d95cc3c0f291bba231ba6840683d6faa Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 14:18:22 +0300 Subject: [PATCH 12/18] removing old stale implementation --- yarn.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 1d55e0ac..c3b4e422 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6350,4 +6350,3 @@ __metadata: checksum: 10/f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 languageName: node linkType: hard - \ No newline at end of file From be94b266bf1381bb2b29b5765039b6fbabb0bd37 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 14:19:34 +0300 Subject: [PATCH 13/18] removing old stale implementation --- .../context_ssot_restructure_c6889ec0.plan.md | 611 +----------------- 1 file changed, 1 insertion(+), 610 deletions(-) diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md index eb4afd6d..57df80f3 100644 --- a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -4,7 +4,7 @@ overview: "Restructure the rules/ and docs/ across all three packages (@wix/inte todos: - id: phase-0-schema content: Design YAML glossary schema and marker syntax for templates - status: completed + status: pending - id: phase-0-build content: Build scripts/build-context.js (YAML + templates -> rules/ and docs/ markdown) status: pending @@ -47,612 +47,3 @@ todos: isProject: false --- -# Context SSOT Restructure - -## Motivation and Idea - -### The problem - -This monorepo publishes three packages (`@wix/interact`, `@wix/motion`, `@wix/motion-presets`) alongside context files designed for two audiences: **LLM-facing rules** (so AI agents can correctly integrate the packages) and **human-facing docs** (for developer onboarding and reference). Today these context files suffer from five interconnected problems: - -1. **Multiple contradicting sources of truth.** The same concept is described in different files with different phrasing, different defaults, and sometimes outright conflicting claims. For example, `allowA11yTriggers` defaults to `false` in one file and `true` in another; `ParallaxScroll` accepts a `speed` param in docs but the code uses `parallaxFactor`; trigger counts vary between 7, 8, and 9 depending on which file you read. A deep audit found **8 critical discrepancies** where docs would cause broken integrations, and **10 more significant ones**. -2. **No common structure.** Each package organizes its context differently. Interact has flat trigger-specific rule files plus two overlapping hub files; Motion has no rules at all; Motion-Presets has YAML-frontmatter rule files split by category. The docs folders vary in depth, naming, and section layout. There is no template or convention that applies across packages. -3. **Stale or incorrect information.** Defaults, param names, return types, and API signatures in the context files do not match the current implementation. There is no mechanism to detect this drift. -4. **Heavy repetition.** FOUC prevention is explained in 6 different files; element resolution order appears in 4; entry-point setup is repeated across every package's getting-started material. Each copy drifts independently. -5. **Broken links and scaffolding.** Over 36 internal links point to files that do not exist. Multiple sections are marked "TBD". README index pages link to planned-but-never-written guides. This erodes trust in the documentation for both humans and LLMs. - -Together, these create a **continuous development problem**: making any change to the context requires touching many files across multiple directories, producing large PRs that are hard to review and prone to introducing new inconsistencies. The cost of keeping context accurate compounds over time. - -### The idea - -Replace the current ad-hoc markdown files with a **structured, build-based system** where: - -- **Each piece of information is defined once** in a YAML glossary file (one per package). The glossary holds the data that is most prone to going stale: parameter names and types, default values, API signatures, term definitions (with separate LLM and human phrasings), and known caveats. -- **Markdown template files** provide the document structure and prose. They contain markers (e.g., `{{term:trigger-viewEnter.params-table}}`) where glossary data should be injected. Templates are authored separately for rules (compact, LLM-optimized) and docs (narrative, human-friendly). -- **A lightweight build script** reads the glossary and templates, performs marker replacement, and writes the final `rules/` and `docs/` output files. -- **A validation script** checks glossary entries against TypeScript source code, catching drift before it reaches the published context. - -This means: - -- Changing a default value or param name is a **one-line YAML edit** that propagates everywhere. -- Rules and docs always agree because they draw from the same data. -- The validation script catches code-vs-context drift in CI. -- Each package follows the same structure, making the system predictable and reviewable. - -### Why YAML for the glossary - -The glossary contains prose-heavy entries (descriptions, caveats) that humans will frequently hand-edit. YAML supports multi-line strings and inline comments natively, which makes authoring and PR review substantially easier than JSON. The motion-presets rules already use YAML frontmatter, so the pattern is familiar in this repo. Since the build script parses YAML into a plain JS object, switching to JSON later would be a trivial change. - -### Sequencing - -The migration is designed to proceed **one package at a time** (Interact, then Motion, then Motion-Presets), with each package's old context files replaced only after the new mechanism is fully built, validated, and reviewed. This keeps PRs scoped and reviewable, and ensures no package is left in a half-migrated state. - ---- - -## Audit Findings (Baseline) - -This section captures the findings from the deep analysis of all 72 context files across the three packages and their comparison against source code. These findings serve as the ground truth for the migration. - -### Current State Inventory - -**File counts:** - - -| Package | `rules/` files | `docs/` files | Total | -| -------------------------------------- | -------------- | ------------- | ------ | -| Interact (`@wix/interact`) | 7 | 26 | 33 | -| Motion (`@wix/motion`) | 0 | 20 | 20 | -| Motion-Presets (`@wix/motion-presets`) | 5 | 14 | 19 | -| **Total** | **12** | **60** | **72** | - - -**Structural asymmetry:** - -- **Interact** has both `rules/` (flat trigger-focused files: `click.md`, `hover.md`, `viewenter.md`, `viewprogress.md`, `pointermove.md`, plus two hub files `full-lean.md` at 692 lines and `integration.md` at 329 lines) and `docs/` (nested into `guides/`, `api/`, `examples/`, `integration/`, `advanced/`). -- **Motion** has only `docs/` (nested into `api/`, `categories/`, `guides/`, `examples/`) plus a stale internal `PLAN_DOCS.md`. No `rules/` directory exists at all. -- **Motion-Presets** has both `rules/` (5 files under `presets/` with YAML frontmatter, split by category) and `docs/` (14 files nested per category with individual preset pages). - -**Existing patterns for selective LLM reading:** - -- Interact rules: `## Table of Contents` with `#anchor` links; `---` thematic breaks between sections; no YAML frontmatter. -- Motion-Presets rules: YAML frontmatter with `name`/`description` (agent-loading hints); per-file TOCs down to per-preset anchors. -- Typical file sizes: 190-280 lines for single-trigger interact docs, 330 lines for integration hub, 690 lines for `full-lean`, 210-398 lines for presets rule files. - -### Discrepancies: Docs/Rules vs Code - -#### Critical (would cause broken integrations if an LLM follows the docs) - - -| # | Topic | What docs/rules say | What the code does | Source files | -| --- | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | -| 1 | `allowA11yTriggers` default | `rules/integration.md`: **false**; `docs/api/types.md`: **true** | Code: **true** -- `click` auto-maps to `activate`, `hover` to `interest` | `src/handlers/index.ts` | -| 2 | `ParallaxScroll` param name | All docs consistently use `**speed`** | Code: `**parallaxFactor`** (default `0.5`) | `motion-presets/src/library/scroll/ParallaxScroll.ts`, `types.ts` | -| 3 | `Pulse` intensity default | `docs/ongoing/pulse.md`: **1.0** | Code: **0** | `motion-presets/src/library/ongoing/Pulse.ts` | -| 4 | `ArcIn` default direction | `docs/entrance/arc-in.md`: `**'bottom'`** | Code: `**'right'`** | `motion-presets/src/library/entrance/ArcIn.ts` | -| 5 | `namedEffect` shape | Many docs use bare string: `namedEffect: 'FadeIn'` | Code requires object: `namedEffect: { type: 'FadeIn' }` | `motion/src/api/common.ts` `getNamedEffect` | -| 6 | `getCSSAnimation` return type | `api/core-functions.md`, `performance.md`: **string** | Code: **array of objects** `({ target, animation, keyframes, ... })` | `motion/src/api/cssAnimations.ts` | -| 7 | `AnimationEndParams.effectId` | Typed and documented as wiring mechanism | Handler **ignores it** (`__` param) | `interact/src/handlers/animationEnd.ts` | -| 8 | `viewProgress` params | `api/types.md` maps `viewProgress: ViewEnterParams` | Handler ignores those params; scroll options come from `Interact.setup({ scrollOptionsGetter })` | `interact/src/handlers/viewProgress.ts` | - - -#### Significant (causes confusion, may lead to subtle bugs) - - -| # | Topic | Discrepancy | -| --- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| 9 | Sticky/tall-wrapper ViewTimeline source | `viewprogress.md` Rule 3: `key` on tall wrapper = source. `full-lean.md`: sticky child = source. Contradicts itself. | -| 10 | Trigger count | `guides/README.md` says 7; `understanding-triggers.md` says 9; actual `TriggerType` union: **9** members | -| 11 | `pageVisible` trigger | Omitted from most trigger tables; only in `api/types.md`. Actually exists in code, uses viewEnter's IntersectionObserver handler | -| 12 | Mouse preset count | Rules: 9; `mouse/README.md`: 12; barrel export: **11** (plus CustomMouse = 12 total) | -| 13 | Ongoing preset count | `presets-main.md`: 14; `ongoing/README.md`: 16; barrel exports: **13**; DVD is not exported | -| 14 | Total preset count | Docs: "82+"; rules enumerate 61; barrel exports: **19 + 19 + 13 + 12 + 12 = 75** | -| 15 | Angle convention | `presets-main.md`: 0 = right; `_template.md`: 0 = up. Code: **0 = right** in most presets | -| 16 | `customEffect` signature | Varies: 2-arg in rules, 3-arg in some docs. Actual depends on context (time: `progress` number; pointer: `Progress { x, y, v, active }`) | -| 17 | `TurnScroll.rotation` param | Typed in `types.ts` but **ignored** in implementation (fixed +/-45deg) | -| 18 | `ParallaxScroll.range` param | Typed but **unused** in `ParallaxScroll.ts` implementation | - - -#### Minor (quality / completeness) - - -| # | Topic | -| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 19 | **36+ broken internal links** across all packages: references to nonexistent files like `testing.md`, `performance.md`, `playground/`, `scroll-animations.md`, etc. | -| 20 | **5+ TBD placeholder sections** in interact docs (`configuration-structure`, `effects-and-animations`, `state-management`, `lists`, `custom-elements`) | -| 21 | **Code typos in docs**: `sytle`, `hitAea`, `docuement`, `getScrgetWebAnimationubScene`, truncated/invalid snippets | -| 22 | `**unit` vs `type` for length objects**: rules use both `{ value, type: 'px' }` and `{ value, unit: 'px' }` interchangeably | -| 23 | `**Interact.getElement`** referenced in docs but does not exist as a public API | - - -### Repetition Analysis - -The same information is repeated across multiple files with inconsistent phrasing: - - -| Concept | Files that describe it | Copies | -| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | -| FOUC prevention (`generate` + `initial`) | `rules/integration.md`, `rules/viewenter.md`, `rules/full-lean.md`, `docs/api/functions.md`, `docs/examples/entrance-animations.md`, `docs/guides/getting-started.md` | 6 | -| Element resolution order | `rules/integration.md`, `rules/full-lean.md`, `docs/api/element-selection.md`, `docs/guides/configuration-structure.md` | 4 | -| Entry-point setup | `rules/integration.md`, `docs/README.md`, `docs/guides/getting-started.md`, `docs/integration/react.md` | 4 | -| Trigger inventory table | `rules/full-lean.md`, `rules/integration.md`, `docs/guides/understanding-triggers.md`, `docs/api/types.md` | 4 (with different counts) | -| `registerEffects` usage | motion `docs/getting-started.md`, interact `rules/integration.md`, presets `docs/presets/README.md`, presets `rules/presets-main.md` | 4 | -| Scroll range semantics | interact `rules/viewprogress.md`, presets `rules/scroll-presets.md`, motion `docs/core-concepts.md`, presets `docs/scroll/README.md` | 4 | -| Stagger/sequence formula | motion `docs/core-concepts.md`, `docs/api/sequence.md`, `docs/api/get-sequence.md`, interact `docs/guides/sequences.md` | 4 | -| Reduced motion / a11y | Described independently across ~8 files in all three packages | ~8 | - - -### Verified Ground Truth: What Each Package Actually Contains - -#### `@wix/interact` -- Declarative Interaction Layer - -**Entry points:** `@wix/interact` (vanilla), `@wix/interact/react`, `@wix/interact/web` - -**Exports:** - -- `Interact` class (static + instance API) -- Functions: `add`, `remove`, `generate` -- React: `Interaction` component, `createInteractRef` -- Web: `InteractElement` custom element (registered via `Interact.defineInteractElement`) - -**Config schema (`InteractConfig`):** `{ effects: Record, interactions: Interaction[], sequences?: Record, conditions?: Record }` - -**9 trigger types (from `TriggerType` union):** `hover`, `click`, `viewEnter`, `viewProgress`, `pointerMove`, `activate`, `interest`, `animationEnd`, `pageVisible` - -**Handler mappings (from `handlers/index.ts`):** - -- `viewEnter`, `pageVisible` -> IntersectionObserver handler -- `hover` -> `mouseenter`/`mouseleave` (or `interest` preset if `allowA11yTriggers`) -- `click` -> `['click']` (or `activate` preset if `allowA11yTriggers`) -- `activate` -> `['click', 'keydown']` -- `interest` -> enter: `mouseenter`+`focusin`, leave: `mouseleave`+`focusout` -- `animationEnd` -> listens on source `animationend`, plays on target -- `viewProgress` -> ViewTimeline scrub or `getScrubScene` fallback -- `pointerMove` -> `getScrubScene` + pointer library - -**3 effect types:** `TimeEffect` (has `duration`), `ScrubEffect` (has `rangeStart`/`rangeEnd`), `StateEffect` (has `transition`/`transitionProperties`) - -`**triggerType` values:** `'once' | 'repeat' | 'alternate' | 'state'`; defaults: `'once'` for viewEnter/pageVisible/animationEnd, `'alternate'` for hover/click/activate/interest - -`**stateAction` values:** `'add' | 'remove' | 'toggle' | 'clear'`; default: `'toggle'` - -**Condition types:** `'media' | 'container' | 'selector'` only (no `'custom'`) - -**Key param defaults:** - -- `ViewEnterParams.threshold`: `0.2` -- `PointerMoveParams.axis`: `'y'` -- `PointerMoveParams.hitArea`: undefined (covers document body) - -#### `@wix/motion` -- Core Animation Engine - -**Exported functions:** `getWebAnimation`, `getScrubScene`, `getCSSAnimation`, `prepareAnimation`, `getElementCSSAnimation`, `getElementAnimation`, `getSequence`, `createAnimationGroups`, `registerEffects` - -**Exported utilities:** `getCssUnits`, `getEasing`, `getJsEasing`, all Penner-style easings + `jsEasings`/`cssEasings` maps - -**Type-only exports (not constructable):** `AnimationGroup`, `Sequence` - -**Key behaviors:** - -- `getAnimation` (internal, used by interact): chooses CSS path (if preset has `style`) or WAAPI path (`getWebAnimation`) -- `getCSSAnimation` returns array of CSS rule descriptor objects, not a string -- ViewTimeline: native (`window.ViewTimeline`) with `duration: 'auto'`; fallback: `duration: 99.99` with manual scrub via `getScrubScene` -- Pointer: without keyframes uses factory `MouseAnimationInstance`; with keyframes uses `AnimationGroup.progress()` -- `registerEffects(effects)` merges into internal registry; presets resolve by `namedEffect.type` string -- `fastdom` used for DOM batching (measure/mutate), not re-exported - -`**AnimationGroup` API:** `play`, `pause`, `reverse`, `cancel`, `progress(p)`, `setPlaybackRate`, `getProgress`, `onFinish`, `ready`, `finished`, `playState` - -`**Sequence`:** extends `AnimationGroup`; stagger formula: `offset[i] = easing(i / last) * last * offsetMs` (integer-truncated); supports `addGroups`/`removeGroups` - -`**RangeOffset` names:** `'entry' | 'exit' | 'contain' | 'cover' | 'entry-crossing' | 'exit-crossing'` - -#### `@wix/motion-presets` -- Ready-Made Effects - -**5 categories, 75 exported presets (from barrel):** - -- **Entrance (19):** ArcIn, BlurIn, BounceIn, CurveIn, DropIn, ExpandIn, FadeIn, FlipIn, FloatIn, FoldIn, GlideIn, RevealIn, ShapeIn, ShuttersIn, SlideIn, SpinIn, TiltIn, TurnIn, WinkIn -- **Scroll (19):** ArcScroll, BlurScroll, FadeScroll, FlipScroll, GrowScroll, MoveScroll, PanScroll, ParallaxScroll, RevealScroll, ShapeScroll, ShuttersScroll, ShrinkScroll, SkewPanScroll, SlideScroll, Spin3dScroll, SpinScroll, StretchScroll, TiltScroll, TurnScroll -- **Ongoing (13):** Bounce, Breathe, Cross, Flash, Flip, Fold, Jello, Poke, Pulse, Rubber, Spin, Swing, Wiggle (DVD exists but is NOT barrel-exported) -- **Mouse (12):** AiryMouse, BlobMouse, BlurMouse, BounceMouse, CustomMouse, ScaleMouse, SkewMouse, SpinMouse, SwivelMouse, Tilt3DMouse, Track3DMouse, TrackMouse -- **Background Scroll (12):** BgCloseUp, BgFade, BgFadeBack, BgFake3D, BgPan, BgParallax, BgPullBack, BgReveal, BgRotate, BgSkew, BgZoom, ImageParallax - -**Registration:** `registerEffects` is in `@wix/motion`, not in this package. Presets are plain modules keyed by `namedEffect.type`. Typical usage: `registerEffects({ FadeIn, ParallaxScroll, ... })`. - -**Preset module shapes:** namespace with `web`/`style`/`getNames` (most), mouse presets export `create` factories, some presets have `prepare` (background-scroll). - -**Shared params:** All mouse presets share `inverted?: boolean` (default `false`). Scroll presets support `range?: 'in' | 'out' | 'continuous'` (default varies per preset). Ongoing presets support `iterationDelay?: number` (default `0`). - -**Angle convention in code:** 0 = right, counterclockwise increases (90 = top). - -**Known type-vs-implementation mismatches in presets:** - -- `TurnScroll.rotation`: typed but ignored (fixed +/-45deg) -- `ParallaxScroll.range`: typed but unused -- `DVD`: typed and implemented but not barrel-exported - -### Cross-Package Shared Concepts (need SSOT) - - -| Concept | Owner (should be SSOT) | Referenced by | -| ------------------------------------------------------ | ---------------------- | ----------------- | -| `registerEffects` API | motion | interact, presets | -| `AnimationGroup` / `Sequence` types | motion | interact | -| `namedEffect` shape (`{ type: '...' }`) | motion | interact, presets | -| Scroll ranges (`RangeOffset`, range names) | motion | interact, presets | -| Pointer progress (`Progress { x, y, v, active }`) | motion | interact, presets | -| `EffectScrollRange` (`in`/`out`/`continuous`) | presets | presets only | -| Direction type families (`EffectFourDirections`, etc.) | presets | presets only | -| Easing values (CSS + JS) | motion | interact, presets | -| `prefers-reduced-motion` pattern | interact | motion, presets | -| Length/unit convention (`{ value, type }`) | motion | presets | - - -### Build and Test Infrastructure (Existing) - -- **Monorepo:** Yarn 4 workspaces, no Turbo/Nx -- **Build:** Vite for library bundles, `tsc` for types -- **Unit tests:** Vitest in all three packages (`jsdom` environment for interact) -- **E2E:** Playwright exists for `@wix/motion` only (`packages/motion/e2e/`). Interact has a CI workflow referencing Playwright but no actual Playwright config or tests. -- **Docs deployment:** `apps/docs` copies `packages/interact/docs` into Vite dist via `scripts/copy-docs.js`. Rules are served raw from the docs app under `/rules/`. -- **No existing codegen, templating, or doc validation tooling** in the repo. - ---- - -## Recommendation: Glossary Format - -Use **YAML data files for structured/verifiable data** (parameter tables, defaults, type signatures, term definitions) combined with **markdown template files for prose and document structure**. A lightweight Node.js build script assembles the final rules/ and docs/ output. - -Why this over pure-markdown-with-frontmatter: - -- YAML is machine-parseable, so defaults and params can be **validated against TypeScript source** automatically -- The current rules already contain substantial structured data (param tables, trigger maps, preset catalogs) that maps naturally to YAML -- Prose stays in markdown where it belongs -- the YAML only holds the data that is prone to going stale -- motion-presets rules already use YAML frontmatter, so the pattern is familiar - -Why not a heavier templating system: - -- No existing codegen tooling in the repo; adding Handlebars/Nunjucks/etc. is overhead -- A simple marker-replacement script (find `{{glossary:term-id.field}}` in markdown, inject from YAML) is sufficient and easy to maintain - ---- - -## Directory Structure (per package) - -``` -packages// - context/ # NEW - single source of truth - glossary.yaml # All terms, params, defaults, descriptions - templates/ - rules/ # Markdown templates for LLM-facing output - overview.md # Template with {{markers}} for glossary data - ...per-package files... - docs/ # Markdown templates for human-facing output - README.md - guides/ - api/ - ... - rules/ # OUTPUT (generated, gitignored during dev) - docs/ # OUTPUT (generated, gitignored during dev) -``` - -A shared build script lives at the monorepo root: - -``` -scripts/ - build-context.js # Reads glossary YAML + templates, writes rules/ + docs/ - validate-context.js # Checks glossary data against TS source code -``` - -> **Open question for implementation:** Whether `rules/` and `docs/` should be gitignored (generated on CI) or committed (generated locally and checked in). The current `package.json` `"files"` field includes `"rules"` and `"docs"`, meaning they are published to npm. The simplest path is to **commit the generated output** and have CI verify it matches the source, similar to how lockfiles work. This avoids needing a pre-publish build step. Final decision deferred to implementation. - ---- - -## Glossary YAML Schema - -Each `glossary.yaml` contains entries like: - -```yaml -terms: - - id: trigger-viewEnter - name: viewEnter - category: trigger # trigger | effect-type | config | api | concept | preset - llm: "Fires when element crosses viewport threshold via IntersectionObserver." - human: "Triggers an animation when an element scrolls into the visible area of the page." - params: - - name: threshold - type: number - default: 0.2 - description: "Fraction of element that must be visible" - - name: inset - type: string - default: null - description: "Mapped to IntersectionObserver rootMargin" - caveats: - - "Same source+target: only triggerType 'once' is reliable" - sourceFile: src/types/triggers.ts # for validation - related: [trigger-pageVisible, concept-fouc] -``` - -Presets get a `presets` section (motion-presets only) with the same structure but preset-specific fields (`category: entrance|scroll|ongoing|mouse|backgroundScroll`, `triggerBinding`, etc.). - -> **Implementation note:** The exact YAML schema should be finalized during the Interact package phase after the full audit confirms which fields are actually needed. The schema above is a starting point. - ---- - -## Build Script Behavior - -`scripts/build-context.js`: - -1. For a given package, reads `context/glossary.yaml` -2. Reads each template file in `context/templates/rules/` and `context/templates/docs/` -3. Replaces markers like `{{term:trigger-viewEnter.params-table}}` with formatted markdown (table for params, inline text for descriptions, etc.) -4. Also supports `{{include:path/to/fragment.md}}` for shared prose blocks within the same package -5. Writes output to `rules/` and `docs/` - -`scripts/validate-context.js`: - -1. Reads `context/glossary.yaml` for a package -2. For each entry with a `sourceFile`, parses the TypeScript source (using regex or ts-morph -- to be decided during implementation) to extract: - - Type definitions (verify param names and types match) - - Default values in destructuring patterns (verify defaults match) -3. Reports mismatches as errors - -> **Scope constraint:** The build script should be simple -- under 300 lines. If the templating needs grow beyond simple marker replacement, reconsider the approach before adding complexity. - ---- - -## Phase 0: Infrastructure Setup - -Before any package migration, set up the shared tooling. - -### 0.1 Design the YAML glossary schema - -- Draft the schema based on the Interact package audit (from the previous conversation's findings) -- Decide on the marker syntax for templates (e.g., `{{term:id.field}}`, `{{table:id.params}}`) -- Decide on the set of "field renderers" needed (param-table, description, caveats-list, code-example) - -### 0.2 Build the context build script - -- `scripts/build-context.js` -- reads YAML, processes templates, writes output -- Must support running per-package: `node scripts/build-context.js --package interact` -- Add a `build:context` script to root `package.json` - -### 0.3 Build the validation script - -- `scripts/validate-context.js` -- reads YAML, checks against source -- Strategy for extracting ground truth from TS: Start with regex-based extraction of type members and destructuring defaults. If that proves brittle, evaluate [ts-morph](https://ts-morph.com/) (adds a devDep but is reliable). Decision deferred to implementation. -- Add a `validate:context` script to root `package.json` - -### 0.4 Decide on gitignore strategy - -- Test both approaches (committed vs generated) during Interact migration -- If committed: add a CI check that runs `build-context` and `git diff --exit-code` on the output - ---- - -## Phase 1: Interact Package (`@wix/interact`) - -### 1.1 Audit and verify ground truth - -Before writing any glossary entries, verify every claim in the current rules against the actual code. This is critical because the previous analysis found **8 critical discrepancies** and **10 significant ones**. - -**Verification approach:** Write ad-hoc Vitest tests (in a temporary test file, e.g., `packages/interact/test/context-audit.spec.ts`) that import source modules and assert the documented behavior. These tests serve as one-time verification and can be kept as regression tests afterward. - -Items to verify (from discrepancy list): - - -| # | What to verify | How | -| --- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| 1 | `allowA11yTriggers` default is `true` | Check `Interact` class static field and handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | -| 2 | `namedEffect` requires object `{ type: '...' }`, not bare string | Test that `getRegisteredEffect` resolves `{ type: 'FadeIn' }` but not `'FadeIn'` | -| 3 | All 9 trigger types exist in `TriggerType` union | Import and enumerate from [types/triggers.ts](packages/interact/src/types/triggers.ts) | -| 4 | `pageVisible` uses same handler as `viewEnter` | Check handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | -| 5 | `AnimationEndParams.effectId` is unused at runtime | Read [handlers/animationEnd.ts](packages/interact/src/handlers/animationEnd.ts) and verify the param is ignored | -| 6 | `viewProgress` handler ignores `ViewEnterParams` | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) | -| 7 | `triggerType` defaults: `'once'` for viewEnter, `'alternate'` for event triggers | Check [core/resolvers.ts](packages/interact/src/core/resolvers.ts) and handler code | -| 8 | `stateAction` default is `'toggle'` | Check [handlers/effectHandlers.ts](packages/interact/src/handlers/effectHandlers.ts) `createTransitionHandler` | -| 9 | `Condition.type` accepts only `'media' | 'container' | -| 10 | Sticky/tall-wrapper ViewTimeline: which element is the source | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) to determine actual behavior | -| 11 | Element resolution order (key cascade) | Read [core/Interact.ts](packages/interact/src/core/Interact.ts) `parseConfig` and [core/add.ts](packages/interact/src/core/add.ts) | -| 12 | `generate()` signature and return type | Import from [core/css.ts](packages/interact/src/core/css.ts) | - - -### 1.2 Create the Interact glossary - -Based on verified ground truth, populate `packages/interact/context/glossary.yaml` with entries for: - -**Categories and approximate entry counts:** - -- **Triggers** (9 entries): hover, click, viewEnter, viewProgress, pointerMove, activate, interest, animationEnd, pageVisible -- each with params, defaults, caveats -- **Effect types** (3 entries): TimeEffect, ScrubEffect, StateEffect -- each with all typed fields and defaults -- **Config types** (5-6 entries): InteractConfig, Interaction, Effect/EffectRef, SequenceConfig, Condition -- schema shapes -- **API** (8-10 entries): Interact.create, Interact.destroy, Interact.setup, add, remove, generate, Interact.registerEffects, Interact.getSequence, etc. -- signatures and behavior -- **Concepts** (5-6 entries): FOUC prevention, element resolution, a11y trigger mapping, conditions cascading, custom elements lifecycle -- **Enums/unions** (4-5 entries): triggerType (once/repeat/alternate/state), stateAction, Fill, CompositeOperation - -### 1.3 Design the Interact rules templates - -The current rules have two overlapping "hub" files (`full-lean.md` at 692 lines, `integration.md` at 329 lines) plus 5 trigger-specific files. The new structure should eliminate the overlap. - -**Proposed rules/ file set for Interact:** - - -| File | Purpose | Approx. lines | -| ------------- | ----------------------------------------------------------------------------------------- | ------------- | -| `overview.md` | Package purpose, entry points, imports, quick-start snippet | 60-80 | -| `config.md` | InteractConfig schema, Interaction shape, Effect/EffectRef, sequences, conditions | 150-200 | -| `triggers.md` | All 9 triggers: params, defaults, behavior, per-trigger caveats | 200-250 | -| `effects.md` | TimeEffect, ScrubEffect, StateEffect: fields, defaults, triggerType/stateAction semantics | 150-200 | -| `pitfalls.md` | FOUC, overflow:clip, same-element source+target, hit-area jitter, a11y mapping | 80-100 | - - -Each file gets: - -- YAML frontmatter (`name`, `description`) for agent-loading hints (matches existing presets pattern) -- A `## Table of Contents` with `#anchor` links for selective section reading -- `{{term:...}}` markers where glossary data should be injected - -**Key structural rule for LLM readability:** - -- Each file must be self-contained for its topic (no "see other file for the rest of this table") -- Cross-references between files use relative links but only for "related reading", never for completing a thought -- Param tables are compact: `| name | type | default | notes |` -- one row per param, no verbose descriptions -- Code examples are minimal (3-8 lines) and correct - -### 1.4 Design the Interact docs templates - -The current docs have 26 files but many are scaffolding (broken links, TBD sections, placeholder READMEs linking to nonexistent files). The new structure should contain only files with actual content. - -**Proposed docs/ file set for Interact:** - - -| File | Purpose | -| --------------------------- | ------------------------------------------------------- | -| `README.md` | Getting started, install, entry points, navigation | -| `guides/configuration.md` | Config structure explained for humans | -| `guides/triggers.md` | Trigger concepts, choosing triggers, combining triggers | -| `guides/effects.md` | Effect types explained, when to use which | -| `guides/sequences.md` | Sequence math, staggering, list integration | -| `guides/conditions.md` | Media queries, container queries, selector conditions | -| `guides/fouc.md` | FOUC prevention guide (generate + initial) | -| `guides/custom-elements.md` | `` usage and lifecycle | -| `api/README.md` | API overview and imports | -| `api/interact-class.md` | Static + instance methods | -| `api/functions.md` | add, remove, generate | -| `api/types.md` | Type reference | -| `integration/react.md` | React-specific guide | -| `examples/entrance.md` | Entrance animation recipes | -| `examples/hover-click.md` | Hover and click interaction recipes | - - -All other current files (broken-link READMEs, TBD placeholders, the nonexistent targets) are **dropped**. Content from `full-lean.md` that overlaps with docs is reconciled -- the rules version becomes the SSOT; the docs version becomes a prose rewrite of the same data. - -### 1.5 Build and validate - -1. Run `node scripts/build-context.js --package interact` to generate `rules/` and `docs/` -2. Run `node scripts/validate-context.js --package interact` to verify glossary against source -3. Manually review generated rules for LLM readability: - - Are tables compact and scannable? - - Can an LLM read just `triggers.md` and get everything it needs about triggers? - - Is the TOC + anchor pattern working for selective section reading? -4. Run the existing `apps/docs` build to verify docs still copy correctly - -### 1.6 Replace and verify - -1. Back up current `rules/` and `docs/` (they are in git, so this is just a safety step) -2. Replace with generated output -3. Run existing Vitest tests (`yarn workspace @wix/interact test`) to ensure nothing depends on specific rules/docs file paths internally -4. Verify `apps/docs` build still works (it copies from `packages/interact/docs`) -5. Verify the docs app `copy-docs.js` script handles the new file structure -6. Keep the `context-audit.spec.ts` tests as ongoing regression - ---- - -## Phase 2: Motion Package (`@wix/motion`) - -### 2.1 Audit and verify ground truth - -Motion currently has **no rules/** directory. Its docs have significant issues: `getCSSAnimation` return type is wrong in multiple files, `TriggerVariant` shape differs between tutorial and type docs, preset counts don't match, and several linked files don't exist. - -**Key items to verify:** - - -| # | What to verify | -| --- | -------------------------------------------------------------------------- | -| 1 | `getCSSAnimation` return type (array of objects, not string) | -| 2 | `AnimationGroup` is type-only export (not constructable by consumers) | -| 3 | `getWebAnimation` signature and return type union | -| 4 | `getScrubScene` signature, scroll vs pointer branches | -| 5 | `TriggerVariant` actual shape (`id`, `trigger`, `componentId`, `element?`) | -| 6 | `Sequence` stagger formula | -| 7 | `RangeOffset` range name enum | -| 8 | `prepareAnimation` behavior and `DomApi` contract | -| 9 | `CustomAnimation` rAF loop behavior for `customEffect` | -| 10 | ViewTimeline detection and fallback path | - - -### 2.2 Create glossary, templates, build, replace - -Same pattern as Interact: - -- `packages/motion/context/glossary.yaml` -- API functions, animation types, scroll/pointer concepts, `AnimationGroup`/`Sequence` APIs -- **New `rules/` directory** (Motion currently lacks one): `overview.md`, `api.md`, `animation-types.md`, `pitfalls.md` -- Restructured `docs/` -- drop `PLAN_DOCS.md`, fix or remove broken links, remove nonexistent targets, consolidate category docs that overlap with motion-presets docs - -**Important:** Motion's `docs/categories/` files (entrance-animations.md, scroll-animations.md, etc.) overlap heavily with motion-presets docs. These should be **removed or reduced to pointers** -- the preset details belong in motion-presets. Motion docs should cover the **engine API**, not preset catalogs. - ---- - -## Phase 3: Motion-Presets Package (`@wix/motion-presets`) - -### 3.1 Audit and verify ground truth - -Motion-presets rules are the most structured of the three (YAML frontmatter, per-category files), but have known data errors. - -**Key items to verify:** - - -| # | What to verify | -| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | All preset names match barrel exports (currently 19+19+13+11+12 = 74) | -| 2 | Per-preset params and defaults match implementation (ParallaxScroll `parallaxFactor` not `speed`, ArcIn default `'right'` not `'bottom'`, Pulse intensity default `0` not `1.0`) | -| 3 | Mouse preset count (11 exported, not 9 or 12) | -| 4 | DVD is NOT exported from barrel | -| 5 | Angle convention is 0 = right (not up) | -| 6 | `range` param on ParallaxScroll is typed but unused | -| 7 | `TurnScroll.rotation` is typed but unused | -| 8 | Background-scroll `data-motion-part` values and targeting | - - -**Verification approach:** For presets, the most effective verification is a script that: - -- Imports all barrel exports from `@wix/motion-presets` -- For each, checks it matches the glossary entry (name, category) -- For param defaults, reads the source destructuring patterns - -This can be a Vitest test file that programmatically checks all presets. - -### 3.2 Create glossary, templates, build, replace - -- `packages/motion-presets/context/glossary.yaml` -- includes a `presets` section with every preset's params and defaults -- **Rules:** Keep the current split-by-category approach (it works well) but generate tables from glossary: `overview.md`, `entrance.md`, `scroll.md`, `ongoing.md`, `mouse.md`, `background-scroll.md` -- **Docs:** Per-preset pages only for presets that warrant detailed explanation (not all 74 need a dedicated page). Category READMEs with param tables generated from glossary. Drop broken-link placeholder pages. - -### 3.3 Cross-package validation - -After all three packages are migrated: - -- Verify cross-package references (interact rules referencing motion concepts, presets referencing motion API) -- Ensure `registerEffects` is described consistently: defined in motion glossary, referenced in interact and presets -- Ensure shared concepts (scroll ranges, pointer progress, namedEffect shape) use the same terminology everywhere - ---- - -## Sequencing and Safety - -```mermaid -flowchart TD - P0[Phase 0: Build tooling] --> P1A[1.1: Audit Interact ground truth] - P1A --> P1B[1.2: Create Interact glossary] - P1B --> P1C[1.3-1.4: Create templates] - P1C --> P1D[1.5: Build and validate] - P1D --> P1E{Output matches expectations?} - P1E -->|No| P1C - P1E -->|Yes| P1F[1.6: Replace Interact rules+docs] - P1F --> P2A[2.1: Audit Motion ground truth] - P2A --> P2B[2.2: Create Motion glossary + templates + replace] - P2B --> P3A[3.1: Audit Presets ground truth] - P3A --> P3B[3.2: Create Presets glossary + templates + replace] - P3B --> P3C[3.3: Cross-package validation] -``` - - - -**Safety rule:** The old `rules/` and `docs/` files for a package are only deleted/replaced after: - -1. The new glossary is validated against source code -2. The build script produces output that passes manual review -3. Existing tests still pass -4. The docs app build still works (for interact) - -Each phase is a separate PR (or set of PRs) that can be reviewed independently. \ No newline at end of file From cf0023f1645c7f7ded1f7708d1c9ad36d745274f Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 15:32:29 +0300 Subject: [PATCH 14/18] updating plan and pulling master --- .../context_ssot_restructure_c6889ec0.plan.md | 100 ++++++++++++++---- 1 file changed, 82 insertions(+), 18 deletions(-) diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md index 57df80f3..9d50f863 100644 --- a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -1,49 +1,113 @@ --- name: Context SSOT Restructure -overview: "Restructure the rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a single-source-of-truth system where structured data (params, defaults, types, term definitions) lives in YAML glossary files, and final markdown outputs are assembled by a lightweight build script. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets." +overview: 'Restructure rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a SSOT system where structured data (params, defaults, types) lives in per-package YAML context files, and markdown outputs are produced by JS render functions in a build script. The template IS the build script — no marker-syntax template files, no TypeScript AST parsing. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets.' todos: - id: phase-0-schema - content: Design YAML glossary schema and marker syntax for templates + content: 'Design per-output YAML schemas (one schema per output file shape, not a generic term schema) and plan render function signatures' + status: pending + - id: phase-0-render-helpers + content: 'Write scripts/render/params-table.mjs (renderParamsTable) and scripts/render/io.mjs (readYaml, readFragment, writeOutput)' status: pending - id: phase-0-build - content: Build scripts/build-context.js (YAML + templates -> rules/ and docs/ markdown) + content: 'Write scripts/build-context.mjs: reads YAML, calls JS render functions (template literals), writes .md output — one YAML per output file, no CLI flags' status: pending - id: phase-0-validate - content: Build scripts/validate-context.js (check glossary data against TypeScript source) + content: 'Write scripts/validate-context.spec.mjs: Vitest string assertions only — readFileSync source .ts and check expected strings appear; no ts-morph, no TypeScript AST' status: pending - id: phase-1-audit - content: "Interact: Audit and verify all ground truth claims via ad-hoc Vitest tests" + content: 'Interact: Audit packages/interact/rules/*.md for factual accuracy (params, defaults, types) against source; note any drifts' status: pending - id: phase-1-glossary - content: "Interact: Create context/glossary.yaml with all verified terms, params, defaults" - status: pending - - id: phase-1-rules-templates - content: "Interact: Create rules template files (overview, config, triggers, effects, pitfalls)" + content: 'Interact: Write packages/interact/context/triggers.yaml — all 5 triggers, params, defaults, verified against source' status: pending - - id: phase-1-docs-templates - content: "Interact: Create docs template files (guides, api, integration, examples)" + - id: phase-1-render + content: 'Interact: Write render functions for interact rules in scripts/render/interact.mjs; no separate .md template files with markers' status: pending - id: phase-1-build-validate - content: "Interact: Run build + validate, iterate until output is correct and readable" + content: 'Interact: Run build + validate, iterate until output matches current rules/ content and reads correctly' status: pending - id: phase-1-replace - content: "Interact: Replace old rules/ and docs/ with generated output, verify all builds pass" + content: 'Interact: Replace rules/ with generated output, verify all builds pass' status: pending - id: phase-2-audit - content: "Motion: Audit and verify ground truth (API signatures, return types, scroll/pointer)" + content: 'Motion: Audit API signatures, return types, scroll/pointer APIs in packages/motion/docs/ and source' status: pending - id: phase-2-migrate - content: "Motion: Create glossary, templates, build, and replace (add new rules/ dir)" + content: 'Motion: Write packages/motion/context/api.yaml, render functions, produce new packages/motion/rules/; add motion rules to llms.txt/llms-full.txt' + status: pending + - id: phase-3-decision + content: 'Motion-Presets: Decide on background-scroll category fate (remove entirely or fully support with static-styling/resize handling) — gates all other phase-3 work' status: pending - id: phase-3-audit - content: "Motion-Presets: Audit all 74 presets params/defaults against source" + content: "Motion-Presets: Verify ground truth for all 62 presets post PR #237 (19 entrance + 19 scroll + 13 ongoing + 11 mouse); fix docs/presets/README.md stale counts (82+ → 62, ongoing 16 → 13, mouse 12 → 11, remove emoji headers); audit all docs/ files for unit key ('unit' not 'type')" status: pending - id: phase-3-migrate - content: "Motion-Presets: Create glossary, templates, build, and replace" + content: 'Motion-Presets: Write 4 YAML context files (entrance/scroll/ongoing/mouse) using PR #237 verified data as ground truth; render into rules/presets/*.md; extend generate-llms.mjs to include motion-presets rules in llms.txt/llms-full.txt' status: pending - id: phase-3-cross-validate - content: "Cross-package validation: verify shared concepts are consistent across all three packages" + content: "Cross-package: Vitest spec checking unit key is 'unit' not 'type' across all YAML and output files, preset counts sum to 62, no preset name duplicated across category YAMLs, shared concepts consistent across all three packages" status: pending isProject: false --- +## Anti-Rabbit-Hole Constraints + +Enforce at every step. If you find yourself violating one of these, stop and reconsider: + +1. **No TypeScript compilation in the build script.** To verify a default value against source, write a Vitest test: `expect(readFileSync(tsPath, 'utf-8')).toContain(expectedString)`. If you find yourself importing `ts-morph` or `typescript`, stop. +2. **No template files with marker syntax.** Write a JS function instead. Markdown structure lives in template literal strings in `.mjs` files, not in `.md` files with `{{placeholders}}`. +3. **No include directives.** Shared prose (atmosphere guide, accessibility, cross-category parallels) is either a static `.md` fragment read via `readFileSync` and concatenated, or a JS constant string in the render module — never a `{{include:path}}` directive. +4. **One YAML file per output file, matching names.** `context/ongoing.yaml` → `rules/presets/ongoing-presets.md`. No routing tables, no glob patterns over output directories. +5. **YAML schema fields are defined by what is rendered, not by TypeScript types.** If a field isn't rendered, it is not in the schema. +6. **No CLI flags on the build script.** `node scripts/build-context.mjs` produces all outputs and exits. + +## Architecture + +**Data:** Per-package YAML context files co-located with each package: + +``` +packages/motion-presets/context/ongoing.yaml +packages/motion-presets/context/entrance.yaml +packages/interact/context/triggers.yaml +packages/motion/context/api.yaml +``` + +**Render:** JS functions in `scripts/render/*.mjs` that take data objects and return markdown strings via template literals. No external template engine. + +**Static fragments:** Narrative prose that does not vary per-term (atmosphere guide, accessibility, cross-category parallels) lives as plain `.md` fragment files under the package's `context/fragments/` directory and is concatenated by the build script without any marker processing. + +**Build:** `scripts/build-context.mjs` — reads YAML, calls render functions, writes output files. One command produces all outputs. + +**Validation:** `scripts/validate-context.spec.mjs` — Vitest tests using `readFileSync` + string assertions against source `.ts` files. Runs after build to verify facts. + +## Audit Notes (post PR #237) + +### Motion-Presets + +Verified preset counts after PR #237 merges: + +| Category | Count | Notes | +| --------- | ------ | ------------------------------------------------------------------------------------------- | +| Entrance | 19 | Unchanged | +| Scroll | 19 | Unchanged | +| Ongoing | 13 | DVD removed (can't handle non-infinite iterations, not stylable, relies on container edges) | +| Mouse | 11 | BounceMouse and SpinMouse added | +| **Total** | **62** | Not 73 or 82+ | + +Other fixes landed in PR #237: + +- **Unit key corrected:** `{ value: N, unit: 'px' }` not `{ value: N, type: 'px' }` — verify this is propagated to all `docs/` files (not just `rules/`) +- **`MoveScroll`** removed from the angle-direction overloads table in `presets-main.md` (does not take a numeric angle) +- **`iterationDelay`** available on all ongoing presets (no longer "except DVD") +- **Cross-category parallels** updated: BounceMouse and SpinMouse columns added + +`docs/presets/README.md` remaining stale items (to fix in phase-3-audit): + +- Claims "82+ animation presets" → should be 62 +- Claims 16 ongoing presets → 13 +- Claims 12 mouse presets → 11 +- Uses emoji headers — inconsistent with rules and new README style + +`presets-main.md` post-PR #237: + +- Categories table still lists background-scroll — update after phase-3-decision From b59727324a899da597914c1bc885fc08ac0017fa Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 15:44:27 +0300 Subject: [PATCH 15/18] updating plan --- .../context_ssot_restructure_c6889ec0.plan.md | 669 ++++++++++++++++-- 1 file changed, 607 insertions(+), 62 deletions(-) diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md index 9d50f863..1f639ec9 100644 --- a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -1,113 +1,658 @@ --- name: Context SSOT Restructure -overview: 'Restructure rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a SSOT system where structured data (params, defaults, types) lives in per-package YAML context files, and markdown outputs are produced by JS render functions in a build script. The template IS the build script — no marker-syntax template files, no TypeScript AST parsing. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets.' +overview: "Restructure the rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a single-source-of-truth system where structured data (params, defaults, types, term definitions) lives in YAML glossary files, and final markdown outputs are assembled by a lightweight build script. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets." todos: - id: phase-0-schema - content: 'Design per-output YAML schemas (one schema per output file shape, not a generic term schema) and plan render function signatures' - status: pending - - id: phase-0-render-helpers - content: 'Write scripts/render/params-table.mjs (renderParamsTable) and scripts/render/io.mjs (readYaml, readFragment, writeOutput)' - status: pending + content: Design YAML glossary schema and marker syntax for templates + status: completed - id: phase-0-build - content: 'Write scripts/build-context.mjs: reads YAML, calls JS render functions (template literals), writes .md output — one YAML per output file, no CLI flags' + content: Build scripts/build-context.js (YAML + templates -> rules/ and docs/ markdown) status: pending - id: phase-0-validate - content: 'Write scripts/validate-context.spec.mjs: Vitest string assertions only — readFileSync source .ts and check expected strings appear; no ts-morph, no TypeScript AST' + content: Build scripts/validate-context.js (check glossary data against TypeScript source) status: pending - id: phase-1-audit - content: 'Interact: Audit packages/interact/rules/*.md for factual accuracy (params, defaults, types) against source; note any drifts' + content: "Interact: Audit and verify all ground truth claims via ad-hoc Vitest tests" status: pending - id: phase-1-glossary - content: 'Interact: Write packages/interact/context/triggers.yaml — all 5 triggers, params, defaults, verified against source' + content: "Interact: Create context/glossary.yaml with all verified terms, params, defaults" + status: pending + - id: phase-1-rules-templates + content: "Interact: Create rules template files (overview, config, triggers, effects, pitfalls)" status: pending - - id: phase-1-render - content: 'Interact: Write render functions for interact rules in scripts/render/interact.mjs; no separate .md template files with markers' + - id: phase-1-docs-templates + content: "Interact: Create docs template files (guides, api, integration, examples)" status: pending - id: phase-1-build-validate - content: 'Interact: Run build + validate, iterate until output matches current rules/ content and reads correctly' + content: "Interact: Run build + validate, iterate until output is correct and readable" status: pending - id: phase-1-replace - content: 'Interact: Replace rules/ with generated output, verify all builds pass' + content: "Interact: Replace old rules/ and docs/ with generated output, verify all builds pass" status: pending - id: phase-2-audit - content: 'Motion: Audit API signatures, return types, scroll/pointer APIs in packages/motion/docs/ and source' + content: "Motion: Audit and verify ground truth (API signatures, return types, scroll/pointer)" status: pending - id: phase-2-migrate - content: 'Motion: Write packages/motion/context/api.yaml, render functions, produce new packages/motion/rules/; add motion rules to llms.txt/llms-full.txt' - status: pending - - id: phase-3-decision - content: 'Motion-Presets: Decide on background-scroll category fate (remove entirely or fully support with static-styling/resize handling) — gates all other phase-3 work' + content: "Motion: Create glossary, templates, build, and replace (add new rules/ dir)" status: pending - id: phase-3-audit - content: "Motion-Presets: Verify ground truth for all 62 presets post PR #237 (19 entrance + 19 scroll + 13 ongoing + 11 mouse); fix docs/presets/README.md stale counts (82+ → 62, ongoing 16 → 13, mouse 12 → 11, remove emoji headers); audit all docs/ files for unit key ('unit' not 'type')" + content: "Motion-Presets: Audit all 74 presets params/defaults against source" status: pending - id: phase-3-migrate - content: 'Motion-Presets: Write 4 YAML context files (entrance/scroll/ongoing/mouse) using PR #237 verified data as ground truth; render into rules/presets/*.md; extend generate-llms.mjs to include motion-presets rules in llms.txt/llms-full.txt' + content: "Motion-Presets: Create glossary, templates, build, and replace" status: pending - id: phase-3-cross-validate - content: "Cross-package: Vitest spec checking unit key is 'unit' not 'type' across all YAML and output files, preset counts sum to 62, no preset name duplicated across category YAMLs, shared concepts consistent across all three packages" + content: "Cross-package validation: verify shared concepts are consistent across all three packages" status: pending isProject: false --- -## Anti-Rabbit-Hole Constraints +# Context SSOT Restructure + +## Motivation and Idea + +### The problem + +This monorepo publishes three packages (`@wix/interact`, `@wix/motion`, `@wix/motion-presets`) alongside context files designed for two audiences: **LLM-facing rules** (so AI agents can correctly integrate the packages) and **human-facing docs** (for developer onboarding and reference). Today these context files suffer from five interconnected problems: + +1. **Multiple contradicting sources of truth.** The same concept is described in different files with different phrasing, different defaults, and sometimes outright conflicting claims. For example, `allowA11yTriggers` defaults to `false` in one file and `true` in another; `ParallaxScroll` accepts a `speed` param in docs but the code uses `parallaxFactor`; trigger counts vary between 7, 8, and 9 depending on which file you read. A deep audit found **8 critical discrepancies** where docs would cause broken integrations, and **10 more significant ones**. +2. **No common structure.** Each package organizes its context differently. Interact has flat trigger-specific rule files plus two overlapping hub files; Motion has no rules at all; Motion-Presets has YAML-frontmatter rule files split by category. The docs folders vary in depth, naming, and section layout. There is no template or convention that applies across packages. +3. **Stale or incorrect information.** Defaults, param names, return types, and API signatures in the context files do not match the current implementation. There is no mechanism to detect this drift. +4. **Heavy repetition.** FOUC prevention is explained in 6 different files; element resolution order appears in 4; entry-point setup is repeated across every package's getting-started material. Each copy drifts independently. +5. **Broken links and scaffolding.** Over 36 internal links point to files that do not exist. Multiple sections are marked "TBD". README index pages link to planned-but-never-written guides. This erodes trust in the documentation for both humans and LLMs. + +Together, these create a **continuous development problem**: making any change to the context requires touching many files across multiple directories, producing large PRs that are hard to review and prone to introducing new inconsistencies. The cost of keeping context accurate compounds over time. + +### The idea + +Replace the current ad-hoc markdown files with a **structured, build-based system** where: + +- **Each piece of information is defined once** in a YAML glossary file (one per package). The glossary holds the data that is most prone to going stale: parameter names and types, default values, API signatures, term definitions (with separate LLM and human phrasings), and known caveats. +- **Markdown template files** provide the document structure and prose. They contain markers (e.g., `{{term:trigger-viewEnter.params-table}}`) where glossary data should be injected. Templates are authored separately for rules (compact, LLM-optimized) and docs (narrative, human-friendly). +- **A lightweight build script** reads the glossary and templates, performs marker replacement, and writes the final `rules/` and `docs/` output files. +- **A validation script** checks glossary entries against TypeScript source code, catching drift before it reaches the published context. + +This means: + +- Changing a default value or param name is a **one-line YAML edit** that propagates everywhere. +- Rules and docs always agree because they draw from the same data. +- The validation script catches code-vs-context drift in CI. +- Each package follows the same structure, making the system predictable and reviewable. + +### Why YAML for the glossary + +The glossary contains prose-heavy entries (descriptions, caveats) that humans will frequently hand-edit. YAML supports multi-line strings and inline comments natively, which makes authoring and PR review substantially easier than JSON. The motion-presets rules already use YAML frontmatter, so the pattern is familiar in this repo. Since the build script parses YAML into a plain JS object, switching to JSON later would be a trivial change. + +### Sequencing + +The migration is designed to proceed **one package at a time** (Interact, then Motion, then Motion-Presets), with each package's old context files replaced only after the new mechanism is fully built, validated, and reviewed. This keeps PRs scoped and reviewable, and ensures no package is left in a half-migrated state. + +--- + +## Audit Findings (Baseline) + +This section captures the findings from the deep analysis of all 72 context files across the three packages and their comparison against source code. These findings serve as the ground truth for the migration. + +### Current State Inventory + +**File counts:** + + +| Package | `rules/` files | `docs/` files | Total | +| -------------------------------------- | -------------- | ------------- | ------ | +| Interact (`@wix/interact`) | 7 | 26 | 33 | +| Motion (`@wix/motion`) | 0 | 20 | 20 | +| Motion-Presets (`@wix/motion-presets`) | 5 | 14 | 19 | +| **Total** | **12** | **60** | **72** | + + +**Structural asymmetry:** + +- **Interact** has both `rules/` (flat trigger-focused files: `click.md`, `hover.md`, `viewenter.md`, `viewprogress.md`, `pointermove.md`, plus two hub files `full-lean.md` at 692 lines and `integration.md` at 329 lines) and `docs/` (nested into `guides/`, `api/`, `examples/`, `integration/`, `advanced/`). +- **Motion** has only `docs/` (nested into `api/`, `categories/`, `guides/`, `examples/`) plus a stale internal `PLAN_DOCS.md`. No `rules/` directory exists at all. +- **Motion-Presets** has both `rules/` (5 files under `presets/` with YAML frontmatter, split by category) and `docs/` (14 files nested per category with individual preset pages). + +**Existing patterns for selective LLM reading:** + +- Interact rules: `## Table of Contents` with `#anchor` links; `---` thematic breaks between sections; no YAML frontmatter. +- Motion-Presets rules: YAML frontmatter with `name`/`description` (agent-loading hints); per-file TOCs down to per-preset anchors. +- Typical file sizes: 190-280 lines for single-trigger interact docs, 330 lines for integration hub, 690 lines for `full-lean`, 210-398 lines for presets rule files. + +### Discrepancies: Docs/Rules vs Code + +#### Critical (would cause broken integrations if an LLM follows the docs) + + +| # | Topic | What docs/rules say | What the code does | Source files | +| --- | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | +| 1 | `allowA11yTriggers` default | `rules/integration.md`: **false**; `docs/api/types.md`: **true** | Code: **true** -- `click` auto-maps to `activate`, `hover` to `interest` | `src/handlers/index.ts` | +| 2 | `ParallaxScroll` param name | All docs consistently use `**speed`** | Code: `**parallaxFactor`** (default `0.5`) | `motion-presets/src/library/scroll/ParallaxScroll.ts`, `types.ts` | +| 3 | `Pulse` intensity default | `docs/ongoing/pulse.md`: **1.0** | Code: **0** | `motion-presets/src/library/ongoing/Pulse.ts` | +| 4 | `ArcIn` default direction | `docs/entrance/arc-in.md`: `**'bottom'`** | Code: `**'right'`** | `motion-presets/src/library/entrance/ArcIn.ts` | +| 5 | `namedEffect` shape | Many docs use bare string: `namedEffect: 'FadeIn'` | Code requires object: `namedEffect: { type: 'FadeIn' }` | `motion/src/api/common.ts` `getNamedEffect` | +| 6 | `getCSSAnimation` return type | `api/core-functions.md`, `performance.md`: **string** | Code: **array of objects** `({ target, animation, keyframes, ... })` | `motion/src/api/cssAnimations.ts` | +| 7 | `AnimationEndParams.effectId` | Typed and documented as wiring mechanism | Handler **ignores it** (`__` param) | `interact/src/handlers/animationEnd.ts` | +| 8 | `viewProgress` params | `api/types.md` maps `viewProgress: ViewEnterParams` | Handler ignores those params; scroll options come from `Interact.setup({ scrollOptionsGetter })` | `interact/src/handlers/viewProgress.ts` | + + +#### Significant (causes confusion, may lead to subtle bugs) + + +| # | Topic | Discrepancy | +| --- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| 9 | Sticky/tall-wrapper ViewTimeline source | `viewprogress.md` Rule 3: `key` on tall wrapper = source. `full-lean.md`: sticky child = source. Contradicts itself. | +| 10 | Trigger count | `guides/README.md` says 7; `understanding-triggers.md` says 9; actual `TriggerType` union: **9** members | +| 11 | `pageVisible` trigger | Omitted from most trigger tables; only in `api/types.md`. Actually exists in code, uses viewEnter's IntersectionObserver handler | +| 12 | Mouse preset count | Rules: 9; `mouse/README.md`: 12; barrel export: **11** (plus CustomMouse = 12 total) | +| 13 | Ongoing preset count | `presets-main.md`: 14; `ongoing/README.md`: 16; barrel exports: **13**; DVD is not exported | +| 14 | Total preset count | Docs: "82+"; rules enumerate 61; barrel exports: **19 + 19 + 13 + 12 + 12 = 75** | +| 15 | Angle convention | `presets-main.md`: 0 = right; `_template.md`: 0 = up. Code: **0 = right** in most presets | +| 16 | `customEffect` signature | Varies: 2-arg in rules, 3-arg in some docs. Actual depends on context (time: `progress` number; pointer: `Progress { x, y, v, active }`) | +| 17 | `TurnScroll.rotation` param | Typed in `types.ts` but **ignored** in implementation (fixed +/-45deg) | +| 18 | `ParallaxScroll.range` param | Typed but **unused** in `ParallaxScroll.ts` implementation | + + +#### Minor (quality / completeness) + + +| # | Topic | +| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 19 | **36+ broken internal links** across all packages: references to nonexistent files like `testing.md`, `performance.md`, `playground/`, `scroll-animations.md`, etc. | +| 20 | **5+ TBD placeholder sections** in interact docs (`configuration-structure`, `effects-and-animations`, `state-management`, `lists`, `custom-elements`) | +| 21 | **Code typos in docs**: `sytle`, `hitAea`, `docuement`, `getScrgetWebAnimationubScene`, truncated/invalid snippets | +| 22 | `**unit` vs `type` for length objects**: rules use both `{ value, type: 'px' }` and `{ value, unit: 'px' }` interchangeably | +| 23 | `**Interact.getElement`** referenced in docs but does not exist as a public API | + + +### Repetition Analysis + +The same information is repeated across multiple files with inconsistent phrasing: + + +| Concept | Files that describe it | Copies | +| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | +| FOUC prevention (`generate` + `initial`) | `rules/integration.md`, `rules/viewenter.md`, `rules/full-lean.md`, `docs/api/functions.md`, `docs/examples/entrance-animations.md`, `docs/guides/getting-started.md` | 6 | +| Element resolution order | `rules/integration.md`, `rules/full-lean.md`, `docs/api/element-selection.md`, `docs/guides/configuration-structure.md` | 4 | +| Entry-point setup | `rules/integration.md`, `docs/README.md`, `docs/guides/getting-started.md`, `docs/integration/react.md` | 4 | +| Trigger inventory table | `rules/full-lean.md`, `rules/integration.md`, `docs/guides/understanding-triggers.md`, `docs/api/types.md` | 4 (with different counts) | +| `registerEffects` usage | motion `docs/getting-started.md`, interact `rules/integration.md`, presets `docs/presets/README.md`, presets `rules/presets-main.md` | 4 | +| Scroll range semantics | interact `rules/viewprogress.md`, presets `rules/scroll-presets.md`, motion `docs/core-concepts.md`, presets `docs/scroll/README.md` | 4 | +| Stagger/sequence formula | motion `docs/core-concepts.md`, `docs/api/sequence.md`, `docs/api/get-sequence.md`, interact `docs/guides/sequences.md` | 4 | +| Reduced motion / a11y | Described independently across ~8 files in all three packages | ~8 | -Enforce at every step. If you find yourself violating one of these, stop and reconsider: -1. **No TypeScript compilation in the build script.** To verify a default value against source, write a Vitest test: `expect(readFileSync(tsPath, 'utf-8')).toContain(expectedString)`. If you find yourself importing `ts-morph` or `typescript`, stop. -2. **No template files with marker syntax.** Write a JS function instead. Markdown structure lives in template literal strings in `.mjs` files, not in `.md` files with `{{placeholders}}`. -3. **No include directives.** Shared prose (atmosphere guide, accessibility, cross-category parallels) is either a static `.md` fragment read via `readFileSync` and concatenated, or a JS constant string in the render module — never a `{{include:path}}` directive. -4. **One YAML file per output file, matching names.** `context/ongoing.yaml` → `rules/presets/ongoing-presets.md`. No routing tables, no glob patterns over output directories. -5. **YAML schema fields are defined by what is rendered, not by TypeScript types.** If a field isn't rendered, it is not in the schema. -6. **No CLI flags on the build script.** `node scripts/build-context.mjs` produces all outputs and exits. +### Verified Ground Truth: What Each Package Actually Contains -## Architecture +#### `@wix/interact` -- Declarative Interaction Layer + +**Entry points:** `@wix/interact` (vanilla), `@wix/interact/react`, `@wix/interact/web` + +**Exports:** + +- `Interact` class (static + instance API) +- Functions: `add`, `remove`, `generate` +- React: `Interaction` component, `createInteractRef` +- Web: `InteractElement` custom element (registered via `Interact.defineInteractElement`) + +**Config schema (`InteractConfig`):** `{ effects: Record, interactions: Interaction[], sequences?: Record, conditions?: Record }` + +**9 trigger types (from `TriggerType` union):** `hover`, `click`, `viewEnter`, `viewProgress`, `pointerMove`, `activate`, `interest`, `animationEnd`, `pageVisible` + +**Handler mappings (from `handlers/index.ts`):** + +- `viewEnter`, `pageVisible` -> IntersectionObserver handler +- `hover` -> `mouseenter`/`mouseleave` (or `interest` preset if `allowA11yTriggers`) +- `click` -> `['click']` (or `activate` preset if `allowA11yTriggers`) +- `activate` -> `['click', 'keydown']` +- `interest` -> enter: `mouseenter`+`focusin`, leave: `mouseleave`+`focusout` +- `animationEnd` -> listens on source `animationend`, plays on target +- `viewProgress` -> ViewTimeline scrub or `getScrubScene` fallback +- `pointerMove` -> `getScrubScene` + pointer library + +**3 effect types:** `TimeEffect` (has `duration`), `ScrubEffect` (has `rangeStart`/`rangeEnd`), `StateEffect` (has `transition`/`transitionProperties`) + +`**triggerType` values:** `'once' | 'repeat' | 'alternate' | 'state'`; defaults: `'once'` for viewEnter/pageVisible/animationEnd, `'alternate'` for hover/click/activate/interest + +`**stateAction` values:** `'add' | 'remove' | 'toggle' | 'clear'`; default: `'toggle'` + +**Condition types:** `'media' | 'container' | 'selector'` only (no `'custom'`) + +**Key param defaults:** + +- `ViewEnterParams.threshold`: `0.2` +- `PointerMoveParams.axis`: `'y'` +- `PointerMoveParams.hitArea`: undefined (covers document body) + +#### `@wix/motion` -- Core Animation Engine + +**Exported functions:** `getWebAnimation`, `getScrubScene`, `getCSSAnimation`, `prepareAnimation`, `getElementCSSAnimation`, `getElementAnimation`, `getSequence`, `createAnimationGroups`, `registerEffects` + +**Exported utilities:** `getCssUnits`, `getEasing`, `getJsEasing`, all Penner-style easings + `jsEasings`/`cssEasings` maps + +**Type-only exports (not constructable):** `AnimationGroup`, `Sequence` + +**Key behaviors:** + +- `getAnimation` (internal, used by interact): chooses CSS path (if preset has `style`) or WAAPI path (`getWebAnimation`) +- `getCSSAnimation` returns array of CSS rule descriptor objects, not a string +- ViewTimeline: native (`window.ViewTimeline`) with `duration: 'auto'`; fallback: `duration: 99.99` with manual scrub via `getScrubScene` +- Pointer: without keyframes uses factory `MouseAnimationInstance`; with keyframes uses `AnimationGroup.progress()` +- `registerEffects(effects)` merges into internal registry; presets resolve by `namedEffect.type` string +- `fastdom` used for DOM batching (measure/mutate), not re-exported + +`**AnimationGroup` API:** `play`, `pause`, `reverse`, `cancel`, `progress(p)`, `setPlaybackRate`, `getProgress`, `onFinish`, `ready`, `finished`, `playState` + +`**Sequence`:** extends `AnimationGroup`; stagger formula: `offset[i] = easing(i / last) * last * offsetMs` (integer-truncated); supports `addGroups`/`removeGroups` + +`**RangeOffset` names:** `'entry' | 'exit' | 'contain' | 'cover' | 'entry-crossing' | 'exit-crossing'` + +#### `@wix/motion-presets` -- Ready-Made Effects + +**5 categories, 75 exported presets (from barrel):** + +- **Entrance (19):** ArcIn, BlurIn, BounceIn, CurveIn, DropIn, ExpandIn, FadeIn, FlipIn, FloatIn, FoldIn, GlideIn, RevealIn, ShapeIn, ShuttersIn, SlideIn, SpinIn, TiltIn, TurnIn, WinkIn +- **Scroll (19):** ArcScroll, BlurScroll, FadeScroll, FlipScroll, GrowScroll, MoveScroll, PanScroll, ParallaxScroll, RevealScroll, ShapeScroll, ShuttersScroll, ShrinkScroll, SkewPanScroll, SlideScroll, Spin3dScroll, SpinScroll, StretchScroll, TiltScroll, TurnScroll +- **Ongoing (13):** Bounce, Breathe, Cross, Flash, Flip, Fold, Jello, Poke, Pulse, Rubber, Spin, Swing, Wiggle (DVD exists but is NOT barrel-exported) +- **Mouse (12):** AiryMouse, BlobMouse, BlurMouse, BounceMouse, CustomMouse, ScaleMouse, SkewMouse, SpinMouse, SwivelMouse, Tilt3DMouse, Track3DMouse, TrackMouse +- **Background Scroll (12):** BgCloseUp, BgFade, BgFadeBack, BgFake3D, BgPan, BgParallax, BgPullBack, BgReveal, BgRotate, BgSkew, BgZoom, ImageParallax + +**Registration:** `registerEffects` is in `@wix/motion`, not in this package. Presets are plain modules keyed by `namedEffect.type`. Typical usage: `registerEffects({ FadeIn, ParallaxScroll, ... })`. + +**Preset module shapes:** namespace with `web`/`style`/`getNames` (most), mouse presets export `create` factories, some presets have `prepare` (background-scroll). + +**Shared params:** All mouse presets share `inverted?: boolean` (default `false`). Scroll presets support `range?: 'in' | 'out' | 'continuous'` (default varies per preset). Ongoing presets support `iterationDelay?: number` (default `0`). + +**Angle convention in code:** 0 = right, counterclockwise increases (90 = top). + +**Known type-vs-implementation mismatches in presets:** + +- `TurnScroll.rotation`: typed but ignored (fixed +/-45deg) +- `ParallaxScroll.range`: typed but unused +- `DVD`: typed and implemented but not barrel-exported + +### Cross-Package Shared Concepts (need SSOT) + + +| Concept | Owner (should be SSOT) | Referenced by | +| ------------------------------------------------------ | ---------------------- | ----------------- | +| `registerEffects` API | motion | interact, presets | +| `AnimationGroup` / `Sequence` types | motion | interact | +| `namedEffect` shape (`{ type: '...' }`) | motion | interact, presets | +| Scroll ranges (`RangeOffset`, range names) | motion | interact, presets | +| Pointer progress (`Progress { x, y, v, active }`) | motion | interact, presets | +| `EffectScrollRange` (`in`/`out`/`continuous`) | presets | presets only | +| Direction type families (`EffectFourDirections`, etc.) | presets | presets only | +| Easing values (CSS + JS) | motion | interact, presets | +| `prefers-reduced-motion` pattern | interact | motion, presets | +| Length/unit convention (`{ value, type }`) | motion | presets | + + +### Build and Test Infrastructure (Existing) + +- **Monorepo:** Yarn 4 workspaces, no Turbo/Nx +- **Build:** Vite for library bundles, `tsc` for types +- **Unit tests:** Vitest in all three packages (`jsdom` environment for interact) +- **E2E:** Playwright exists for `@wix/motion` only (`packages/motion/e2e/`). Interact has a CI workflow referencing Playwright but no actual Playwright config or tests. +- **Docs deployment:** `apps/docs` copies `packages/interact/docs` into Vite dist via `scripts/copy-docs.js`. Rules are served raw from the docs app under `/rules/`. +- **No existing codegen, templating, or doc validation tooling** in the repo. + +--- + +## Recommendation: Glossary Format + +Use **YAML data files for structured/verifiable data** (parameter tables, defaults, type signatures, term definitions) combined with **markdown template files for prose and document structure**. A lightweight Node.js build script assembles the final rules/ and docs/ output. + +Why this over pure-markdown-with-frontmatter: + +- YAML is machine-parseable, so defaults and params can be **validated against TypeScript source** automatically +- The current rules already contain substantial structured data (param tables, trigger maps, preset catalogs) that maps naturally to YAML +- Prose stays in markdown where it belongs -- the YAML only holds the data that is prone to going stale +- motion-presets rules already use YAML frontmatter, so the pattern is familiar + +Why not a heavier templating system: + +- No existing codegen tooling in the repo; adding Handlebars/Nunjucks/etc. is overhead +- A simple marker-replacement script (find `{{glossary:term-id.field}}` in markdown, inject from YAML) is sufficient and easy to maintain + +--- -**Data:** Per-package YAML context files co-located with each package: +## Directory Structure (per package) ``` -packages/motion-presets/context/ongoing.yaml -packages/motion-presets/context/entrance.yaml -packages/interact/context/triggers.yaml -packages/motion/context/api.yaml +packages// + context/ # NEW - single source of truth + glossary.yaml # All terms, params, defaults, descriptions + templates/ + rules/ # Markdown templates for LLM-facing output + overview.md # Template with {{markers}} for glossary data + ...per-package files... + docs/ # Markdown templates for human-facing output + README.md + guides/ + api/ + ... + rules/ # OUTPUT (generated, gitignored during dev) + docs/ # OUTPUT (generated, gitignored during dev) ``` -**Render:** JS functions in `scripts/render/*.mjs` that take data objects and return markdown strings via template literals. No external template engine. +A shared build script lives at the monorepo root: -**Static fragments:** Narrative prose that does not vary per-term (atmosphere guide, accessibility, cross-category parallels) lives as plain `.md` fragment files under the package's `context/fragments/` directory and is concatenated by the build script without any marker processing. +``` +scripts/ + build-context.js # Reads glossary YAML + templates, writes rules/ + docs/ + validate-context.js # Checks glossary data against TS source code +``` + +> **Open question for implementation:** Whether `rules/` and `docs/` should be gitignored (generated on CI) or committed (generated locally and checked in). The current `package.json` `"files"` field includes `"rules"` and `"docs"`, meaning they are published to npm. The simplest path is to **commit the generated output** and have CI verify it matches the source, similar to how lockfiles work. This avoids needing a pre-publish build step. Final decision deferred to implementation. + +--- + +## Glossary YAML Schema + +Each `glossary.yaml` contains entries like: + +```yaml +terms: + - id: trigger-viewEnter + name: viewEnter + category: trigger # trigger | effect-type | config | api | concept | preset + llm: "Fires when element crosses viewport threshold via IntersectionObserver." + human: "Triggers an animation when an element scrolls into the visible area of the page." + params: + - name: threshold + type: number + default: 0.2 + description: "Fraction of element that must be visible" + - name: inset + type: string + default: null + description: "Mapped to IntersectionObserver rootMargin" + caveats: + - "Same source+target: only triggerType 'once' is reliable" + sourceFile: src/types/triggers.ts # for validation + related: [trigger-pageVisible, concept-fouc] +``` + +Presets get a `presets` section (motion-presets only) with the same structure but preset-specific fields (`category: entrance|scroll|ongoing|mouse|backgroundScroll`, `triggerBinding`, etc.). + +> **Implementation note:** The exact YAML schema should be finalized during the Interact package phase after the full audit confirms which fields are actually needed. The schema above is a starting point. + +--- + +## Build Script Behavior + +`scripts/build-context.js`: + +1. For a given package, reads `context/glossary.yaml` +2. Reads each template file in `context/templates/rules/` and `context/templates/docs/` +3. Replaces markers like `{{term:trigger-viewEnter.params-table}}` with formatted markdown (table for params, inline text for descriptions, etc.) +4. Also supports `{{include:path/to/fragment.md}}` for shared prose blocks within the same package +5. Writes output to `rules/` and `docs/` + +`scripts/validate-context.js`: + +1. Reads `context/glossary.yaml` for a package +2. For each entry with a `sourceFile`, parses the TypeScript source (using regex or ts-morph -- to be decided during implementation) to extract: + - Type definitions (verify param names and types match) + - Default values in destructuring patterns (verify defaults match) +3. Reports mismatches as errors + +> **Scope constraint:** The build script should be simple -- under 300 lines. If the templating needs grow beyond simple marker replacement, reconsider the approach before adding complexity. + +--- + +## Phase 0: Infrastructure Setup + +Before any package migration, set up the shared tooling. + +### 0.1 Design the YAML glossary schema + +- Draft the schema based on the Interact package audit (from the previous conversation's findings) +- Decide on the marker syntax for templates (e.g., `{{term:id.field}}`, `{{table:id.params}}`) +- Decide on the set of "field renderers" needed (param-table, description, caveats-list, code-example) + +### 0.2 Build the context build script + +- `scripts/build-context.js` -- reads YAML, processes templates, writes output +- Must support running per-package: `node scripts/build-context.js --package interact` +- Add a `build:context` script to root `package.json` + +### 0.3 Build the validation script + +- `scripts/validate-context.js` -- reads YAML, checks against source +- Strategy for extracting ground truth from TS: Start with regex-based extraction of type members and destructuring defaults. If that proves brittle, evaluate [ts-morph](https://ts-morph.com/) (adds a devDep but is reliable). Decision deferred to implementation. +- Add a `validate:context` script to root `package.json` + +### 0.4 Decide on gitignore strategy + +- Test both approaches (committed vs generated) during Interact migration +- If committed: add a CI check that runs `build-context` and `git diff --exit-code` on the output + +--- + +## Phase 1: Interact Package (`@wix/interact`) + +### 1.1 Audit and verify ground truth + +Before writing any glossary entries, verify every claim in the current rules against the actual code. This is critical because the previous analysis found **8 critical discrepancies** and **10 significant ones**. + +**Verification approach:** Write ad-hoc Vitest tests (in a temporary test file, e.g., `packages/interact/test/context-audit.spec.ts`) that import source modules and assert the documented behavior. These tests serve as one-time verification and can be kept as regression tests afterward. + +Items to verify (from discrepancy list): + + +| # | What to verify | How | +| --- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| 1 | `allowA11yTriggers` default is `true` | Check `Interact` class static field and handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | +| 2 | `namedEffect` requires object `{ type: '...' }`, not bare string | Test that `getRegisteredEffect` resolves `{ type: 'FadeIn' }` but not `'FadeIn'` | +| 3 | All 9 trigger types exist in `TriggerType` union | Import and enumerate from [types/triggers.ts](packages/interact/src/types/triggers.ts) | +| 4 | `pageVisible` uses same handler as `viewEnter` | Check handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | +| 5 | `AnimationEndParams.effectId` is unused at runtime | Read [handlers/animationEnd.ts](packages/interact/src/handlers/animationEnd.ts) and verify the param is ignored | +| 6 | `viewProgress` handler ignores `ViewEnterParams` | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) | +| 7 | `triggerType` defaults: `'once'` for viewEnter, `'alternate'` for event triggers | Check [core/resolvers.ts](packages/interact/src/core/resolvers.ts) and handler code | +| 8 | `stateAction` default is `'toggle'` | Check [handlers/effectHandlers.ts](packages/interact/src/handlers/effectHandlers.ts) `createTransitionHandler` | +| 9 | `Condition.type` accepts only `'media' | 'container' | +| 10 | Sticky/tall-wrapper ViewTimeline: which element is the source | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) to determine actual behavior | +| 11 | Element resolution order (key cascade) | Read [core/Interact.ts](packages/interact/src/core/Interact.ts) `parseConfig` and [core/add.ts](packages/interact/src/core/add.ts) | +| 12 | `generate()` signature and return type | Import from [core/css.ts](packages/interact/src/core/css.ts) | + + +### 1.2 Create the Interact glossary + +Based on verified ground truth, populate `packages/interact/context/glossary.yaml` with entries for: + +**Categories and approximate entry counts:** + +- **Triggers** (9 entries): hover, click, viewEnter, viewProgress, pointerMove, activate, interest, animationEnd, pageVisible -- each with params, defaults, caveats +- **Effect types** (3 entries): TimeEffect, ScrubEffect, StateEffect -- each with all typed fields and defaults +- **Config types** (5-6 entries): InteractConfig, Interaction, Effect/EffectRef, SequenceConfig, Condition -- schema shapes +- **API** (8-10 entries): Interact.create, Interact.destroy, Interact.setup, add, remove, generate, Interact.registerEffects, Interact.getSequence, etc. -- signatures and behavior +- **Concepts** (5-6 entries): FOUC prevention, element resolution, a11y trigger mapping, conditions cascading, custom elements lifecycle +- **Enums/unions** (4-5 entries): triggerType (once/repeat/alternate/state), stateAction, Fill, CompositeOperation + +### 1.3 Design the Interact rules templates + +The current rules have two overlapping "hub" files (`full-lean.md` at 692 lines, `integration.md` at 329 lines) plus 5 trigger-specific files. The new structure should eliminate the overlap. -**Build:** `scripts/build-context.mjs` — reads YAML, calls render functions, writes output files. One command produces all outputs. +**Proposed rules/ file set for Interact:** -**Validation:** `scripts/validate-context.spec.mjs` — Vitest tests using `readFileSync` + string assertions against source `.ts` files. Runs after build to verify facts. -## Audit Notes (post PR #237) +| File | Purpose | Approx. lines | +| ------------- | ----------------------------------------------------------------------------------------- | ------------- | +| `overview.md` | Package purpose, entry points, imports, quick-start snippet | 60-80 | +| `config.md` | InteractConfig schema, Interaction shape, Effect/EffectRef, sequences, conditions | 150-200 | +| `triggers.md` | All 9 triggers: params, defaults, behavior, per-trigger caveats | 200-250 | +| `effects.md` | TimeEffect, ScrubEffect, StateEffect: fields, defaults, triggerType/stateAction semantics | 150-200 | +| `pitfalls.md` | FOUC, overflow:clip, same-element source+target, hit-area jitter, a11y mapping | 80-100 | -### Motion-Presets -Verified preset counts after PR #237 merges: +Each file gets: -| Category | Count | Notes | -| --------- | ------ | ------------------------------------------------------------------------------------------- | -| Entrance | 19 | Unchanged | -| Scroll | 19 | Unchanged | -| Ongoing | 13 | DVD removed (can't handle non-infinite iterations, not stylable, relies on container edges) | -| Mouse | 11 | BounceMouse and SpinMouse added | -| **Total** | **62** | Not 73 or 82+ | +- YAML frontmatter (`name`, `description`) for agent-loading hints (matches existing presets pattern) +- A `## Table of Contents` with `#anchor` links for selective section reading +- `{{term:...}}` markers where glossary data should be injected -Other fixes landed in PR #237: +**Key structural rule for LLM readability:** + +- Each file must be self-contained for its topic (no "see other file for the rest of this table") +- Cross-references between files use relative links but only for "related reading", never for completing a thought +- Param tables are compact: `| name | type | default | notes |` -- one row per param, no verbose descriptions +- Code examples are minimal (3-8 lines) and correct + +### 1.4 Design the Interact docs templates + +The current docs have 26 files but many are scaffolding (broken links, TBD sections, placeholder READMEs linking to nonexistent files). The new structure should contain only files with actual content. + +**Proposed docs/ file set for Interact:** + + +| File | Purpose | +| --------------------------- | ------------------------------------------------------- | +| `README.md` | Getting started, install, entry points, navigation | +| `guides/configuration.md` | Config structure explained for humans | +| `guides/triggers.md` | Trigger concepts, choosing triggers, combining triggers | +| `guides/effects.md` | Effect types explained, when to use which | +| `guides/sequences.md` | Sequence math, staggering, list integration | +| `guides/conditions.md` | Media queries, container queries, selector conditions | +| `guides/fouc.md` | FOUC prevention guide (generate + initial) | +| `guides/custom-elements.md` | `` usage and lifecycle | +| `api/README.md` | API overview and imports | +| `api/interact-class.md` | Static + instance methods | +| `api/functions.md` | add, remove, generate | +| `api/types.md` | Type reference | +| `integration/react.md` | React-specific guide | +| `examples/entrance.md` | Entrance animation recipes | +| `examples/hover-click.md` | Hover and click interaction recipes | + + +All other current files (broken-link READMEs, TBD placeholders, the nonexistent targets) are **dropped**. Content from `full-lean.md` that overlaps with docs is reconciled -- the rules version becomes the SSOT; the docs version becomes a prose rewrite of the same data. + +### 1.5 Build and validate + +1. Run `node scripts/build-context.js --package interact` to generate `rules/` and `docs/` +2. Run `node scripts/validate-context.js --package interact` to verify glossary against source +3. Manually review generated rules for LLM readability: + - Are tables compact and scannable? + - Can an LLM read just `triggers.md` and get everything it needs about triggers? + - Is the TOC + anchor pattern working for selective section reading? +4. Run the existing `apps/docs` build to verify docs still copy correctly + +### 1.6 Replace and verify + +1. Back up current `rules/` and `docs/` (they are in git, so this is just a safety step) +2. Replace with generated output +3. Run existing Vitest tests (`yarn workspace @wix/interact test`) to ensure nothing depends on specific rules/docs file paths internally +4. Verify `apps/docs` build still works (it copies from `packages/interact/docs`) +5. Verify the docs app `copy-docs.js` script handles the new file structure +6. Keep the `context-audit.spec.ts` tests as ongoing regression + +--- + +## Phase 2: Motion Package (`@wix/motion`) + +### 2.1 Audit and verify ground truth + +Motion currently has **no rules/** directory. Its docs have significant issues: `getCSSAnimation` return type is wrong in multiple files, `TriggerVariant` shape differs between tutorial and type docs, preset counts don't match, and several linked files don't exist. + +**Key items to verify:** + + +| # | What to verify | +| --- | -------------------------------------------------------------------------- | +| 1 | `getCSSAnimation` return type (array of objects, not string) | +| 2 | `AnimationGroup` is type-only export (not constructable by consumers) | +| 3 | `getWebAnimation` signature and return type union | +| 4 | `getScrubScene` signature, scroll vs pointer branches | +| 5 | `TriggerVariant` actual shape (`id`, `trigger`, `componentId`, `element?`) | +| 6 | `Sequence` stagger formula | +| 7 | `RangeOffset` range name enum | +| 8 | `prepareAnimation` behavior and `DomApi` contract | +| 9 | `CustomAnimation` rAF loop behavior for `customEffect` | +| 10 | ViewTimeline detection and fallback path | + + +### 2.2 Create glossary, templates, build, replace + +Same pattern as Interact: + +- `packages/motion/context/glossary.yaml` -- API functions, animation types, scroll/pointer concepts, `AnimationGroup`/`Sequence` APIs +- **New `rules/` directory** (Motion currently lacks one): `overview.md`, `api.md`, `animation-types.md`, `pitfalls.md` +- Restructured `docs/` -- drop `PLAN_DOCS.md`, fix or remove broken links, remove nonexistent targets, consolidate category docs that overlap with motion-presets docs + +**Important:** Motion's `docs/categories/` files (entrance-animations.md, scroll-animations.md, etc.) overlap heavily with motion-presets docs. These should be **removed or reduced to pointers** -- the preset details belong in motion-presets. Motion docs should cover the **engine API**, not preset catalogs. + +--- + +## Phase 3: Motion-Presets Package (`@wix/motion-presets`) + +### 3.1 Audit and verify ground truth + +Motion-presets rules are the most structured of the three (YAML frontmatter, per-category files), but have known data errors. + +**Key items to verify:** + + +| # | What to verify | +| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | All preset names match barrel exports (currently 19+19+13+11+12 = 74) | +| 2 | Per-preset params and defaults match implementation (ParallaxScroll `parallaxFactor` not `speed`, ArcIn default `'right'` not `'bottom'`, Pulse intensity default `0` not `1.0`) | +| 3 | Mouse preset count (11 exported, not 9 or 12) | +| 4 | DVD is NOT exported from barrel | +| 5 | Angle convention is 0 = right (not up) | +| 6 | `range` param on ParallaxScroll is typed but unused | +| 7 | `TurnScroll.rotation` is typed but unused | +| 8 | Background-scroll `data-motion-part` values and targeting | + + +**Verification approach:** For presets, the most effective verification is a script that: + +- Imports all barrel exports from `@wix/motion-presets` +- For each, checks it matches the glossary entry (name, category) +- For param defaults, reads the source destructuring patterns + +This can be a Vitest test file that programmatically checks all presets. + +### 3.2 Create glossary, templates, build, replace + +- `packages/motion-presets/context/glossary.yaml` -- includes a `presets` section with every preset's params and defaults +- **Rules:** Keep the current split-by-category approach (it works well) but generate tables from glossary: `overview.md`, `entrance.md`, `scroll.md`, `ongoing.md`, `mouse.md`, `background-scroll.md` +- **Docs:** Per-preset pages only for presets that warrant detailed explanation (not all 74 need a dedicated page). Category READMEs with param tables generated from glossary. Drop broken-link placeholder pages. + +### 3.3 Cross-package validation + +After all three packages are migrated: + +- Verify cross-package references (interact rules referencing motion concepts, presets referencing motion API) +- Ensure `registerEffects` is described consistently: defined in motion glossary, referenced in interact and presets +- Ensure shared concepts (scroll ranges, pointer progress, namedEffect shape) use the same terminology everywhere + +--- + +## Sequencing and Safety + +```mermaid +flowchart TD + P0[Phase 0: Build tooling] --> P1A[1.1: Audit Interact ground truth] + P1A --> P1B[1.2: Create Interact glossary] + P1B --> P1C[1.3-1.4: Create templates] + P1C --> P1D[1.5: Build and validate] + P1D --> P1E{Output matches expectations?} + P1E -->|No| P1C + P1E -->|Yes| P1F[1.6: Replace Interact rules+docs] + P1F --> P2A[2.1: Audit Motion ground truth] + P2A --> P2B[2.2: Create Motion glossary + templates + replace] + P2B --> P3A[3.1: Audit Presets ground truth] + P3A --> P3B[3.2: Create Presets glossary + templates + replace] + P3B --> P3C[3.3: Cross-package validation] +``` -- **Unit key corrected:** `{ value: N, unit: 'px' }` not `{ value: N, type: 'px' }` — verify this is propagated to all `docs/` files (not just `rules/`) -- **`MoveScroll`** removed from the angle-direction overloads table in `presets-main.md` (does not take a numeric angle) -- **`iterationDelay`** available on all ongoing presets (no longer "except DVD") -- **Cross-category parallels** updated: BounceMouse and SpinMouse columns added -`docs/presets/README.md` remaining stale items (to fix in phase-3-audit): -- Claims "82+ animation presets" → should be 62 -- Claims 16 ongoing presets → 13 -- Claims 12 mouse presets → 11 -- Uses emoji headers — inconsistent with rules and new README style +**Safety rule:** The old `rules/` and `docs/` files for a package are only deleted/replaced after: -`presets-main.md` post-PR #237: +1. The new glossary is validated against source code +2. The build script produces output that passes manual review +3. Existing tests still pass +4. The docs app build still works (for interact) -- Categories table still lists background-scroll — update after phase-3-decision +Each phase is a separate PR (or set of PRs) that can be reviewed independently. From 77ee9149a1682af48e946a34379f62ebdbe03f68 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 15:46:47 +0300 Subject: [PATCH 16/18] updating plan --- .cursor/plans/context_ssot_restructure_c6889ec0.plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md index 1f639ec9..85331306 100644 --- a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -4,7 +4,7 @@ overview: "Restructure the rules/ and docs/ across all three packages (@wix/inte todos: - id: phase-0-schema content: Design YAML glossary schema and marker syntax for templates - status: completed + status: pending - id: phase-0-build content: Build scripts/build-context.js (YAML + templates -> rules/ and docs/ markdown) status: pending From f1c86bcba73c8a66dc3ad75bd3e84fa2d2434cef Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 17:23:56 +0300 Subject: [PATCH 17/18] updating plan --- .../context_ssot_restructure_c6889ec0.plan.md | 285 +++++++++--------- 1 file changed, 149 insertions(+), 136 deletions(-) diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md index 85331306..16fb6f5e 100644 --- a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -1,15 +1,12 @@ --- name: Context SSOT Restructure -overview: "Restructure the rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a single-source-of-truth system where structured data (params, defaults, types, term definitions) lives in YAML glossary files, and final markdown outputs are assembled by a lightweight build script. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets." +overview: "Restructure the rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a single-source-of-truth system where structured data (params, defaults, types, term definitions) lives in YAML glossary files. rules/ output is fully generated by renderer functions; docs/ is hand-authored with structured sections injected from YAML. No template files, no marker syntax. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets." todos: - id: phase-0-schema - content: Design YAML glossary schema and marker syntax for templates + content: Design YAML glossary schema and renderer function signatures status: pending - id: phase-0-build - content: Build scripts/build-context.js (YAML + templates -> rules/ and docs/ markdown) - status: pending - - id: phase-0-validate - content: Build scripts/validate-context.js (check glossary data against TypeScript source) + content: Build scripts/build-context.js (YAML -> renderer functions -> rules/ full output; YAML -> inject structured sections into hand-authored docs/) status: pending - id: phase-1-audit content: "Interact: Audit and verify all ground truth claims via ad-hoc Vitest tests" @@ -18,13 +15,13 @@ todos: content: "Interact: Create context/glossary.yaml with all verified terms, params, defaults" status: pending - id: phase-1-rules-templates - content: "Interact: Create rules template files (overview, config, triggers, effects, pitfalls)" + content: "Interact: Design renderer functions and write glossary entries for rules output (overview, config, triggers, effects, pitfalls)" status: pending - id: phase-1-docs-templates - content: "Interact: Create docs template files (guides, api, integration, examples)" + content: "Interact: Author hand-written docs files; add PARAMS:START/END markers for injected sections (guides, api, integration, examples)" status: pending - id: phase-1-build-validate - content: "Interact: Run build + validate, iterate until output is correct and readable" + content: "Interact: Run build, iterate until output is correct and readable; Vitest audit tests serve as the validation layer" status: pending - id: phase-1-replace content: "Interact: Replace old rules/ and docs/ with generated output, verify all builds pass" @@ -33,13 +30,13 @@ todos: content: "Motion: Audit and verify ground truth (API signatures, return types, scroll/pointer)" status: pending - id: phase-2-migrate - content: "Motion: Create glossary, templates, build, and replace (add new rules/ dir)" + content: "Motion: Create glossary, renderer functions, build, and replace (add new rules/ dir)" status: pending - id: phase-3-audit - content: "Motion-Presets: Audit all 74 presets params/defaults against source" + content: "Motion-Presets: Audit all 62 production-facing presets params/defaults against source (19 entrance + 19 scroll + 13 ongoing + 11 mouse)" status: pending - id: phase-3-migrate - content: "Motion-Presets: Create glossary, templates, build, and replace" + content: "Motion-Presets: Create glossary, renderer functions, build, and replace (62 production presets)" status: pending - id: phase-3-cross-validate content: "Cross-package validation: verify shared concepts are consistent across all three packages" @@ -128,7 +125,7 @@ This section captures the findings from the deep analysis of all 72 context file | 1 | `allowA11yTriggers` default | `rules/integration.md`: **false**; `docs/api/types.md`: **true** | Code: **true** -- `click` auto-maps to `activate`, `hover` to `interest` | `src/handlers/index.ts` | | 2 | `ParallaxScroll` param name | All docs consistently use `**speed`** | Code: `**parallaxFactor`** (default `0.5`) | `motion-presets/src/library/scroll/ParallaxScroll.ts`, `types.ts` | | 3 | `Pulse` intensity default | `docs/ongoing/pulse.md`: **1.0** | Code: **0** | `motion-presets/src/library/ongoing/Pulse.ts` | -| 4 | `ArcIn` default direction | `docs/entrance/arc-in.md`: `**'bottom'`** | Code: `**'right'`** | `motion-presets/src/library/entrance/ArcIn.ts` | +| 4 | `ArcIn` default direction | **RESOLVED in rules** (`entrance-presets.md` now states `'right'`). `docs/entrance/arc-in.md` still needs update. | Code: `**'right'`** | `motion-presets/src/library/entrance/ArcIn.ts` | | 5 | `namedEffect` shape | Many docs use bare string: `namedEffect: 'FadeIn'` | Code requires object: `namedEffect: { type: 'FadeIn' }` | `motion/src/api/common.ts` `getNamedEffect` | | 6 | `getCSSAnimation` return type | `api/core-functions.md`, `performance.md`: **string** | Code: **array of objects** `({ target, animation, keyframes, ... })` | `motion/src/api/cssAnimations.ts` | | 7 | `AnimationEndParams.effectId` | Typed and documented as wiring mechanism | Handler **ignores it** (`__` param) | `interact/src/handlers/animationEnd.ts` | @@ -141,15 +138,15 @@ This section captures the findings from the deep analysis of all 72 context file | # | Topic | Discrepancy | | --- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | 9 | Sticky/tall-wrapper ViewTimeline source | `viewprogress.md` Rule 3: `key` on tall wrapper = source. `full-lean.md`: sticky child = source. Contradicts itself. | -| 10 | Trigger count | `guides/README.md` says 7; `understanding-triggers.md` says 9; actual `TriggerType` union: **9** members | -| 11 | `pageVisible` trigger | Omitted from most trigger tables; only in `api/types.md`. Actually exists in code, uses viewEnter's IntersectionObserver handler | -| 12 | Mouse preset count | Rules: 9; `mouse/README.md`: 12; barrel export: **11** (plus CustomMouse = 12 total) | -| 13 | Ongoing preset count | `presets-main.md`: 14; `ongoing/README.md`: 16; barrel exports: **13**; DVD is not exported | -| 14 | Total preset count | Docs: "82+"; rules enumerate 61; barrel exports: **19 + 19 + 13 + 12 + 12 = 75** | -| 15 | Angle convention | `presets-main.md`: 0 = right; `_template.md`: 0 = up. Code: **0 = right** in most presets | -| 16 | `customEffect` signature | Varies: 2-arg in rules, 3-arg in some docs. Actual depends on context (time: `progress` number; pointer: `Progress { x, y, v, active }`) | -| 17 | `TurnScroll.rotation` param | Typed in `types.ts` but **ignored** in implementation (fixed +/-45deg) | -| 18 | `ParallaxScroll.range` param | Typed but **unused** in `ParallaxScroll.ts` implementation | +| 10 | Trigger taxonomy undocumented | No file explains the trigger taxonomy. Counts vary (7 or 9) because `activate`/`interest` are a11y variants (not independent user triggers) and `pageVisible` is deprecated. The correct framing: **6 primary user-facing triggers** (hover, click, viewEnter, viewProgress, pointerMove, animationEnd) + 2 a11y variants (activate, interest) enabled by `allowA11yTriggers: true`. `guides/README.md`'s "7" and `understanding-triggers.md`'s "9" are both partially correct but unexplained. | +| 11 | `pageVisible` trigger | **Soon to be deprecated.** Currently absent from most trigger tables; only in `api/types.md`. Uses viewEnter's IntersectionObserver handler. Docs should note deprecation status and point to `viewEnter` as the replacement. | +| 12 | Ongoing preset count | `presets-main.md`: **RESOLVED** (now correctly lists 13). `docs/presets/README.md`: still says 16. Barrel exports: **13**; DVD exists but is not barrel-exported. | +| 13 | Total documented preset count | `docs/presets/README.md`: "82+"; `README.md` (package root): **62** (19+19+13+11, bg-scroll and CustomMouse intentionally excluded). Barrel exports: 75 (includes 12 bg-scroll and CustomMouse). **Background-scroll (12) is intentionally excluded (not production-ready). CustomMouse is intentionally excluded (internal use for `customEffect`).** `docs/presets/README.md`'s "82+" figure is the remaining wrong value. | +| 14 | **RESOLVED** Angle convention | ~~`presets-main.md`: 0 = right; `_template.md`: 0 = up.~~ `presets-main.md` now correctly documents 0° = right throughout. | +| 15 | `customEffect` signature | Varies: 2-arg in rules, 3-arg in some docs. Actual depends on context (time: `progress` number; pointer: `Progress { x, y, v, active }`) | +| 16 | `TurnScroll.rotation` param | Typed in `types.ts` but **ignored** in implementation (fixed +/-45deg) | +| 17 | `ParallaxScroll.range` param | Typed but **unused** in `ParallaxScroll.ts` implementation | +| 18 | `generate-llms.mjs` trigger list | `scripts/generate-llms.mjs` `STATIC_BODY` hardcodes "**Five trigger types**: hover, click, viewEnter, viewProgress, pointerMove" — `animationEnd` is missing. This string is published to `llms.txt` via CI and directly misleads LLMs. Should become "Six primary trigger types: hover, click, viewEnter, viewProgress, pointerMove, animationEnd — plus accessible variants activate and interest." | #### Minor (quality / completeness) @@ -160,8 +157,8 @@ This section captures the findings from the deep analysis of all 72 context file | 19 | **36+ broken internal links** across all packages: references to nonexistent files like `testing.md`, `performance.md`, `playground/`, `scroll-animations.md`, etc. | | 20 | **5+ TBD placeholder sections** in interact docs (`configuration-structure`, `effects-and-animations`, `state-management`, `lists`, `custom-elements`) | | 21 | **Code typos in docs**: `sytle`, `hitAea`, `docuement`, `getScrgetWebAnimationubScene`, truncated/invalid snippets | -| 22 | `**unit` vs `type` for length objects**: rules use both `{ value, type: 'px' }` and `{ value, unit: 'px' }` interchangeably | -| 23 | `**Interact.getElement`** referenced in docs but does not exist as a public API | +| 22 | **RESOLVED** `unit` vs `type` for length objects: `presets-main.md` now consistently uses `{ value, unit: 'px' }` throughout. | +| 23 | `Interact.getElement` referenced in docs but does not exist as a public API | ### Repetition Analysis @@ -196,22 +193,26 @@ The same information is repeated across multiple files with inconsistent phrasin **Config schema (`InteractConfig`):** `{ effects: Record, interactions: Interaction[], sequences?: Record, conditions?: Record }` -**9 trigger types (from `TriggerType` union):** `hover`, `click`, `viewEnter`, `viewProgress`, `pointerMove`, `activate`, `interest`, `animationEnd`, `pageVisible` +**Trigger taxonomy (9 members in `TriggerType` union, but distinct roles):** + +- **6 primary user-facing triggers:** `hover`, `click`, `viewEnter`, `viewProgress`, `pointerMove`, `animationEnd` — these are the triggers users configure directly +- **2 a11y variant triggers:** `activate` (accessible version of `click`: adds `keydown`), `interest` (accessible version of `hover`: adds `focusin`/`focusout`) — enabled transparently by `allowA11yTriggers: true`; users do not configure them directly +- **1 deprecated trigger:** `pageVisible` — soon to be removed; currently shares the IntersectionObserver handler with `viewEnter`; documentation should note deprecated status and point to `viewEnter` as the replacement **Handler mappings (from `handlers/index.ts`):** -- `viewEnter`, `pageVisible` -> IntersectionObserver handler -- `hover` -> `mouseenter`/`mouseleave` (or `interest` preset if `allowA11yTriggers`) -- `click` -> `['click']` (or `activate` preset if `allowA11yTriggers`) -- `activate` -> `['click', 'keydown']` -- `interest` -> enter: `mouseenter`+`focusin`, leave: `mouseleave`+`focusout` +- `viewEnter`, `pageVisible` (deprecated) -> IntersectionObserver handler +- `hover` -> `mouseenter`/`mouseleave`; when `allowA11yTriggers: true`, remaps to `interest` handler +- `click` -> `['click']`; when `allowA11yTriggers: true`, remaps to `activate` handler +- `activate` (a11y variant) -> `['click', 'keydown']` +- `interest` (a11y variant) -> enter: `mouseenter`+`focusin`, leave: `mouseleave`+`focusout` - `animationEnd` -> listens on source `animationend`, plays on target - `viewProgress` -> ViewTimeline scrub or `getScrubScene` fallback - `pointerMove` -> `getScrubScene` + pointer library **3 effect types:** `TimeEffect` (has `duration`), `ScrubEffect` (has `rangeStart`/`rangeEnd`), `StateEffect` (has `transition`/`transitionProperties`) -`**triggerType` values:** `'once' | 'repeat' | 'alternate' | 'state'`; defaults: `'once'` for viewEnter/pageVisible/animationEnd, `'alternate'` for hover/click/activate/interest +`triggerType` values: `'once' | 'repeat' | 'alternate' | 'state'`; defaults: `'once'` for viewEnter/animationEnd (and deprecated pageVisible), `'alternate'` for hover/click/activate/interest `**stateAction` values:** `'add' | 'remove' | 'toggle' | 'clear'`; default: `'toggle'` @@ -248,13 +249,19 @@ The same information is repeated across multiple files with inconsistent phrasin #### `@wix/motion-presets` -- Ready-Made Effects -**5 categories, 75 exported presets (from barrel):** +**5 categories, 75 barrel-exported presets. Production-facing (documented in rules and docs): 62 across 4 categories.** + +Intentional exclusions from documentation: +- **Background-scroll (12):** Not production-ready. Present in barrel but excluded from all rules and docs. +- **`CustomMouse` (1):** Internal use only (for `customEffect`). Present in barrel but excluded from rules and docs. + +**Entrance (19):** ArcIn, BlurIn, BounceIn, CurveIn, DropIn, ExpandIn, FadeIn, FlipIn, FloatIn, FoldIn, GlideIn, RevealIn, ShapeIn, ShuttersIn, SlideIn, SpinIn, TiltIn, TurnIn, WinkIn -- **Entrance (19):** ArcIn, BlurIn, BounceIn, CurveIn, DropIn, ExpandIn, FadeIn, FlipIn, FloatIn, FoldIn, GlideIn, RevealIn, ShapeIn, ShuttersIn, SlideIn, SpinIn, TiltIn, TurnIn, WinkIn -- **Scroll (19):** ArcScroll, BlurScroll, FadeScroll, FlipScroll, GrowScroll, MoveScroll, PanScroll, ParallaxScroll, RevealScroll, ShapeScroll, ShuttersScroll, ShrinkScroll, SkewPanScroll, SlideScroll, Spin3dScroll, SpinScroll, StretchScroll, TiltScroll, TurnScroll -- **Ongoing (13):** Bounce, Breathe, Cross, Flash, Flip, Fold, Jello, Poke, Pulse, Rubber, Spin, Swing, Wiggle (DVD exists but is NOT barrel-exported) -- **Mouse (12):** AiryMouse, BlobMouse, BlurMouse, BounceMouse, CustomMouse, ScaleMouse, SkewMouse, SpinMouse, SwivelMouse, Tilt3DMouse, Track3DMouse, TrackMouse -- **Background Scroll (12):** BgCloseUp, BgFade, BgFadeBack, BgFake3D, BgPan, BgParallax, BgPullBack, BgReveal, BgRotate, BgSkew, BgZoom, ImageParallax +**Scroll (19):** ArcScroll, BlurScroll, FadeScroll, FlipScroll, GrowScroll, MoveScroll, PanScroll, ParallaxScroll, RevealScroll, ShapeScroll, ShuttersScroll, ShrinkScroll, SkewPanScroll, SlideScroll, Spin3dScroll, SpinScroll, StretchScroll, TiltScroll, TurnScroll + +**Ongoing (13):** Bounce, Breathe, Cross, Flash, Flip, Fold, Jello, Poke, Pulse, Rubber, Spin, Swing, Wiggle (DVD exists but is NOT barrel-exported) + +**Mouse (11 documented, 12 exported):** AiryMouse, BlobMouse, BlurMouse, BounceMouse, ScaleMouse, SkewMouse, SpinMouse, SwivelMouse, Tilt3DMouse, Track3DMouse, TrackMouse (CustomMouse excluded from docs — internal) **Registration:** `registerEffects` is in `@wix/motion`, not in this package. Presets are plain modules keyed by `namedEffect.type`. Typical usage: `registerEffects({ FadeIn, ParallaxScroll, ... })`. @@ -284,7 +291,7 @@ The same information is repeated across multiple files with inconsistent phrasin | Direction type families (`EffectFourDirections`, etc.) | presets | presets only | | Easing values (CSS + JS) | motion | interact, presets | | `prefers-reduced-motion` pattern | interact | motion, presets | -| Length/unit convention (`{ value, type }`) | motion | presets | +| Length/unit convention (`{ value, unit }`) | motion | presets | ### Build and Test Infrastructure (Existing) @@ -293,26 +300,29 @@ The same information is repeated across multiple files with inconsistent phrasin - **Build:** Vite for library bundles, `tsc` for types - **Unit tests:** Vitest in all three packages (`jsdom` environment for interact) - **E2E:** Playwright exists for `@wix/motion` only (`packages/motion/e2e/`). Interact has a CI workflow referencing Playwright but no actual Playwright config or tests. -- **Docs deployment:** `apps/docs` copies `packages/interact/docs` into Vite dist via `scripts/copy-docs.js`. Rules are served raw from the docs app under `/rules/`. -- **No existing codegen, templating, or doc validation tooling** in the repo. +- **Docs deployment:** `apps/docs` copies `packages/interact/docs` into Vite dist via `apps/docs/scripts/copy-docs.js`. Rules are served raw from the docs app under `/rules/`. +- **LLM context generation:** `scripts/generate-llms.mjs` (207 lines, plain ESM, zero deps) reads all `.md` files in `packages/interact/rules/`, generates `llms.txt` and `llms-full.txt` at repo root and copies `llms.txt` into `packages/interact/`. Wired to a `generate:llms` root script and used by CI workflows (`interactdocs.yml`, `preview-llms.yml`). **Any structural change to interact rules must remain compatible with this script.** Note: this script's static body currently says "Five trigger types" — see discrepancy #18. +- **No existing codegen, templating, or doc validation tooling** in the repo beyond `generate-llms.mjs`. --- ## Recommendation: Glossary Format -Use **YAML data files for structured/verifiable data** (parameter tables, defaults, type signatures, term definitions) combined with **markdown template files for prose and document structure**. A lightweight Node.js build script assembles the final rules/ and docs/ output. +Use **YAML data files for structured/verifiable data** (parameter tables, defaults, type signatures, term definitions). A lightweight Node.js build script turns YAML into final `rules/` output (fully generated) and injects structured sections into hand-authored `docs/` files. -Why this over pure-markdown-with-frontmatter: +Why YAML for the data layer: -- YAML is machine-parseable, so defaults and params can be **validated against TypeScript source** automatically -- The current rules already contain substantial structured data (param tables, trigger maps, preset catalogs) that maps naturally to YAML -- Prose stays in markdown where it belongs -- the YAML only holds the data that is prone to going stale +- Machine-parseable: the Vitest audit tests can import YAML and assert values match source +- Maps naturally to the structured data already present in current rules (param tables, trigger maps, preset catalogs) - motion-presets rules already use YAML frontmatter, so the pattern is familiar +- Prose stays in markdown where it belongs — the YAML only holds data that is prone to going stale -Why not a heavier templating system: +Why **no template files and no marker syntax:** -- No existing codegen tooling in the repo; adding Handlebars/Nunjucks/etc. is overhead -- A simple marker-replacement script (find `{{glossary:term-id.field}}` in markdown, inject from YAML) is sufficient and easy to maintain +- The existing motion-presets rules files already have a fixed, completely regular structure: frontmatter → H1 → intro → TOC → per-item sections (visual description, params, code example). This structure is the same for every category file. +- Encoding that layout as **renderer functions** in the build script (`renderPresetCategoryFile`, `renderTriggerFile`, etc.) is simpler and more maintainable than maintaining a separate template file per output file. +- No custom template syntax to parse; no marker replacement logic; the build script is plain string-building, following the same style as the existing `generate-llms.mjs`. +- For `docs/`, structured sections (param tables, API signatures) are injected between HTML comment markers (`` / ``). All prose outside the markers is hand-authored and untouched by the build script. --- @@ -322,28 +332,24 @@ Why not a heavier templating system: packages// context/ # NEW - single source of truth glossary.yaml # All terms, params, defaults, descriptions - templates/ - rules/ # Markdown templates for LLM-facing output - overview.md # Template with {{markers}} for glossary data - ...per-package files... - docs/ # Markdown templates for human-facing output - README.md - guides/ - api/ - ... - rules/ # OUTPUT (generated, gitignored during dev) - docs/ # OUTPUT (generated, gitignored during dev) + rules/ # OUTPUT - fully generated from glossary.yaml + docs/ # HAND-AUTHORED - structured sections injected from glossary.yaml + guides/ + api/ + ... ``` A shared build script lives at the monorepo root: ``` scripts/ - build-context.js # Reads glossary YAML + templates, writes rules/ + docs/ - validate-context.js # Checks glossary data against TS source code + build-context.js # Reads glossary YAML, renders rules/ (full), injects into docs/ (partial) + generate-llms.mjs # EXISTING - reads interact rules/, generates llms.txt + llms-full.txt ``` -> **Open question for implementation:** Whether `rules/` and `docs/` should be gitignored (generated on CI) or committed (generated locally and checked in). The current `package.json` `"files"` field includes `"rules"` and `"docs"`, meaning they are published to npm. The simplest path is to **commit the generated output** and have CI verify it matches the source, similar to how lockfiles work. This avoids needing a pre-publish build step. Final decision deferred to implementation. +No `templates/` directory. The output layout for `rules/` files is encoded as renderer functions inside `build-context.js`. + +> **Gitignore strategy:** Commit the generated `rules/` output and have CI verify it matches the source by running `build-context.js` and checking `git diff --exit-code`. This is the same pattern as lockfiles and avoids a pre-publish build step. The `docs/` files are always committed as they are hand-authored. --- @@ -356,8 +362,7 @@ terms: - id: trigger-viewEnter name: viewEnter category: trigger # trigger | effect-type | config | api | concept | preset - llm: "Fires when element crosses viewport threshold via IntersectionObserver." - human: "Triggers an animation when an element scrolls into the visible area of the page." + description: "Fires when element crosses viewport threshold via IntersectionObserver." params: - name: threshold type: number @@ -369,35 +374,45 @@ terms: description: "Mapped to IntersectionObserver rootMargin" caveats: - "Same source+target: only triggerType 'once' is reliable" - sourceFile: src/types/triggers.ts # for validation - related: [trigger-pageVisible, concept-fouc] + sourceFile: src/types/triggers.ts # used by Vitest audit tests + related: [concept-fouc] ``` -Presets get a `presets` section (motion-presets only) with the same structure but preset-specific fields (`category: entrance|scroll|ongoing|mouse|backgroundScroll`, `triggerBinding`, etc.). +Presets get a `presets` section (motion-presets only) with the same structure but preset-specific fields (`category: entrance|scroll|ongoing|mouse`, `visual`, `example`, etc.). -> **Implementation note:** The exact YAML schema should be finalized during the Interact package phase after the full audit confirms which fields are actually needed. The schema above is a starting point. +> **Implementation note:** The exact YAML schema should be finalized during the Interact package phase after the full audit confirms which fields are actually needed. The schema above is a starting point. A single `description` field is used — the output format (compact rules vs. narrative docs) provides audience differentiation, not the data layer. --- ## Build Script Behavior -`scripts/build-context.js`: +`scripts/build-context.js` uses two distinct strategies for its two output targets: + +**For `rules/` (fully generated):** 1. For a given package, reads `context/glossary.yaml` -2. Reads each template file in `context/templates/rules/` and `context/templates/docs/` -3. Replaces markers like `{{term:trigger-viewEnter.params-table}}` with formatted markdown (table for params, inline text for descriptions, etc.) -4. Also supports `{{include:path/to/fragment.md}}` for shared prose blocks within the same package -5. Writes output to `rules/` and `docs/` +2. Calls a renderer function for each output file — e.g., `renderPresetCategoryFile(entries)`, `renderTriggerFile(entries)`, `renderOverviewFile(data)` +3. Each renderer function builds a complete markdown string using the **fixed layout already established by the existing rules files** (frontmatter → H1 → intro → TOC → per-item sections) +4. Writes output files to `rules/` + +No template files. No marker syntax. The output structure is encoded in the renderer functions, which are plain string-building code following the same style as `scripts/generate-llms.mjs`. -`scripts/validate-context.js`: +**For `docs/` (structured sections injected, prose hand-authored):** -1. Reads `context/glossary.yaml` for a package -2. For each entry with a `sourceFile`, parses the TypeScript source (using regex or ts-morph -- to be decided during implementation) to extract: - - Type definitions (verify param names and types match) - - Default values in destructuring patterns (verify defaults match) -3. Reports mismatches as errors +1. Reads `context/glossary.yaml` +2. Finds HTML comment markers in existing docs files: + ```html + + ...any existing content here is replaced... + + ``` +3. Generates a param table from YAML and replaces the content between markers +4. All prose, examples, and narrative outside the markers is untouched +5. Writes the updated docs files back in place -> **Scope constraint:** The build script should be simple -- under 300 lines. If the templating needs grow beyond simple marker replacement, reconsider the approach before adding complexity. +**Validation:** The Vitest audit tests from Phase 1.1 serve as the validation layer — they import source modules and assert documented behavior. There is no separate `validate-context.js` script. CI runs `yarn test` as part of normal checks. + +> **Scope constraint:** The build script should be under 200 lines. Renderer functions should follow `generate-llms.mjs` style: plain ESM, zero external dependencies, simple file I/O. --- @@ -408,25 +423,23 @@ Before any package migration, set up the shared tooling. ### 0.1 Design the YAML glossary schema - Draft the schema based on the Interact package audit (from the previous conversation's findings) -- Decide on the marker syntax for templates (e.g., `{{term:id.field}}`, `{{table:id.params}}`) -- Decide on the set of "field renderers" needed (param-table, description, caveats-list, code-example) +- Decide the fields needed for each renderer function: what data does `renderTriggerFile`, `renderPresetCategoryFile`, and `renderOverviewFile` consume? +- Use the existing motion-presets rules files as the reference for what renderer output should look like — the schema should map directly to that structure +- Single `description` field per term (no llm/human split — the output format handles audience differentiation) ### 0.2 Build the context build script -- `scripts/build-context.js` -- reads YAML, processes templates, writes output +- `scripts/build-context.js` -- reads YAML, calls renderer functions for `rules/`, injects structured sections into `docs/` +- Renderer functions per file type (e.g., `renderPresetCategoryFile`, `renderTriggerFile`, `renderOverviewFile`): plain string-building, no template files, no marker parsing +- Docs injection: find `` / `` comment pairs in docs files and replace content between them with a generated param table - Must support running per-package: `node scripts/build-context.js --package interact` - Add a `build:context` script to root `package.json` +- Target: under 200 lines, plain ESM, zero external dependencies — same style as `scripts/generate-llms.mjs` -### 0.3 Build the validation script - -- `scripts/validate-context.js` -- reads YAML, checks against source -- Strategy for extracting ground truth from TS: Start with regex-based extraction of type members and destructuring defaults. If that proves brittle, evaluate [ts-morph](https://ts-morph.com/) (adds a devDep but is reliable). Decision deferred to implementation. -- Add a `validate:context` script to root `package.json` +### 0.3 CI verification -### 0.4 Decide on gitignore strategy - -- Test both approaches (committed vs generated) during Interact migration -- If committed: add a CI check that runs `build-context` and `git diff --exit-code` on the output +- Add a CI step that runs `build-context.js` and then `git diff --exit-code` to verify `rules/` output is up to date +- The Vitest audit tests from Phase 1.1 serve as the data validation layer — no separate validation script is needed --- @@ -445,8 +458,8 @@ Items to verify (from discrepancy list): | --- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | 1 | `allowA11yTriggers` default is `true` | Check `Interact` class static field and handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | | 2 | `namedEffect` requires object `{ type: '...' }`, not bare string | Test that `getRegisteredEffect` resolves `{ type: 'FadeIn' }` but not `'FadeIn'` | -| 3 | All 9 trigger types exist in `TriggerType` union | Import and enumerate from [types/triggers.ts](packages/interact/src/types/triggers.ts) | -| 4 | `pageVisible` uses same handler as `viewEnter` | Check handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | +| 3 | 6 primary user-facing triggers + 2 a11y variants + 1 deprecated in `TriggerType` union | Import and enumerate from [types/triggers.ts](packages/interact/src/types/triggers.ts); confirm `interest`/`activate` only activate via `allowA11yTriggers` | +| 4 | `pageVisible` deprecated: verify handler + confirm no new usage should be added | Check handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts); note removal timeline if known | | 5 | `AnimationEndParams.effectId` is unused at runtime | Read [handlers/animationEnd.ts](packages/interact/src/handlers/animationEnd.ts) and verify the param is ignored | | 6 | `viewProgress` handler ignores `ViewEnterParams` | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) | | 7 | `triggerType` defaults: `'once'` for viewEnter, `'alternate'` for event triggers | Check [core/resolvers.ts](packages/interact/src/core/resolvers.ts) and handler code | @@ -463,27 +476,27 @@ Based on verified ground truth, populate `packages/interact/context/glossary.yam **Categories and approximate entry counts:** -- **Triggers** (9 entries): hover, click, viewEnter, viewProgress, pointerMove, activate, interest, animationEnd, pageVisible -- each with params, defaults, caveats +- **Triggers** (8 active entries): hover, click, viewEnter, viewProgress, pointerMove, animationEnd (6 primary), activate, interest (2 a11y variants) — each with params, defaults, caveats. `pageVisible` gets one entry marked as deprecated with a pointer to `viewEnter`. - **Effect types** (3 entries): TimeEffect, ScrubEffect, StateEffect -- each with all typed fields and defaults - **Config types** (5-6 entries): InteractConfig, Interaction, Effect/EffectRef, SequenceConfig, Condition -- schema shapes - **API** (8-10 entries): Interact.create, Interact.destroy, Interact.setup, add, remove, generate, Interact.registerEffects, Interact.getSequence, etc. -- signatures and behavior - **Concepts** (5-6 entries): FOUC prevention, element resolution, a11y trigger mapping, conditions cascading, custom elements lifecycle - **Enums/unions** (4-5 entries): triggerType (once/repeat/alternate/state), stateAction, Fill, CompositeOperation -### 1.3 Design the Interact rules templates +### 1.3 Design the Interact rules output structure -The current rules have two overlapping "hub" files (`full-lean.md` at 692 lines, `integration.md` at 329 lines) plus 5 trigger-specific files. The new structure should eliminate the overlap. +The current rules have two overlapping "hub" files (`full-lean.md` at ~700 lines, `integration.md` at ~334 lines) plus 5 trigger-specific files. The new structure should eliminate the overlap. All files are **fully generated** from `glossary.yaml` via renderer functions. **Proposed rules/ file set for Interact:** -| File | Purpose | Approx. lines | -| ------------- | ----------------------------------------------------------------------------------------- | ------------- | -| `overview.md` | Package purpose, entry points, imports, quick-start snippet | 60-80 | -| `config.md` | InteractConfig schema, Interaction shape, Effect/EffectRef, sequences, conditions | 150-200 | -| `triggers.md` | All 9 triggers: params, defaults, behavior, per-trigger caveats | 200-250 | -| `effects.md` | TimeEffect, ScrubEffect, StateEffect: fields, defaults, triggerType/stateAction semantics | 150-200 | -| `pitfalls.md` | FOUC, overflow:clip, same-element source+target, hit-area jitter, a11y mapping | 80-100 | +| File | Purpose | Approx. lines | +| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | +| `overview.md` | Package purpose, entry points, imports, quick-start snippet | 60-80 | +| `config.md` | InteractConfig schema, Interaction shape, Effect/EffectRef, sequences, conditions | 150-200 | +| `triggers.md` | 6 primary triggers (full params/defaults/caveats) + a11y variants section (activate/interest, when enabled by `allowA11yTriggers`) + deprecated note for `pageVisible` | 200-250 | +| `effects.md` | TimeEffect, ScrubEffect, StateEffect: fields, defaults, triggerType/stateAction semantics | 150-200 | +| `pitfalls.md` | FOUC, overflow:clip, same-element source+target, hit-area jitter, a11y mapping | 80-100 | Each file gets: @@ -499,10 +512,12 @@ Each file gets: - Param tables are compact: `| name | type | default | notes |` -- one row per param, no verbose descriptions - Code examples are minimal (3-8 lines) and correct -### 1.4 Design the Interact docs templates +### 1.4 Design the Interact docs structure The current docs have 26 files but many are scaffolding (broken links, TBD sections, placeholder READMEs linking to nonexistent files). The new structure should contain only files with actual content. +**Docs are hand-authored.** The build script only injects structured sections (param tables, type listings) between `` / `` markers. All prose, examples, and explanatory content is written directly in the docs files. + **Proposed docs/ file set for Interact:** @@ -525,22 +540,23 @@ The current docs have 26 files but many are scaffolding (broken links, TBD secti | `examples/hover-click.md` | Hover and click interaction recipes | -All other current files (broken-link READMEs, TBD placeholders, the nonexistent targets) are **dropped**. Content from `full-lean.md` that overlaps with docs is reconciled -- the rules version becomes the SSOT; the docs version becomes a prose rewrite of the same data. +All other current files (broken-link READMEs, TBD placeholders, the nonexistent targets) are **dropped**. Content from `full-lean.md` that overlaps with docs is reconciled — the rules version (generated from YAML) becomes the SSOT for correctness; the docs version is prose written for humans, with param tables injected from the same YAML. -### 1.5 Build and validate +### 1.5 Build and verify -1. Run `node scripts/build-context.js --package interact` to generate `rules/` and `docs/` -2. Run `node scripts/validate-context.js --package interact` to verify glossary against source +1. Run `node scripts/build-context.js --package interact` to generate `rules/` and inject structured sections into `docs/` +2. Run `yarn workspace @wix/interact test` — the Vitest audit tests from 1.1 are the validation layer 3. Manually review generated rules for LLM readability: - Are tables compact and scannable? - Can an LLM read just `triggers.md` and get everything it needs about triggers? - Is the TOC + anchor pattern working for selective section reading? -4. Run the existing `apps/docs` build to verify docs still copy correctly +4. Run `node scripts/generate-llms.mjs` to verify `llms.txt` still generates correctly from the new rules structure. Update `STATIC_BODY` in `generate-llms.mjs` to reflect the correct trigger count (six primary trigger types) as part of this phase. +5. Run the existing `apps/docs` build to verify docs still copy correctly ### 1.6 Replace and verify 1. Back up current `rules/` and `docs/` (they are in git, so this is just a safety step) -2. Replace with generated output +2. Replace `rules/` with generated output; update `docs/` files with injected structured sections 3. Run existing Vitest tests (`yarn workspace @wix/interact test`) to ensure nothing depends on specific rules/docs file paths internally 4. Verify `apps/docs` build still works (it copies from `packages/interact/docs`) 5. Verify the docs app `copy-docs.js` script handles the new file structure @@ -576,8 +592,8 @@ Motion currently has **no rules/** directory. Its docs have significant issues: Same pattern as Interact: - `packages/motion/context/glossary.yaml` -- API functions, animation types, scroll/pointer concepts, `AnimationGroup`/`Sequence` APIs -- **New `rules/` directory** (Motion currently lacks one): `overview.md`, `api.md`, `animation-types.md`, `pitfalls.md` -- Restructured `docs/` -- drop `PLAN_DOCS.md`, fix or remove broken links, remove nonexistent targets, consolidate category docs that overlap with motion-presets docs +- **New `rules/` directory** (Motion currently lacks one): fully generated from glossary via renderer functions — `overview.md`, `api.md`, `animation-types.md`, `pitfalls.md` +- Restructured `docs/` -- hand-authored prose; param tables and API signatures injected from glossary. Drop `PLAN_DOCS.md`, fix or remove broken links, consolidate category docs that overlap with motion-presets docs **Important:** Motion's `docs/categories/` files (entrance-animations.md, scroll-animations.md, etc.) overlap heavily with motion-presets docs. These should be **removed or reduced to pointers** -- the preset details belong in motion-presets. Motion docs should cover the **engine API**, not preset catalogs. @@ -587,36 +603,33 @@ Same pattern as Interact: ### 3.1 Audit and verify ground truth -Motion-presets rules are the most structured of the three (YAML frontmatter, per-category files), but have known data errors. +Motion-presets rules are the most structured of the three (YAML frontmatter, per-category files), but have known data errors. The target scope for this phase is the **62 production-facing presets** (19 entrance + 19 scroll + 13 ongoing + 11 mouse). Background-scroll (12) and CustomMouse (1) are intentionally excluded from rules and docs. **Key items to verify:** -| # | What to verify | -| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | All preset names match barrel exports (currently 19+19+13+11+12 = 74) | -| 2 | Per-preset params and defaults match implementation (ParallaxScroll `parallaxFactor` not `speed`, ArcIn default `'right'` not `'bottom'`, Pulse intensity default `0` not `1.0`) | -| 3 | Mouse preset count (11 exported, not 9 or 12) | -| 4 | DVD is NOT exported from barrel | -| 5 | Angle convention is 0 = right (not up) | -| 6 | `range` param on ParallaxScroll is typed but unused | -| 7 | `TurnScroll.rotation` is typed but unused | -| 8 | Background-scroll `data-motion-part` values and targeting | +| # | What to verify | +| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | All 62 production-facing preset names match rules and docs (barrel exports 75; bg-scroll 12 and CustomMouse 1 are intentionally excluded) | +| 2 | Per-preset params and defaults match implementation (ParallaxScroll `parallaxFactor` not `speed`, ArcIn default `'right'` already fixed in rules, Pulse intensity default `0` not `1.0`) | +| 3 | **RESOLVED** Angle convention is 0 = right — confirmed in `presets-main.md`. Verify against individual preset source files. | +| 4 | DVD is NOT exported from barrel | +| 5 | `range` param on ParallaxScroll is typed but unused | +| 6 | `TurnScroll.rotation` is typed but unused | +| 7 | `docs/presets/README.md` still says "82+" total presets — update to 62 production presets across 4 categories | -**Verification approach:** For presets, the most effective verification is a script that: +**Verification approach:** Vitest test file that: -- Imports all barrel exports from `@wix/motion-presets` +- Imports the 62 production-facing presets from `@wix/motion-presets` barrel (excluding CustomMouse and bg-scroll) - For each, checks it matches the glossary entry (name, category) -- For param defaults, reads the source destructuring patterns - -This can be a Vitest test file that programmatically checks all presets. +- For param defaults, asserts against the source destructuring patterns -### 3.2 Create glossary, templates, build, replace +### 3.2 Create glossary, renderer functions, build, replace -- `packages/motion-presets/context/glossary.yaml` -- includes a `presets` section with every preset's params and defaults -- **Rules:** Keep the current split-by-category approach (it works well) but generate tables from glossary: `overview.md`, `entrance.md`, `scroll.md`, `ongoing.md`, `mouse.md`, `background-scroll.md` -- **Docs:** Per-preset pages only for presets that warrant detailed explanation (not all 74 need a dedicated page). Category READMEs with param tables generated from glossary. Drop broken-link placeholder pages. +- `packages/motion-presets/context/glossary.yaml` -- includes a `presets` section with every production-facing preset's params and defaults +- **Rules:** Keep the current split-by-category approach (it already works well). Fully generate from glossary using renderer functions: `presets-main.md`, `entrance-presets.md`, `scroll-presets.md`, `ongoing-presets.md`, `mouse-presets.md`. No background-scroll rules file. +- **Docs:** Per-preset pages only for presets that warrant detailed explanation (not all 62 need a dedicated page). Category READMEs updated with param tables injected from glossary. Drop broken-link placeholder pages. `docs/presets/README.md` count updated to 62 across 4 categories. ### 3.3 Cross-package validation @@ -640,9 +653,9 @@ flowchart TD P1E -->|No| P1C P1E -->|Yes| P1F[1.6: Replace Interact rules+docs] P1F --> P2A[2.1: Audit Motion ground truth] - P2A --> P2B[2.2: Create Motion glossary + templates + replace] + P2A --> P2B[2.2: Create Motion glossary + renderer functions + replace] P2B --> P3A[3.1: Audit Presets ground truth] - P3A --> P3B[3.2: Create Presets glossary + templates + replace] + P3A --> P3B[3.2: Create Presets glossary + renderer functions + replace] P3B --> P3C[3.3: Cross-package validation] ``` @@ -650,7 +663,7 @@ flowchart TD **Safety rule:** The old `rules/` and `docs/` files for a package are only deleted/replaced after: -1. The new glossary is validated against source code +1. The Vitest audit tests pass (these are the validation layer) 2. The build script produces output that passes manual review 3. Existing tests still pass 4. The docs app build still works (for interact) From b6cca2278e3cbe9f913cb4ea60e1f20e0b71d715 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Sun, 31 May 2026 17:50:52 +0300 Subject: [PATCH 18/18] updating plan --- .../context_ssot_restructure_c6889ec0.plan.md | 171 ++-- packages/interact/context/glossary.yaml | 838 ++++++++++++++++++ scripts/build-context.spec.md | 514 +++++++++++ 3 files changed, 1427 insertions(+), 96 deletions(-) create mode 100644 packages/interact/context/glossary.yaml create mode 100644 scripts/build-context.spec.md diff --git a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md index 16fb6f5e..f41985c1 100644 --- a/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md +++ b/.cursor/plans/context_ssot_restructure_c6889ec0.plan.md @@ -1,6 +1,6 @@ --- name: Context SSOT Restructure -overview: "Restructure the rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a single-source-of-truth system where structured data (params, defaults, types, term definitions) lives in YAML glossary files. rules/ output is fully generated by renderer functions; docs/ is hand-authored with structured sections injected from YAML. No template files, no marker syntax. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets." +overview: 'Restructure the rules/ and docs/ across all three packages (@wix/interact, @wix/motion, @wix/motion-presets) into a single-source-of-truth system where structured data (params, defaults, types, term definitions) lives in YAML glossary files. rules/ output is fully generated by renderer functions; docs/ is hand-authored with structured sections injected from YAML. No template files, no marker syntax. Work proceeds one package at a time: Interact, then Motion, then Motion-Presets.' todos: - id: phase-0-schema content: Design YAML glossary schema and renderer function signatures @@ -9,37 +9,37 @@ todos: content: Build scripts/build-context.js (YAML -> renderer functions -> rules/ full output; YAML -> inject structured sections into hand-authored docs/) status: pending - id: phase-1-audit - content: "Interact: Audit and verify all ground truth claims via ad-hoc Vitest tests" + content: 'Interact: Audit and verify all ground truth claims via ad-hoc Vitest tests' status: pending - id: phase-1-glossary - content: "Interact: Create context/glossary.yaml with all verified terms, params, defaults" + content: 'Interact: Create context/glossary.yaml with all verified terms, params, defaults' status: pending - id: phase-1-rules-templates - content: "Interact: Design renderer functions and write glossary entries for rules output (overview, config, triggers, effects, pitfalls)" + content: 'Interact: Design renderer functions and write glossary entries for rules output (overview, config, triggers, effects, pitfalls)' status: pending - id: phase-1-docs-templates - content: "Interact: Author hand-written docs files; add PARAMS:START/END markers for injected sections (guides, api, integration, examples)" + content: 'Interact: Author hand-written docs files; add PARAMS:START/END markers for injected sections (guides, api, integration, examples)' status: pending - id: phase-1-build-validate - content: "Interact: Run build, iterate until output is correct and readable; Vitest audit tests serve as the validation layer" + content: 'Interact: Run build, iterate until output is correct and readable; Vitest audit tests serve as the validation layer' status: pending - id: phase-1-replace - content: "Interact: Replace old rules/ and docs/ with generated output, verify all builds pass" + content: 'Interact: Replace old rules/ and docs/ with generated output, verify all builds pass' status: pending - id: phase-2-audit - content: "Motion: Audit and verify ground truth (API signatures, return types, scroll/pointer)" + content: 'Motion: Audit and verify ground truth (API signatures, return types, scroll/pointer)' status: pending - id: phase-2-migrate - content: "Motion: Create glossary, renderer functions, build, and replace (add new rules/ dir)" + content: 'Motion: Create glossary, renderer functions, build, and replace (add new rules/ dir)' status: pending - id: phase-3-audit - content: "Motion-Presets: Audit all 62 production-facing presets params/defaults against source (19 entrance + 19 scroll + 13 ongoing + 11 mouse)" + content: 'Motion-Presets: Audit all 62 production-facing presets params/defaults against source (19 entrance + 19 scroll + 13 ongoing + 11 mouse)' status: pending - id: phase-3-migrate - content: "Motion-Presets: Create glossary, renderer functions, build, and replace (62 production presets)" + content: 'Motion-Presets: Create glossary, renderer functions, build, and replace (62 production presets)' status: pending - id: phase-3-cross-validate - content: "Cross-package validation: verify shared concepts are consistent across all three packages" + content: 'Cross-package validation: verify shared concepts are consistent across all three packages' status: pending isProject: false --- @@ -94,7 +94,6 @@ This section captures the findings from the deep analysis of all 72 context file **File counts:** - | Package | `rules/` files | `docs/` files | Total | | -------------------------------------- | -------------- | ------------- | ------ | | Interact (`@wix/interact`) | 7 | 26 | 33 | @@ -102,7 +101,6 @@ This section captures the findings from the deep analysis of all 72 context file | Motion-Presets (`@wix/motion-presets`) | 5 | 14 | 19 | | **Total** | **12** | **60** | **72** | - **Structural asymmetry:** - **Interact** has both `rules/` (flat trigger-focused files: `click.md`, `hover.md`, `viewenter.md`, `viewprogress.md`, `pointermove.md`, plus two hub files `full-lean.md` at 692 lines and `integration.md` at 329 lines) and `docs/` (nested into `guides/`, `api/`, `examples/`, `integration/`, `advanced/`). @@ -119,39 +117,34 @@ This section captures the findings from the deep analysis of all 72 context file #### Critical (would cause broken integrations if an LLM follows the docs) - -| # | Topic | What docs/rules say | What the code does | Source files | -| --- | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | -| 1 | `allowA11yTriggers` default | `rules/integration.md`: **false**; `docs/api/types.md`: **true** | Code: **true** -- `click` auto-maps to `activate`, `hover` to `interest` | `src/handlers/index.ts` | -| 2 | `ParallaxScroll` param name | All docs consistently use `**speed`** | Code: `**parallaxFactor`** (default `0.5`) | `motion-presets/src/library/scroll/ParallaxScroll.ts`, `types.ts` | -| 3 | `Pulse` intensity default | `docs/ongoing/pulse.md`: **1.0** | Code: **0** | `motion-presets/src/library/ongoing/Pulse.ts` | -| 4 | `ArcIn` default direction | **RESOLVED in rules** (`entrance-presets.md` now states `'right'`). `docs/entrance/arc-in.md` still needs update. | Code: `**'right'`** | `motion-presets/src/library/entrance/ArcIn.ts` | -| 5 | `namedEffect` shape | Many docs use bare string: `namedEffect: 'FadeIn'` | Code requires object: `namedEffect: { type: 'FadeIn' }` | `motion/src/api/common.ts` `getNamedEffect` | -| 6 | `getCSSAnimation` return type | `api/core-functions.md`, `performance.md`: **string** | Code: **array of objects** `({ target, animation, keyframes, ... })` | `motion/src/api/cssAnimations.ts` | -| 7 | `AnimationEndParams.effectId` | Typed and documented as wiring mechanism | Handler **ignores it** (`__` param) | `interact/src/handlers/animationEnd.ts` | -| 8 | `viewProgress` params | `api/types.md` maps `viewProgress: ViewEnterParams` | Handler ignores those params; scroll options come from `Interact.setup({ scrollOptionsGetter })` | `interact/src/handlers/viewProgress.ts` | - +| # | Topic | What docs/rules say | What the code does | Source files | +| --- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | +| 1 | `allowA11yTriggers` default | `rules/integration.md`: **false**; `docs/api/types.md`: **true** | Code: **true** -- `click` auto-maps to `activate`, `hover` to `interest` | `src/handlers/index.ts` | +| 2 | `ParallaxScroll` param name | All docs consistently use `**speed`\*\* | Code: `**parallaxFactor`\*\* (default `0.5`) | `motion-presets/src/library/scroll/ParallaxScroll.ts`, `types.ts` | +| 3 | `Pulse` intensity default | `docs/ongoing/pulse.md`: **1.0** | Code: **0** | `motion-presets/src/library/ongoing/Pulse.ts` | +| 4 | `ArcIn` default direction | **RESOLVED in rules** (`entrance-presets.md` now states `'right'`). `docs/entrance/arc-in.md` still needs update. | Code: `**'right'`\*\* | `motion-presets/src/library/entrance/ArcIn.ts` | +| 5 | `namedEffect` shape | Many docs use bare string: `namedEffect: 'FadeIn'` | Code requires object: `namedEffect: { type: 'FadeIn' }` | `motion/src/api/common.ts` `getNamedEffect` | +| 6 | `getCSSAnimation` return type | `api/core-functions.md`, `performance.md`: **string** | Code: **array of objects** `({ target, animation, keyframes, ... })` | `motion/src/api/cssAnimations.ts` | +| 7 | `AnimationEndParams.effectId` | Typed and documented as wiring mechanism | Handler **ignores it** (`__` param) | `interact/src/handlers/animationEnd.ts` | +| 8 | `viewProgress` params | `api/types.md` maps `viewProgress: ViewEnterParams` | Handler ignores those params; scroll options come from `Interact.setup({ scrollOptionsGetter })` | `interact/src/handlers/viewProgress.ts` | #### Significant (causes confusion, may lead to subtle bugs) - -| # | Topic | Discrepancy | -| --- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| 9 | Sticky/tall-wrapper ViewTimeline source | `viewprogress.md` Rule 3: `key` on tall wrapper = source. `full-lean.md`: sticky child = source. Contradicts itself. | +| # | Topic | Discrepancy | +| --- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 9 | Sticky/tall-wrapper ViewTimeline source | `viewprogress.md` Rule 3: `key` on tall wrapper = source. `full-lean.md`: sticky child = source. Contradicts itself. | | 10 | Trigger taxonomy undocumented | No file explains the trigger taxonomy. Counts vary (7 or 9) because `activate`/`interest` are a11y variants (not independent user triggers) and `pageVisible` is deprecated. The correct framing: **6 primary user-facing triggers** (hover, click, viewEnter, viewProgress, pointerMove, animationEnd) + 2 a11y variants (activate, interest) enabled by `allowA11yTriggers: true`. `guides/README.md`'s "7" and `understanding-triggers.md`'s "9" are both partially correct but unexplained. | -| 11 | `pageVisible` trigger | **Soon to be deprecated.** Currently absent from most trigger tables; only in `api/types.md`. Uses viewEnter's IntersectionObserver handler. Docs should note deprecation status and point to `viewEnter` as the replacement. | -| 12 | Ongoing preset count | `presets-main.md`: **RESOLVED** (now correctly lists 13). `docs/presets/README.md`: still says 16. Barrel exports: **13**; DVD exists but is not barrel-exported. | -| 13 | Total documented preset count | `docs/presets/README.md`: "82+"; `README.md` (package root): **62** (19+19+13+11, bg-scroll and CustomMouse intentionally excluded). Barrel exports: 75 (includes 12 bg-scroll and CustomMouse). **Background-scroll (12) is intentionally excluded (not production-ready). CustomMouse is intentionally excluded (internal use for `customEffect`).** `docs/presets/README.md`'s "82+" figure is the remaining wrong value. | -| 14 | **RESOLVED** Angle convention | ~~`presets-main.md`: 0 = right; `_template.md`: 0 = up.~~ `presets-main.md` now correctly documents 0° = right throughout. | -| 15 | `customEffect` signature | Varies: 2-arg in rules, 3-arg in some docs. Actual depends on context (time: `progress` number; pointer: `Progress { x, y, v, active }`) | -| 16 | `TurnScroll.rotation` param | Typed in `types.ts` but **ignored** in implementation (fixed +/-45deg) | -| 17 | `ParallaxScroll.range` param | Typed but **unused** in `ParallaxScroll.ts` implementation | -| 18 | `generate-llms.mjs` trigger list | `scripts/generate-llms.mjs` `STATIC_BODY` hardcodes "**Five trigger types**: hover, click, viewEnter, viewProgress, pointerMove" — `animationEnd` is missing. This string is published to `llms.txt` via CI and directly misleads LLMs. Should become "Six primary trigger types: hover, click, viewEnter, viewProgress, pointerMove, animationEnd — plus accessible variants activate and interest." | - +| 11 | `pageVisible` trigger | **Soon to be deprecated.** Currently absent from most trigger tables; only in `api/types.md`. Uses viewEnter's IntersectionObserver handler. Docs should note deprecation status and point to `viewEnter` as the replacement. | +| 12 | Ongoing preset count | `presets-main.md`: **RESOLVED** (now correctly lists 13). `docs/presets/README.md`: still says 16. Barrel exports: **13**; DVD exists but is not barrel-exported. | +| 13 | Total documented preset count | `docs/presets/README.md`: "82+"; `README.md` (package root): **62** (19+19+13+11, bg-scroll and CustomMouse intentionally excluded). Barrel exports: 75 (includes 12 bg-scroll and CustomMouse). **Background-scroll (12) is intentionally excluded (not production-ready). CustomMouse is intentionally excluded (internal use for `customEffect`).** `docs/presets/README.md`'s "82+" figure is the remaining wrong value. | +| 14 | **RESOLVED** Angle convention | ~~`presets-main.md`: 0 = right; `_template.md`: 0 = up.~~ `presets-main.md` now correctly documents 0° = right throughout. | +| 15 | `customEffect` signature | Varies: 2-arg in rules, 3-arg in some docs. Actual depends on context (time: `progress` number; pointer: `Progress { x, y, v, active }`) | +| 16 | `TurnScroll.rotation` param | Typed in `types.ts` but **ignored** in implementation (fixed +/-45deg) | +| 17 | `ParallaxScroll.range` param | Typed but **unused** in `ParallaxScroll.ts` implementation | +| 18 | `generate-llms.mjs` trigger list | `scripts/generate-llms.mjs` `STATIC_BODY` hardcodes "**Five trigger types**: hover, click, viewEnter, viewProgress, pointerMove" — `animationEnd` is missing. This string is published to `llms.txt` via CI and directly misleads LLMs. Should become "Six primary trigger types: hover, click, viewEnter, viewProgress, pointerMove, animationEnd — plus accessible variants activate and interest." | #### Minor (quality / completeness) - | # | Topic | | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 19 | **36+ broken internal links** across all packages: references to nonexistent files like `testing.md`, `performance.md`, `playground/`, `scroll-animations.md`, etc. | @@ -160,12 +153,10 @@ This section captures the findings from the deep analysis of all 72 context file | 22 | **RESOLVED** `unit` vs `type` for length objects: `presets-main.md` now consistently uses `{ value, unit: 'px' }` throughout. | | 23 | `Interact.getElement` referenced in docs but does not exist as a public API | - ### Repetition Analysis The same information is repeated across multiple files with inconsistent phrasing: - | Concept | Files that describe it | Copies | | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | | FOUC prevention (`generate` + `initial`) | `rules/integration.md`, `rules/viewenter.md`, `rules/full-lean.md`, `docs/api/functions.md`, `docs/examples/entrance-animations.md`, `docs/guides/getting-started.md` | 6 | @@ -177,7 +168,6 @@ The same information is repeated across multiple files with inconsistent phrasin | Stagger/sequence formula | motion `docs/core-concepts.md`, `docs/api/sequence.md`, `docs/api/get-sequence.md`, interact `docs/guides/sequences.md` | 4 | | Reduced motion / a11y | Described independently across ~8 files in all three packages | ~8 | - ### Verified Ground Truth: What Each Package Actually Contains #### `@wix/interact` -- Declarative Interaction Layer @@ -214,7 +204,7 @@ The same information is repeated across multiple files with inconsistent phrasin `triggerType` values: `'once' | 'repeat' | 'alternate' | 'state'`; defaults: `'once'` for viewEnter/animationEnd (and deprecated pageVisible), `'alternate'` for hover/click/activate/interest -`**stateAction` values:** `'add' | 'remove' | 'toggle' | 'clear'`; default: `'toggle'` +`**stateAction` values:\*\* `'add' | 'remove' | 'toggle' | 'clear'`; default: `'toggle'` **Condition types:** `'media' | 'container' | 'selector'` only (no `'custom'`) @@ -241,17 +231,18 @@ The same information is repeated across multiple files with inconsistent phrasin - `registerEffects(effects)` merges into internal registry; presets resolve by `namedEffect.type` string - `fastdom` used for DOM batching (measure/mutate), not re-exported -`**AnimationGroup` API:** `play`, `pause`, `reverse`, `cancel`, `progress(p)`, `setPlaybackRate`, `getProgress`, `onFinish`, `ready`, `finished`, `playState` +`**AnimationGroup` API:\*\* `play`, `pause`, `reverse`, `cancel`, `progress(p)`, `setPlaybackRate`, `getProgress`, `onFinish`, `ready`, `finished`, `playState` -`**Sequence`:** extends `AnimationGroup`; stagger formula: `offset[i] = easing(i / last) * last * offsetMs` (integer-truncated); supports `addGroups`/`removeGroups` +`**Sequence`:\*_ extends `AnimationGroup`; stagger formula: `offset[i] = easing(i / last) _ last \* offsetMs`(integer-truncated); supports`addGroups`/`removeGroups` -`**RangeOffset` names:** `'entry' | 'exit' | 'contain' | 'cover' | 'entry-crossing' | 'exit-crossing'` +`**RangeOffset` names:\*\* `'entry' | 'exit' | 'contain' | 'cover' | 'entry-crossing' | 'exit-crossing'` #### `@wix/motion-presets` -- Ready-Made Effects **5 categories, 75 barrel-exported presets. Production-facing (documented in rules and docs): 62 across 4 categories.** Intentional exclusions from documentation: + - **Background-scroll (12):** Not production-ready. Present in barrel but excluded from all rules and docs. - **`CustomMouse` (1):** Internal use only (for `customEffect`). Present in barrel but excluded from rules and docs. @@ -279,7 +270,6 @@ Intentional exclusions from documentation: ### Cross-Package Shared Concepts (need SSOT) - | Concept | Owner (should be SSOT) | Referenced by | | ------------------------------------------------------ | ---------------------- | ----------------- | | `registerEffects` API | motion | interact, presets | @@ -293,7 +283,6 @@ Intentional exclusions from documentation: | `prefers-reduced-motion` pattern | interact | motion, presets | | Length/unit convention (`{ value, unit }`) | motion | presets | - ### Build and Test Infrastructure (Existing) - **Monorepo:** Yarn 4 workspaces, no Turbo/Nx @@ -361,20 +350,20 @@ Each `glossary.yaml` contains entries like: terms: - id: trigger-viewEnter name: viewEnter - category: trigger # trigger | effect-type | config | api | concept | preset - description: "Fires when element crosses viewport threshold via IntersectionObserver." + category: trigger # trigger | effect-type | config | api | concept | preset + description: 'Fires when element crosses viewport threshold via IntersectionObserver.' params: - name: threshold type: number default: 0.2 - description: "Fraction of element that must be visible" + description: 'Fraction of element that must be visible' - name: inset type: string default: null - description: "Mapped to IntersectionObserver rootMargin" + description: 'Mapped to IntersectionObserver rootMargin' caveats: - "Same source+target: only triggerType 'once' is reliable" - sourceFile: src/types/triggers.ts # used by Vitest audit tests + sourceFile: src/types/triggers.ts # used by Vitest audit tests related: [concept-fouc] ``` @@ -453,22 +442,20 @@ Before writing any glossary entries, verify every claim in the current rules aga Items to verify (from discrepancy list): - -| # | What to verify | How | -| --- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| 1 | `allowA11yTriggers` default is `true` | Check `Interact` class static field and handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | -| 2 | `namedEffect` requires object `{ type: '...' }`, not bare string | Test that `getRegisteredEffect` resolves `{ type: 'FadeIn' }` but not `'FadeIn'` | +| # | What to verify | How | +| --- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | `allowA11yTriggers` default is `true` | Check `Interact` class static field and handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts) | +| 2 | `namedEffect` requires object `{ type: '...' }`, not bare string | Test that `getRegisteredEffect` resolves `{ type: 'FadeIn' }` but not `'FadeIn'` | | 3 | 6 primary user-facing triggers + 2 a11y variants + 1 deprecated in `TriggerType` union | Import and enumerate from [types/triggers.ts](packages/interact/src/types/triggers.ts); confirm `interest`/`activate` only activate via `allowA11yTriggers` | -| 4 | `pageVisible` deprecated: verify handler + confirm no new usage should be added | Check handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts); note removal timeline if known | -| 5 | `AnimationEndParams.effectId` is unused at runtime | Read [handlers/animationEnd.ts](packages/interact/src/handlers/animationEnd.ts) and verify the param is ignored | -| 6 | `viewProgress` handler ignores `ViewEnterParams` | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) | -| 7 | `triggerType` defaults: `'once'` for viewEnter, `'alternate'` for event triggers | Check [core/resolvers.ts](packages/interact/src/core/resolvers.ts) and handler code | -| 8 | `stateAction` default is `'toggle'` | Check [handlers/effectHandlers.ts](packages/interact/src/handlers/effectHandlers.ts) `createTransitionHandler` | -| 9 | `Condition.type` accepts only `'media' | 'container' | -| 10 | Sticky/tall-wrapper ViewTimeline: which element is the source | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) to determine actual behavior | -| 11 | Element resolution order (key cascade) | Read [core/Interact.ts](packages/interact/src/core/Interact.ts) `parseConfig` and [core/add.ts](packages/interact/src/core/add.ts) | -| 12 | `generate()` signature and return type | Import from [core/css.ts](packages/interact/src/core/css.ts) | - +| 4 | `pageVisible` deprecated: verify handler + confirm no new usage should be added | Check handler mapping in [handlers/index.ts](packages/interact/src/handlers/index.ts); note removal timeline if known | +| 5 | `AnimationEndParams.effectId` is unused at runtime | Read [handlers/animationEnd.ts](packages/interact/src/handlers/animationEnd.ts) and verify the param is ignored | +| 6 | `viewProgress` handler ignores `ViewEnterParams` | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) | +| 7 | `triggerType` defaults: `'once'` for viewEnter, `'alternate'` for event triggers | Check [core/resolvers.ts](packages/interact/src/core/resolvers.ts) and handler code | +| 8 | `stateAction` default is `'toggle'` | Check [handlers/effectHandlers.ts](packages/interact/src/handlers/effectHandlers.ts) `createTransitionHandler` | +| 9 | `Condition.type` accepts only `'media' | 'container' | +| 10 | Sticky/tall-wrapper ViewTimeline: which element is the source | Read [handlers/viewProgress.ts](packages/interact/src/handlers/viewProgress.ts) to determine actual behavior | +| 11 | Element resolution order (key cascade) | Read [core/Interact.ts](packages/interact/src/core/Interact.ts) `parseConfig` and [core/add.ts](packages/interact/src/core/add.ts) | +| 12 | `generate()` signature and return type | Import from [core/css.ts](packages/interact/src/core/css.ts) | ### 1.2 Create the Interact glossary @@ -489,15 +476,13 @@ The current rules have two overlapping "hub" files (`full-lean.md` at ~700 lines **Proposed rules/ file set for Interact:** - -| File | Purpose | Approx. lines | -| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -| `overview.md` | Package purpose, entry points, imports, quick-start snippet | 60-80 | -| `config.md` | InteractConfig schema, Interaction shape, Effect/EffectRef, sequences, conditions | 150-200 | +| File | Purpose | Approx. lines | +| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | +| `overview.md` | Package purpose, entry points, imports, quick-start snippet | 60-80 | +| `config.md` | InteractConfig schema, Interaction shape, Effect/EffectRef, sequences, conditions | 150-200 | | `triggers.md` | 6 primary triggers (full params/defaults/caveats) + a11y variants section (activate/interest, when enabled by `allowA11yTriggers`) + deprecated note for `pageVisible` | 200-250 | -| `effects.md` | TimeEffect, ScrubEffect, StateEffect: fields, defaults, triggerType/stateAction semantics | 150-200 | -| `pitfalls.md` | FOUC, overflow:clip, same-element source+target, hit-area jitter, a11y mapping | 80-100 | - +| `effects.md` | TimeEffect, ScrubEffect, StateEffect: fields, defaults, triggerType/stateAction semantics | 150-200 | +| `pitfalls.md` | FOUC, overflow:clip, same-element source+target, hit-area jitter, a11y mapping | 80-100 | Each file gets: @@ -520,7 +505,6 @@ The current docs have 26 files but many are scaffolding (broken links, TBD secti **Proposed docs/ file set for Interact:** - | File | Purpose | | --------------------------- | ------------------------------------------------------- | | `README.md` | Getting started, install, entry points, navigation | @@ -539,7 +523,6 @@ The current docs have 26 files but many are scaffolding (broken links, TBD secti | `examples/entrance.md` | Entrance animation recipes | | `examples/hover-click.md` | Hover and click interaction recipes | - All other current files (broken-link READMEs, TBD placeholders, the nonexistent targets) are **dropped**. Content from `full-lean.md` that overlaps with docs is reconciled — the rules version (generated from YAML) becomes the SSOT for correctness; the docs version is prose written for humans, with param tables injected from the same YAML. ### 1.5 Build and verify @@ -547,9 +530,11 @@ All other current files (broken-link READMEs, TBD placeholders, the nonexistent 1. Run `node scripts/build-context.js --package interact` to generate `rules/` and inject structured sections into `docs/` 2. Run `yarn workspace @wix/interact test` — the Vitest audit tests from 1.1 are the validation layer 3. Manually review generated rules for LLM readability: - - Are tables compact and scannable? - - Can an LLM read just `triggers.md` and get everything it needs about triggers? - - Is the TOC + anchor pattern working for selective section reading? + +- Are tables compact and scannable? +- Can an LLM read just `triggers.md` and get everything it needs about triggers? +- Is the TOC + anchor pattern working for selective section reading? + 4. Run `node scripts/generate-llms.mjs` to verify `llms.txt` still generates correctly from the new rules structure. Update `STATIC_BODY` in `generate-llms.mjs` to reflect the correct trigger count (six primary trigger types) as part of this phase. 5. Run the existing `apps/docs` build to verify docs still copy correctly @@ -572,7 +557,6 @@ Motion currently has **no rules/** directory. Its docs have significant issues: **Key items to verify:** - | # | What to verify | | --- | -------------------------------------------------------------------------- | | 1 | `getCSSAnimation` return type (array of objects, not string) | @@ -586,7 +570,6 @@ Motion currently has **no rules/** directory. Its docs have significant issues: | 9 | `CustomAnimation` rAF loop behavior for `customEffect` | | 10 | ViewTimeline detection and fallback path | - ### 2.2 Create glossary, templates, build, replace Same pattern as Interact: @@ -607,17 +590,15 @@ Motion-presets rules are the most structured of the three (YAML frontmatter, per **Key items to verify:** - -| # | What to verify | -| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 1 | All 62 production-facing preset names match rules and docs (barrel exports 75; bg-scroll 12 and CustomMouse 1 are intentionally excluded) | +| # | What to verify | +| --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | All 62 production-facing preset names match rules and docs (barrel exports 75; bg-scroll 12 and CustomMouse 1 are intentionally excluded) | | 2 | Per-preset params and defaults match implementation (ParallaxScroll `parallaxFactor` not `speed`, ArcIn default `'right'` already fixed in rules, Pulse intensity default `0` not `1.0`) | -| 3 | **RESOLVED** Angle convention is 0 = right — confirmed in `presets-main.md`. Verify against individual preset source files. | -| 4 | DVD is NOT exported from barrel | -| 5 | `range` param on ParallaxScroll is typed but unused | -| 6 | `TurnScroll.rotation` is typed but unused | -| 7 | `docs/presets/README.md` still says "82+" total presets — update to 62 production presets across 4 categories | - +| 3 | **RESOLVED** Angle convention is 0 = right — confirmed in `presets-main.md`. Verify against individual preset source files. | +| 4 | DVD is NOT exported from barrel | +| 5 | `range` param on ParallaxScroll is typed but unused | +| 6 | `TurnScroll.rotation` is typed but unused | +| 7 | `docs/presets/README.md` still says "82+" total presets — update to 62 production presets across 4 categories | **Verification approach:** Vitest test file that: @@ -659,8 +640,6 @@ flowchart TD P3B --> P3C[3.3: Cross-package validation] ``` - - **Safety rule:** The old `rules/` and `docs/` files for a package are only deleted/replaced after: 1. The Vitest audit tests pass (these are the validation layer) diff --git a/packages/interact/context/glossary.yaml b/packages/interact/context/glossary.yaml new file mode 100644 index 00000000..1eb94e9c --- /dev/null +++ b/packages/interact/context/glossary.yaml @@ -0,0 +1,838 @@ +# packages/interact/context/glossary.yaml +# +# Single source of truth for @wix/interact parameter tables, type shapes, +# defaults, and term definitions. +# +# Consumed by scripts/build-context.js to: +# - Fully generate rules/ output files via renderer functions +# - Inject structured param tables into hand-authored docs/ files +# between / markers +# +# Schema +# ------ +# Each term has: +# id - unique slug used in renderer lookups and PARAMS markers +# name - display name (code identifier or phrase) +# category - trigger | effect-type | config | api | concept | enum +# description - single authoritative description (prose) +# params - list of { name, type, default, required, description } +# values - list of { value, description } (enum terms only) +# caveats - list of string warnings / gotchas +# sourceFile - path relative to packages/interact/ (for audit references) +# related - list of other term IDs for cross-references +# +# Verified against source on 2026-05-31 (see audit in context_ssot_restructure plan). + +package: '@wix/interact' + +terms: + # ─── Triggers ──────────────────────────────────────────────────────────────── + + - id: trigger-hover + name: hover + category: trigger + description: >- + Fires on mouseenter / mouseleave. When allowA11yTriggers is true (default), + the library transparently remaps hover to the interest handler, which adds + focusin / focusout alongside the mouse events for keyboard accessibility. + params: [] + effect_note: >- + No trigger-level params. Control animation behavior via triggerType on + TimeEffect (default: 'alternate') or stateAction on StateEffect (default: 'toggle'). + default_triggerType: alternate + caveats: + - "Use triggerType: 'alternate' (default) for enter/leave animation pairs." + - 'Do not mix TimeEffect.triggerType with StateEffect.stateAction on the same effect.' + - 'When allowA11yTriggers is true (default), hover transparently maps to the interest handler.' + sourceFile: src/handlers/eventTrigger.ts + related: [trigger-interest, concept-a11y-mapping] + + - id: trigger-click + name: click + category: trigger + description: >- + Fires on click. When allowA11yTriggers is true (default), the library + transparently remaps click to the activate handler, which adds keydown + Enter/Space handling for keyboard accessibility. + params: [] + effect_note: >- + No trigger-level params. Control animation behavior via triggerType on + TimeEffect (default: 'alternate') or stateAction on StateEffect (default: 'toggle'). + default_triggerType: alternate + caveats: + - "Use triggerType: 'alternate' (default) for toggle-on / toggle-off behavior." + - 'When allowA11yTriggers is true (default), click transparently maps to the activate handler.' + sourceFile: src/handlers/eventTrigger.ts + related: [trigger-activate, concept-a11y-mapping] + + - id: trigger-viewEnter + name: viewEnter + category: trigger + description: >- + Fires when the element crosses the viewport threshold via IntersectionObserver. + Primary trigger for entrance animations. Supports FOUC prevention via + generate() CSS and the initial flag. + params: + - name: threshold + type: number + default: '0.2' + required: false + description: 'Fraction of the element visible in viewport to trigger (0–1).' + - name: inset + type: string + default: 'null' + required: false + description: 'Maps to IntersectionObserver rootMargin. Shrinks or expands the detection zone.' + - name: useSafeViewEnter + type: boolean + default: 'false' + required: false + description: 'Internal fallback for environments where IntersectionObserver timing is unreliable.' + default_triggerType: once + caveats: + - "When source and target are the same element, only triggerType: 'once' is reliable. Other triggerType values require separate source and target elements." + - 'FOUC prevention requires both generate(config) CSS injected into AND the initial flag on each entrance-animated element.' + - 'pageVisible is a deprecated alias that shares this IntersectionObserver handler.' + sourceFile: src/handlers/viewEnter.ts + related: [concept-fouc, trigger-pageVisible] + + - id: trigger-viewProgress + name: viewProgress + category: trigger + description: >- + Scroll-driven animation. Uses native ViewTimeline when available; falls back to + fizban Scroll + getScrubScene. Animation progress is driven by the element's + scroll position relative to the viewport. Configure the scrub range via + rangeStart/rangeEnd on the ScrubEffect — not on params. + params: [] + effect_note: >- + Trigger params (ViewEnterParams) are accepted in the TypeScript type but ignored + at runtime — the handler uses __ as the param name. Scrub range is configured + via rangeStart/rangeEnd on the ScrubEffect. + default_triggerType: null + caveats: + - 'Trigger-level params (ViewEnterParams shape) are ignored at runtime. Use ScrubEffect.rangeStart / rangeEnd instead.' + - 'For sticky/tall-wrapper patterns, the source element (the key element) is the ViewTimeline source — not the sticky child.' + - 'Respects reducedMotion: skips the animation entirely when reducedMotion is true.' + - 'Falls back to fizban Scroll + getScrubScene when window.ViewTimeline is unavailable.' + sourceFile: src/handlers/viewProgress.ts + related: [effect-scrub] + + - id: trigger-pointerMove + name: pointerMove + category: trigger + description: >- + Drives animation progress from mouse / pointer position using getScrubScene. + The pointer position along the chosen axis is mapped to a 0–1 progress value. + params: + - name: hitArea + type: "'self' | 'root'" + default: 'undefined (document body)' + required: false + description: "Element that captures pointer events. 'self' = source element, 'root' = document root. Omit to use document body." + - name: axis + type: "'x' | 'y'" + default: "'y'" + required: false + description: 'Pointer axis that drives animation progress.' + default_triggerType: null + caveats: + - 'hitArea omitted means document body is the pointer capture area.' + - "Do not use hitArea: 'self' with effects that change the element's size or position — the transform shifts the hit area, causing jitter." + sourceFile: src/handlers/pointerMove.ts + related: [effect-scrub] + + - id: trigger-animationEnd + name: animationEnd + category: trigger + description: >- + Chains one animation after another. Listens for animationend on the source + element and plays the effect on the target when it fires. + params: + - name: effectId + type: string + default: '—' + required: true + description: 'ID of the preceding CSS animation effect to listen for. Used to filter which animationend event triggers the chain.' + default_triggerType: once + caveats: + - 'effectId filters the animationend event — it is not the primary trigger mechanism.' + - 'The source element must be running a CSS animation for animationend to fire.' + sourceFile: src/handlers/animationEnd.ts + related: [] + + - id: trigger-activate + name: activate + category: trigger + description: >- + Accessible variant of click. Handles click + keydown Enter/Space. + When allowA11yTriggers is true (default), the library automatically uses this + handler when trigger is 'click' — users do not configure activate directly. + params: [] + effect_note: 'Same as click. Control via triggerType on TimeEffect or stateAction on StateEffect.' + default_triggerType: alternate + caveats: + - "Automatically activated when allowA11yTriggers: true and trigger: 'click'. Users configure 'click', not 'activate'." + - "Can be used directly as trigger: 'activate' when fine-grained control is needed." + sourceFile: src/handlers/eventTrigger.ts + related: [trigger-click, concept-a11y-mapping] + + - id: trigger-interest + name: interest + category: trigger + description: >- + Accessible variant of hover. Handles mouseenter + focusin (enter) and + mouseleave + focusout (leave). When allowA11yTriggers is true (default), + the library automatically uses this handler when trigger is 'hover'. + params: [] + effect_note: 'Same as hover. Control via triggerType on TimeEffect or stateAction on StateEffect.' + default_triggerType: alternate + caveats: + - "Automatically activated when allowA11yTriggers: true and trigger: 'hover'. Users configure 'hover', not 'interest'." + - "Can be used directly as trigger: 'interest' when fine-grained control is needed." + sourceFile: src/handlers/eventTrigger.ts + related: [trigger-hover, concept-a11y-mapping] + + - id: trigger-pageVisible + name: pageVisible + category: trigger + deprecated: true + description: >- + DEPRECATED. Shares the viewEnter IntersectionObserver handler. + Will be removed in a future version. Use trigger: 'viewEnter' instead. + params: [] + default_triggerType: once + caveats: + - "Deprecated. Use trigger: 'viewEnter' as the drop-in replacement." + sourceFile: src/handlers/viewEnter.ts + related: [trigger-viewEnter] + + # ─── Effect Types ───────────────────────────────────────────────────────────── + + - id: effect-time + name: TimeEffect + category: effect-type + description: >- + Duration-based animation. Plays a keyframe, named, or custom animation over + a fixed time. Used with hover, click, viewEnter, animationEnd, and their + a11y variants. + params: + - name: duration + type: number + default: '—' + required: true + description: 'Animation duration in milliseconds.' + - name: easing + type: string + default: 'null' + required: false + description: "CSS or named easing string (e.g. 'ease-out', 'cubicOut')." + - name: delay + type: number + default: '0' + required: false + description: 'Delay before animation starts in ms.' + - name: iterations + type: number + default: '1' + required: false + description: 'Number of times to repeat. Use Infinity for a continuous loop.' + - name: alternate + type: boolean + default: 'false' + required: false + description: 'Alternate animation direction on each iteration.' + - name: fill + type: "'none' | 'forwards' | 'backwards' | 'both'" + default: "'forwards'" + required: false + description: 'CSS animation fill mode.' + - name: reversed + type: boolean + default: 'false' + required: false + description: 'Play the animation in reverse.' + - name: triggerType + type: "'once' | 'repeat' | 'alternate' | 'state'" + default: 'trigger-dependent' + required: false + description: 'Controls animation response to repeated trigger events. Default varies by trigger type.' + - name: composite + type: CompositeOperation + default: 'null' + required: false + description: 'WAAPI composite operation for layering animations.' + effect_property_note: >- + Requires exactly one animation payload: namedEffect: { type: string, ...params }, + keyframeEffect: { name: string, keyframes: Keyframe[] }, or + customEffect: (element: Element, progress: any) => void. + caveats: + - "triggerType default is 'once' for viewEnter / animationEnd; 'alternate' for hover / click / activate / interest." + - "Do not set triggerType: 'state' alongside stateAction — those belong to StateEffect, not TimeEffect." + sourceFile: src/types/effects.ts + related: [enum-triggerType] + + - id: effect-scrub + name: ScrubEffect + category: effect-type + description: >- + Scroll- or pointer-driven animation. Progress is controlled externally by + scroll position (viewProgress) or pointer movement (pointerMove) rather than + playing over fixed time. + params: + - name: rangeStart + type: RangeOffset + default: 'null' + required: false + description: "Start of the ViewTimeline scroll range. Shape: { name: RangeOffsetName, offset: CSSPercentValue }. RangeOffset names: 'entry' | 'exit' | 'contain' | 'cover' | 'entry-crossing' | 'exit-crossing'." + - name: rangeEnd + type: RangeOffset + default: 'null' + required: false + description: 'End of the ViewTimeline scroll range. Same shape as rangeStart.' + - name: centeredToTarget + type: boolean + default: 'false' + required: false + description: 'Center the timeline scroll range on the target element rather than the source.' + - name: easing + type: string + default: 'null' + required: false + description: 'CSS easing string for the scrub animation.' + - name: iterations + type: number + default: '1' + required: false + description: 'Number of animation iterations.' + - name: alternate + type: boolean + default: 'false' + required: false + description: 'Alternate direction on each iteration.' + - name: fill + type: "'none' | 'forwards' | 'backwards' | 'both'" + default: "'both'" + required: false + description: 'CSS animation fill mode.' + - name: reversed + type: boolean + default: 'false' + required: false + description: 'Reverse the animation direction.' + - name: transitionDuration + type: number + default: 'null' + required: false + description: 'Duration (ms) of ease-in / ease-out transition at scrub endpoints.' + - name: transitionDelay + type: number + default: 'null' + required: false + description: 'Delay (ms) for the scrub endpoint transition.' + - name: transitionEasing + type: ScrubTransitionEasing + default: 'null' + required: false + description: 'Easing for the scrub endpoint transition.' + - name: composite + type: CompositeOperation + default: 'null' + required: false + description: 'WAAPI composite operation.' + effect_property_note: 'Requires exactly one of: namedEffect, keyframeEffect, or customEffect.' + caveats: + - "Native ViewTimeline path: uses duration: 'auto'. Fallback path: duration 99.99 with manual scrub." + - 'rangeStart / rangeEnd configure the scroll range — do not put these in trigger params.' + sourceFile: src/types/effects.ts + related: [trigger-viewProgress, trigger-pointerMove] + + - id: effect-state + name: StateEffect + category: effect-type + description: >- + CSS class / state toggle animation. Adds, removes, or toggles a CSS class or + custom state on the target element. Used with hover, click, and their a11y + variants. Timing is controlled by CSS transitions, not by duration. + params: + - name: stateAction + type: "'add' | 'remove' | 'toggle' | 'clear'" + default: "'toggle'" + required: false + description: 'Class manipulation action on trigger activation.' + - name: effectId + type: string + default: 'null' + required: false + description: 'ID for this state effect — referenced by animationEnd trigger chains.' + - name: key + type: string + default: 'null' + required: false + description: 'Override target element key.' + - name: transition + type: 'TransitionOptions & { styleProperties: StyleProperty[] }' + default: 'null' + required: false + description: 'CSS transition spec including target style properties. Mutually exclusive with transitionProperties.' + - name: transitionProperties + type: 'TransitionProperty[]' + default: 'null' + required: false + description: 'Per-property transition overrides. Mutually exclusive with transition.' + caveats: + - 'Use transition OR transitionProperties — not both on the same StateEffect.' + - "stateAction: 'clear' removes all tracked states from the element." + - 'Does not require duration — CSS transition declarations control timing.' + sourceFile: src/types/effects.ts + related: [enum-stateAction] + + # ─── Config Types ───────────────────────────────────────────────────────────── + + - id: config-InteractConfig + name: InteractConfig + category: config + description: >- + Root configuration object passed to Interact.create(). Defines all + trigger-effect bindings and shared named resources. JSON-serializable + by design. + params: + - name: interactions + type: 'Interaction[]' + default: '—' + required: true + description: 'Array of interaction definitions. Each entry binds a trigger to one or more effects.' + - name: effects + type: 'Record' + default: '{}' + required: false + description: 'Reusable effect registry. Effects referenced by effectId from interactions.' + - name: sequences + type: 'Record' + default: '{}' + required: false + description: 'Reusable sequence definitions. Referenced by sequenceId from interactions.' + - name: conditions + type: 'Record' + default: '{}' + required: false + description: 'Named conditions (media / container / selector). Referenced by ID from interactions or effects.' + caveats: + - 'JSON-serializable — no functions at the config root level (customEffect goes in the effect payload, not at config level).' + - 'Each Interact.create(config) call creates a separate independent instance.' + sourceFile: src/types/config.ts + related: [config-Interaction] + + - id: config-Interaction + name: Interaction + category: config + description: >- + Binds a trigger to one or more effects or sequences on a specific element. + The key field matches the element's data-interact-key (web) or interactKey (React). + params: + - name: key + type: string + default: '—' + required: true + description: 'Matches data-interact-key (web) or interactKey (React). Identifies the source element.' + - name: trigger + type: TriggerType + default: '—' + required: true + description: 'Trigger type: hover | click | viewEnter | viewProgress | pointerMove | animationEnd | activate | interest.' + - name: params + type: TriggerParams + default: 'null' + required: false + description: 'Trigger-specific params. See individual trigger entries for available fields.' + - name: effects + type: 'Effect[]' + default: 'null' + required: false + description: 'Effects to play when triggered. At least one of effects or sequences is required.' + - name: sequences + type: '(SequenceConfig | SequenceConfigRef)[]' + default: 'null' + required: false + description: 'Sequences to play when triggered. At least one of effects or sequences is required.' + - name: selector + type: string + default: 'null' + required: false + description: 'CSS selector to refine source / target within the keyed element.' + - name: listContainer + type: string + default: 'null' + required: false + description: 'CSS selector for a list container. Trigger attaches to each direct child.' + - name: listItemSelector + type: string + default: 'null' + required: false + description: 'Filter which children of listContainer participate. Omit to select all direct children.' + - name: conditions + type: 'string[]' + default: 'null' + required: false + description: 'IDs of conditions that must all pass for this interaction to activate.' + caveats: + - 'At least one of effects or sequences must be provided.' + - 'Multiple entries in effects all fire simultaneously when the trigger activates.' + sourceFile: src/types/config.ts + related: [config-InteractConfig, concept-element-resolution] + + - id: config-SequenceConfig + name: SequenceConfig + category: config + description: >- + Defines a staggered sequence of effects with coordinated timing offsets. + Used inline in Interaction.sequences or as a reusable entry in + InteractConfig.sequences referenced by sequenceId. + params: + - name: effects + type: '(Effect | EffectRef)[]' + default: '—' + required: true + description: 'Ordered list of effects in the sequence.' + - name: offset + type: number + default: '0' + required: false + description: 'Milliseconds between consecutive items in the stagger.' + - name: offsetEasing + type: 'string | ((p: number) => number)' + default: "'linear'" + required: false + description: 'Easing curve for the stagger distribution. CSS easing string or JS function.' + - name: delay + type: number + default: '0' + required: false + description: 'Base delay in ms before the entire sequence starts.' + - name: triggerType + type: "'once' | 'repeat' | 'alternate' | 'state'" + default: 'trigger-dependent' + required: false + description: 'Controls playback behavior on repeated triggers. Same semantics as TimeEffect.triggerType.' + - name: sequenceId + type: string + default: 'null' + required: false + description: 'When defined in InteractConfig.sequences, sets the ID for referencing via SequenceConfigRef.' + - name: conditions + type: 'string[]' + default: 'null' + required: false + description: 'Condition IDs that must all pass for this sequence to activate.' + caveats: + - 'Stagger formula: offset[i] = easing(i / last) * last * offsetMs (integer-truncated).' + - 'offsetEasing controls spacing between items; delay shifts the whole sequence.' + sourceFile: src/types/config.ts + related: [] + + - id: config-Condition + name: Condition + category: config + description: >- + Named condition that gates whether an interaction or effect is active. + Defined in InteractConfig.conditions and referenced by string ID. + params: + - name: type + type: "'media' | 'container' | 'selector'" + default: '—' + required: true + description: 'Condition category: media = CSS @media query, container = CSS container query, selector = CSS selector match on the element.' + - name: predicate + type: string + default: 'null' + required: false + description: "The query or selector string. E.g. '(min-width: 768px)' for media." + caveats: + - "Only 'media', 'container', and 'selector' are valid types — there is no 'custom' condition type." + - 'Multiple conditions on an interaction are AND-ed: all must pass.' + sourceFile: src/types/config.ts + related: [] + + # ─── API ────────────────────────────────────────────────────────────────────── + + - id: api-create + name: 'Interact.create' + category: api + description: >- + Static factory method. Creates a new Interact instance, initializes it with + the provided config, and returns the instance. Call after DOM is ready. + signature: 'static create(config: InteractConfig): Interact' + caveats: + - 'Each call creates an independent instance. Multiple configs are independent.' + - 'In React, wrap in useEffect to prevent SSR execution.' + sourceFile: src/core/Interact.ts + related: [api-destroy] + + - id: api-destroy + name: 'Interact.destroy / instance.destroy' + category: api + description: >- + Tears down all interactions and frees listeners. Static form destroys all + instances; instance form destroys only that instance. + signature: 'static destroy(): void | instance.destroy(): void' + caveats: + - 'In React, call instance.destroy() in the useEffect cleanup function.' + - 'Static Interact.destroy() clears all active instances at once.' + sourceFile: src/core/Interact.ts + related: [api-create] + + - id: api-setup + name: 'Interact.setup' + category: api + description: >- + Configure global defaults for scroll, pointer, and viewEnter trigger behavior. + Must be called before Interact.create for settings to take effect. + signature: 'static setup(options: Partial): void' + caveats: + - 'Must be called before Interact.create.' + - 'Accepts scrollOptionsGetter for configuring fizban Scroll internals (viewProgress).' + sourceFile: src/core/Interact.ts + related: [] + + - id: api-registerEffects + name: 'Interact.registerEffects' + category: api + description: >- + Register named effect presets from @wix/motion-presets into the motion + registry. Required before using namedEffect in any config. Delegates to + motion's registerEffects internally. + signature: 'static registerEffects(effects: Record): void' + caveats: + - 'Must be called before Interact.create.' + - "Presets are keyed by namedEffect.type string. namedEffect must be an object: { type: 'FadeIn' }, not a bare string." + sourceFile: src/core/Interact.ts + related: [] + + - id: api-add + name: 'instance.add' + category: api + description: >- + Register a DOM element with a key after Interact.create. Used in vanilla JS + integration to manually associate elements with interaction keys. + signature: 'add(element: HTMLElement, key: string): void' + caveats: + - 'Call only after the element exists in the DOM.' + - 'Vanilla JS only — web/React use declarative element wrapping.' + sourceFile: src/core/Interact.ts + related: [api-remove] + + - id: api-remove + name: 'instance.remove' + category: api + description: >- + Unregister all interactions for a given key, removing event listeners and + cleaning up animation state. + signature: 'remove(key: string): void' + sourceFile: src/core/Interact.ts + related: [api-add] + + - id: api-generate + name: generate + category: api + description: >- + Generates a complete CSS string for all interactions in a config — including + @keyframes, animation / transition custom properties, view-timeline declarations, + state-selector rules, coordinated-list aggregation, and FOUC-prevention initial + rules. Call server-side or at build time and inject the result into . + signature: 'generate(config: InteractConfig, useFirstChild?: boolean): string' + caveats: + - 'Returns a CSS string — inject into or beginning of .' + - 'useFirstChild: true when using web (custom element) integration — adds :first-child selectors.' + - 'FOUC prevention requires both generate() CSS AND the initial flag on each element.' + - 'Processes all interactions, not only viewEnter.' + sourceFile: src/core/css.ts + related: [concept-fouc] + + - id: api-allowA11yTriggers + name: 'Interact.allowA11yTriggers' + category: api + description: >- + Static boolean flag. When true, hover interactions transparently use the + interest handler (adds focusin / focusout) and click interactions use the + activate handler (adds keydown Enter/Space). + signature: 'static allowA11yTriggers: boolean' + default: 'true' + caveats: + - 'Default is true. Set to false only to explicitly opt out of a11y trigger remapping.' + - 'Affects all instances. Must be set before Interact.create.' + sourceFile: src/core/Interact.ts + related: [concept-a11y-mapping] + + - id: api-forceReducedMotion + name: 'Interact.forceReducedMotion' + category: api + description: >- + Static boolean flag. When true, forces reduced-motion behavior for all + interactions regardless of the OS prefers-reduced-motion setting. + signature: 'static forceReducedMotion: boolean' + default: 'false' + caveats: + - 'Does not affect CSS animations generated by generate() — handle prefers-reduced-motion in CSS.' + sourceFile: src/core/Interact.ts + related: [] + + # ─── Concepts ──────────────────────────────────────────────────────────────── + + - id: concept-fouc + name: 'FOUC Prevention' + category: concept + description: >- + Flash of Un-animated Content (FOUC) occurs when entrance-animated elements + are briefly visible in their final state before the animation sets the initial + keyframe. Prevention requires two things that must both be present: (1) the + CSS produced by generate(config) injected into , and (2) the initial + flag set on each entrance-animated element. + fouc_flags: + - integration: web + element_flag: "data-interact-initial='true' on " + - integration: react + element_flag: 'initial={true} on ' + - integration: vanilla + element_flag: "data-interact-initial='true' on the keyed element" + caveats: + - 'Both generate() CSS and the initial flag are required — neither alone prevents FOUC.' + - "initial is only valid for viewEnter + triggerType: 'once' where source and target are the same element." + - 'generate() processes all interactions, not just viewEnter.' + - 'generate() can be called client-side if the page is initially hidden (e.g. behind a loader).' + sourceFile: src/core/css.ts + related: [trigger-viewEnter, api-generate] + + - id: concept-element-resolution + name: 'Element Resolution Order' + category: concept + description: >- + How Interact resolves which DOM element is the source (trigger host) and + target (animation host) for each interaction. + source_priority_order: + - 'listContainer + listItemSelector — elements matching listItemSelector within the container' + - 'listContainer only — all direct children of the container' + - 'listContainer + selector — querySelector within each direct child' + - 'selector only — querySelectorAll within the root element' + - 'Fallback — firstElementChild of (web) or root element (react / vanilla)' + target_priority_order: + - 'Effect.key — root element with matching data-interact-key' + - 'EffectRef key — key from the referenced registry entry' + - 'Fallback to Interaction.key — source root acts as target root' + - 'After resolving root: Effect.selector / listContainer / listItemSelector further refine the animated element' + caveats: + - 'listItemSelector is optional — omit to select all direct children of listContainer.' + - 'Target resolution runs the same priority logic as source, starting from Effect-level fields.' + sourceFile: src/core/add.ts + related: [config-Interaction] + + - id: concept-a11y-mapping + name: 'Accessibility Trigger Mapping' + category: concept + description: >- + When Interact.allowA11yTriggers is true (default), hover and click are + transparently mapped to richer handlers. Users always configure hover/click + in the config; the library handles the a11y remapping automatically. + mappings: + - user_trigger: hover + a11y_handler: 'interest — mouseenter + focusin (enter) / mouseleave + focusout (leave)' + - user_trigger: click + a11y_handler: 'activate — click + keydown Enter/Space' + caveats: + - 'allowA11yTriggers default: true. Set to false only to opt out explicitly.' + - 'activate and interest can also be set directly as trigger values for fine-grained control.' + sourceFile: src/handlers/index.ts + related: [api-allowA11yTriggers, trigger-hover, trigger-click] + + - id: concept-entry-points + name: 'Entry Points' + category: concept + description: >- + Three integration patterns for @wix/interact, all using the same + InteractConfig schema. + entry_points: + - name: 'Web (Custom Elements)' + import: "import { Interact } from '@wix/interact/web'" + element: "" + notes: + - 'Use Interact.create(config). Wrap target elements with .' + - 'data-interact-key MUST be unique within the page.' + - 'Element MUST contain at least one child (library targets firstElementChild by default).' + - name: React + import: "import { Interact, Interaction } from '@wix/interact/react'" + element: "" + notes: + - 'Wrap Interact.create(config) in useEffect to prevent SSR execution.' + - 'Store the instance; call instance.destroy() in the useEffect cleanup.' + - 'interactKey MUST be unique within the page.' + - name: 'Vanilla JS' + import: "import { Interact } from '@wix/interact'" + element: 'any HTMLElement' + notes: + - 'const instance = Interact.create(config); instance.add(element, key).' + - 'Call add() only after the element exists in the DOM.' + caveats: + - 'All three entry points use the same InteractConfig schema.' + - 'React: never call Interact.create outside useEffect — it will run on the server.' + related: [api-create] + + - id: concept-named-effect + name: 'namedEffect' + category: concept + description: >- + The animation payload type that references a preset registered via + Interact.registerEffects / motion's registerEffects. Must be an object with + a type field matching the registered preset name. + shape: '{ type: string; [paramName: string]: any }' + example: "{ type: 'FadeIn' } or { type: 'ArcIn', direction: 'bottom' }" + caveats: + - "Must be an object { type: '...' } — bare strings like 'FadeIn' are NOT accepted." + - 'All presets from @wix/motion-presets must be registered before use.' + - 'Unknown namedEffect.type values are silently ignored at runtime.' + sourceFile: src/types/effects.ts + related: [api-registerEffects] + + # ─── Enums / Unions ────────────────────────────────────────────────────────── + + - id: enum-triggerType + name: TimeAnimationTriggerType + category: enum + description: >- + Controls how a TimeEffect or SequenceConfig responds to repeated trigger + events. Applies to duration-based animations only (not scrub or state). + values: + - value: once + description: 'Play once on first trigger. Ignore subsequent activations. Default for viewEnter, animationEnd.' + - value: repeat + description: 'Play from the start on every trigger activation.' + - value: alternate + description: 'Play forward on trigger activate, reverse on trigger deactivate. Default for hover, click, activate, interest.' + - value: state + description: 'Controlled externally by stateAction on StateEffect.' + defaults_by_trigger: + hover: alternate + click: alternate + activate: alternate + interest: alternate + viewEnter: once + animationEnd: once + pageVisible: once + viewProgress: null + pointerMove: null + sourceFile: src/types/effects.ts + related: [effect-time] + + - id: enum-stateAction + name: StateAction + category: enum + description: 'The CSS state manipulation action for StateEffect.' + values: + - value: toggle + description: 'Add state if absent, remove if present. Default.' + - value: add + description: 'Add the CSS class or custom state.' + - value: remove + description: 'Remove the CSS class or custom state.' + - value: clear + description: 'Remove all tracked states from the element.' + sourceFile: src/types/effects.ts + related: [effect-state] diff --git a/scripts/build-context.spec.md b/scripts/build-context.spec.md new file mode 100644 index 00000000..ae6595ea --- /dev/null +++ b/scripts/build-context.spec.md @@ -0,0 +1,514 @@ +# `scripts/build-context.js` — Implementation Spec + +## Purpose + +Reads `packages//context/glossary.yaml` and produces two kinds of output: + +1. **`rules/` files** — fully generated markdown from renderer functions. The glossary is the only input; output is always overwritten. +2. **`docs/` files** — hand-authored prose with structured sections (param tables) injected between HTML comment markers. All content outside the markers is untouched. + +This script must remain compatible with `scripts/generate-llms.mjs`, which reads all `.md` files from `packages/interact/rules/`. When the new rules file names are introduced, `KNOWN_ORDER` in `generate-llms.mjs` must be updated to list the new file names in priority order. + +--- + +## Usage + +```bash +node scripts/build-context.js --package interact +node scripts/build-context.js --package motion +node scripts/build-context.js --package presets +``` + +Add to root `package.json` scripts: + +```json +"build:context": "node scripts/build-context.js --package interact" +``` + +--- + +## Style Constraints + +- Plain ESM (`import`/`export`); shebang not needed. +- Node.js built-in modules only, plus one allowed external dependency: the `yaml` npm package for YAML parsing (add as a root workspace `devDependency` if not already present). +- Target: under 200 lines. Follow the same string-building style as `generate-llms.mjs` — no template engines, no marker-replacement DSL, just plain string concatenation and array `.join('\n')`. +- All file paths are relative to the monorepo root. + +--- + +## Module Structure + +``` +scripts/build-context.js + ├── loadGlossary(pkg) — reads and parses YAML, returns term arrays by category + ├── renderOverviewFile(data) → rules/overview.md + ├── renderConfigFile(terms) → rules/config.md + ├── renderTriggersFile(terms) → rules/triggers.md + ├── renderEffectsFile(terms) → rules/effects.md + ├── renderPitfallsFile(terms) → rules/pitfalls.md + ├── injectDocsSections(pkg, terms) — injects param tables into docs/ files between markers + └── main() — CLI entry: parse --package arg, orchestrate all steps +``` + +--- + +## 1. Loading the Glossary + +```javascript +import { parse } from 'yaml'; +import { readFileSync } from 'node:fs'; + +function loadGlossary(pkg) { + const path = `packages/${pkg}/context/glossary.yaml`; + const raw = readFileSync(path, 'utf-8'); + const { terms } = parse(raw); + return { + triggers: terms.filter((t) => t.category === 'trigger'), + effectTypes: terms.filter((t) => t.category === 'effect-type'), + configs: terms.filter((t) => t.category === 'config'), + apis: terms.filter((t) => t.category === 'api'), + concepts: terms.filter((t) => t.category === 'concept'), + enums: terms.filter((t) => t.category === 'enum'), + all: terms, + }; +} +``` + +--- + +## 2. Shared Helpers + +### `renderParamTable(params)` + +Renders a `| name | type | default | description |` markdown table from a term's `params` array. Returns an empty string if `params` is empty or absent. + +Column order: name, type, default, description. +Row format: `` `name` `` in the name column (backtick-wrapped); required params use `**—**` in the default column. + +### `renderFrontmatter(name, description)` + +Returns: + +``` +--- +name: +description: +--- +``` + +### `renderTOC(entries)` + +Returns a `## Table of Contents` block from an array of `{ label, anchor }` objects. Anchor format: lowercase, spaces → `-`, special chars stripped. Example: `'viewEnter'` → `#viewenter`. + +--- + +## 3. Renderer Functions + +All renderer functions return a complete markdown string. The calling code writes the string directly to the output file with no further processing. + +### 3.1 `renderOverviewFile(data)` + +Output: `rules/overview.md` + +``` +--- +name: overview +description: Quick-start reference for @wix/interact. Entry points, install, and a minimal working example. +--- + +# @wix/interact — Overview + + + +## Table of Contents + +- [Install](#install) +- [Entry Points](#entry-points) +- [Quick Start](#quick-start) +- [Static API Summary](#static-api-summary) + +--- + +## Install + +npm install @wix/interact @wix/motion-presets + +--- + +## Entry Points + + + +--- + +## Quick Start + + + +--- + +## Static API Summary + + +Only include api terms that are static methods or static flags (api-create, api-destroy, +api-setup, api-registerEffects, api-allowA11yTriggers, api-forceReducedMotion). +``` + +### 3.2 `renderConfigFile(terms)` + +Output: `rules/config.md` + +``` +--- +name: config +description: InteractConfig schema, Interaction shape, Effect types, sequences, and conditions. +--- + +# @wix/interact — Configuration + +## Table of Contents + +- [InteractConfig](#interactconfig) +- [Interaction](#interaction) +- [Effect Shared Fields](#effect-shared-fields) +- [SequenceConfig](#sequenceconfig) +- [SequenceConfigRef](#sequenceconfigref) +- [Condition](#condition) + +--- + +## + + + + + + + +--- (separator between config terms) +``` + +Render all terms where `category === 'config'` in this order: `config-InteractConfig`, `config-Interaction`, `config-SequenceConfig`, `config-Condition`. Include a brief note after the Interaction section: "At least one of `effects` or `sequences` must be provided per Interaction." + +### 3.3 `renderTriggersFile(terms)` + +Output: `rules/triggers.md` + +``` +--- +name: triggers +description: Full parameter reference for all @wix/interact triggers. Six primary triggers plus accessible variants and one deprecated trigger. +--- + +# @wix/interact — Triggers + +Six primary user-facing triggers: hover, click, viewEnter, viewProgress, pointerMove, animationEnd. +Two accessible variants (enabled when allowA11yTriggers is true): activate, interest. +One deprecated trigger: pageVisible (use viewEnter). + +## Table of Contents + +- [hover](#hover) +- [click](#click) +- [viewEnter](#viewenter) +- [viewProgress](#viewprogress) +- [pointerMove](#pointermove) +- [animationEnd](#animationend) +- [Accessible Variants](#accessible-variants) +- [Deprecated](#deprecated) + +--- +``` + +**Per-trigger section format** (for the 6 primary triggers): + +``` +### + + + +**Default triggerType:** + +**Params:** + + ← or "None." if params array is empty + + + +**Caveats:** + + + +--- +``` + +**Accessible Variants section**: One combined `## Accessible Variants` section. Render `trigger-activate` and `trigger-interest` as sub-sections (`###`). Include a preamble: "Enabled when `Interact.allowA11yTriggers` is `true` (the default). Users configure `hover`/`click` — these handlers are applied transparently." + +**Deprecated section**: One `## Deprecated` section listing `trigger-pageVisible` with its description and caveats. + +### 3.4 `renderEffectsFile(terms)` + +Output: `rules/effects.md` + +``` +--- +name: effects +description: TimeEffect, ScrubEffect, and StateEffect — fields, defaults, and when to use each. +--- + +# @wix/interact — Effects + +## Table of Contents + +- [TimeEffect](#timeeffect) +- [ScrubEffect](#scrubeffect) +- [StateEffect](#stateeffect) +- [Animation Payloads](#animation-payloads) +- [triggerType Defaults by Trigger](#triggertype-defaults-by-trigger) +- [stateAction Values](#stateaction-values) + +--- +``` + +**Per-effect section format**: + +``` +## + + + + + + + +**Caveats:** + + + +--- +``` + +**Animation Payloads section** (hardcoded prose + code block): + +``` +## Animation Payloads + +Every TimeEffect and ScrubEffect requires exactly one of: + +| Payload | Shape | Use when | +| --------------- | -------------------------------------------------- | ------------------------------- | +| `namedEffect` | `{ type: string, ...params }` | Using a registered preset | +| `keyframeEffect`| `{ name: string, keyframes: Keyframe[] }` | Custom WAAPI keyframes | +| `customEffect` | `(element: Element, progress: any) => void` | Fully custom JS animation | +``` + +Note: reference `concept-named-effect` caveats for the namedEffect row. + +**`triggerType` Defaults by Trigger section**: Render the `enum-triggerType.defaults_by_trigger` map as a two-column table (`| trigger | default triggerType |`). + +**`stateAction` Values section**: Render `enum-stateAction.values` as a table. + +### 3.5 `renderPitfallsFile(terms)` + +Output: `rules/pitfalls.md` + +``` +--- +name: pitfalls +description: Critical gotchas for @wix/interact integrations — FOUC, overflow:clip, same-element source/target, hit-area jitter, and a11y mapping. +--- + +# @wix/interact — Common Pitfalls + +Each item is CRITICAL — ignoring it will break animations or accessibility. + +## Table of Contents + +- [FOUC Prevention](#fouc-prevention) +- [overflow: clip](#overflow-clip) +- [Same-Element Source and Target](#same-element-source-and-target) +- [Hit-Area Jitter](#hit-area-jitter) +- [pointerMove + hitArea: self](#pointermove--hitarea-self) +- [Accessibility Trigger Mapping](#accessibility-trigger-mapping) + +--- +``` + +**Content**: Each pitfall is a `##` section. Content comes from a mix of: + +- `concept-fouc` caveats → **FOUC Prevention** section +- `concept-a11y-mapping` caveats + description → **Accessibility Trigger Mapping** section +- `trigger-viewEnter` caveat about same-element → **Same-Element Source and Target** section +- `trigger-pointerMove` caveat about hit-area → **pointerMove + hitArea: self** section +- **overflow: clip** and **Hit-Area Jitter** sections: hardcoded text (these are structural/CSS gotchas not directly expressible from glossary terms) + +The `overflow: clip` pitfall reads: + +> `overflow: hidden` breaks `viewProgress`. Replace with `overflow: clip` on all ancestors between source and scroll container. In Tailwind, replace `overflow-hidden` with `overflow-clip`. + +The **Hit-Area Jitter** pitfall reads: + +> When a hover effect changes the size or position of the hovered element (e.g. `transform: scale(...)`), use separate source and target elements. Otherwise the hit area shifts, causing rapid enter/leave events and flickering. Use `selector` to target a child element, or set the effect's `key` to a different element. + +--- + +## 4. Docs Injection + +Docs injection modifies hand-authored docs files by replacing content between HTML comment markers with generated param tables from the glossary. + +### Marker syntax + +```html + +...any existing content here is replaced... + +``` + +The `id` attribute references a term `id` in the glossary. Multiple START/END pairs can appear in one file. + +### Algorithm + +``` +function injectDocsSections(pkg, terms): + for each .md file in packages//docs/ (recursive): + content = readFileSync(file) + if content does not contain '\n${table}\n` + ) + writeFileSync(file, newContent) +``` + +**Regex pattern** (multiline, dotall): + +``` +/[\s\S]*?/g +``` + +The replacement string is the same opening marker, then the generated table, then the closing marker. The original content between markers is discarded on each run (idempotent). + +### Docs files that will use injection (Phase 1, Interact) + +| File | Term IDs injected | +| ------------------------------ | ---------------------------------------------------------------------- | +| `docs/api/types.md` | `effect-time`, `effect-scrub`, `effect-state`, `config-Condition` | +| `docs/guides/triggers.md` | `trigger-viewEnter`, `trigger-pointerMove`, `trigger-animationEnd` | +| `docs/api/interact-class.md` | `api-allowA11yTriggers`, `api-forceReducedMotion` | +| `docs/guides/configuration.md` | `config-InteractConfig`, `config-Interaction`, `config-SequenceConfig` | + +These files are hand-authored; only the param tables between markers are generated. + +--- + +## 5. `main()` Entry Point + +```javascript +function main() { + const pkgArg = process.argv.indexOf('--package'); + if (pkgArg === -1 || !process.argv[pkgArg + 1]) { + console.error('Usage: node scripts/build-context.js --package '); + process.exit(1); + } + const pkg = process.argv[pkgArg + 1]; + const PKG_DIR_MAP = { interact: 'interact', motion: 'motion', presets: 'motion-presets' }; + const pkgDir = PKG_DIR_MAP[pkg]; + if (!pkgDir) { + console.error(`Unknown package: ${pkg}`); + process.exit(1); + } + + const terms = loadGlossary(pkgDir); + const rulesDir = `packages/${pkgDir}/rules`; + + // Generate rules/ files + writeFileSync(`${rulesDir}/overview.md`, renderOverviewFile(terms)); + writeFileSync(`${rulesDir}/config.md`, renderConfigFile(terms.configs)); + writeFileSync(`${rulesDir}/triggers.md`, renderTriggersFile(terms.triggers)); + writeFileSync(`${rulesDir}/effects.md`, renderEffectsFile(terms)); + writeFileSync(`${rulesDir}/pitfalls.md`, renderPitfallsFile(terms)); + + // Inject structured sections into docs/ files + injectDocsSections(pkgDir, terms); + + console.log(`build-context: wrote rules/ and injected docs/ for @wix/${pkgDir}`); +} +``` + +The script must ensure `rules/` exists (`mkdirSync(rulesDir, { recursive: true })`). + +--- + +## 6. `generate-llms.mjs` Compatibility + +After the new rules files are generated, update `KNOWN_ORDER` in `scripts/generate-llms.mjs` from: + +```javascript +const KNOWN_ORDER = [ + 'full-lean.md', + 'integration.md', + 'click.md', + 'hover.md', + 'pointermove.md', + 'viewenter.md', + 'viewprogress.md', +]; +``` + +to: + +```javascript +const KNOWN_ORDER = ['overview.md', 'triggers.md', 'effects.md', 'config.md', 'pitfalls.md']; +``` + +Update `DOCS_LINK_TITLES` accordingly — `overview.md` maps to `'Overview'`, `triggers.md` maps to `'Triggers Reference'`. + +Also update `STATIC_BODY` to reflect the corrected trigger count: + +```javascript +'- Six primary trigger types: hover, click, viewEnter, viewProgress, pointerMove, animationEnd — plus accessible variants activate and interest (enabled by default)'; +``` + +--- + +## 7. CI Verification Step + +Add a CI step in `.github/workflows/interactdocs.yml` (or a new `context.yml` workflow): + +```yaml +- name: Verify rules/ is up to date + run: | + node scripts/build-context.js --package interact + git diff --exit-code packages/interact/rules/ +``` + +This fails if generated output differs from what is committed, catching glossary changes that weren't followed by a rebuild. + +--- + +## 8. Output File Counts + +After Phase 1 (Interact), the `packages/interact/rules/` directory will contain exactly five files: + +| File | Generated by | +| ------------- | -------------------- | +| `overview.md` | `renderOverviewFile` | +| `config.md` | `renderConfigFile` | +| `triggers.md` | `renderTriggersFile` | +| `effects.md` | `renderEffectsFile` | +| `pitfalls.md` | `renderPitfallsFile` | + +The old files (`full-lean.md`, `integration.md`, `click.md`, `hover.md`, `pointermove.md`, `viewenter.md`, `viewprogress.md`) are deleted after the new output is validated (Phase 1.6 in the plan). + +--- + +## 9. Not in Scope for This Script + +- The script does **not** validate glossary entries against TypeScript source — that is the job of the Vitest audit tests (`packages/interact/test/context-audit.spec.ts`) introduced in Phase 1.1. +- The script does **not** delete old rules files — deletion is a manual step in Phase 1.6 after review. +- The script does **not** handle motion or motion-presets renderer logic in Phase 0 — placeholder `renderOverviewFile` stubs are sufficient until those packages are migrated.