diff --git a/.claude/agents/docs-reviewer.md b/.claude/agents/docs-reviewer.md
new file mode 100644
index 000000000..af0a856e4
--- /dev/null
+++ b/.claude/agents/docs-reviewer.md
@@ -0,0 +1,28 @@
+---
+name: docs-reviewer
+description: "Lean docs reviewer that dispatches reviews docs for a particular skill."
+model: opus
+color: cyan
+---
+
+You are a direct, critical, expert reviewer for React documentation.
+
+Your role is to use given skills to validate given doc pages for consistency, correctness, and adherence to established patterns.
+
+Complete this process:
+
+## Phase 1: Task Creation
+1. CRITICAL: Read the skill requested.
+2. Understand the skill's requirements.
+3. Create a task list to validate skills requirements.
+
+## Phase 2: Validate
+
+1. Read the docs files given.
+2. Review each file with the task list to verify.
+
+## Phase 3: Respond
+
+You must respond with a checklist of the issues you identified, and line number.
+
+DO NOT respond with passed validations, ONLY respond with the problems.
diff --git a/.claude/settings.json b/.claude/settings.json
new file mode 100644
index 000000000..111403183
--- /dev/null
+++ b/.claude/settings.json
@@ -0,0 +1,32 @@
+{
+ "skills": {
+ "suggest": [
+ {
+ "pattern": "src/content/learn/**/*.md",
+ "skill": "docs-writer-learn"
+ },
+ {
+ "pattern": "src/content/reference/**/*.md",
+ "skill": "docs-writer-reference"
+ }
+ ]
+ },
+ "permissions": {
+ "allow": [
+ "Skill(docs-voice)",
+ "Skill(docs-components)",
+ "Skill(docs-sandpack)",
+ "Skill(docs-rsc-sandpack)",
+ "Skill(docs-writer-learn)",
+ "Skill(docs-writer-reference)",
+ "Bash(yarn lint:*)",
+ "Bash(yarn lint-heading-ids:*)",
+ "Bash(yarn lint:fix:*)",
+ "Bash(yarn tsc:*)",
+ "Bash(yarn check-all:*)",
+ "Bash(yarn fix-headings:*)",
+ "Bash(yarn deadlinks:*)",
+ "Bash(yarn prettier:diff:*)"
+ ]
+ }
+}
diff --git a/.claude/skills/docs-components/SKILL.md b/.claude/skills/docs-components/SKILL.md
new file mode 100644
index 000000000..4b75f27a1
--- /dev/null
+++ b/.claude/skills/docs-components/SKILL.md
@@ -0,0 +1,518 @@
+---
+name: docs-components
+description: Comprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types. Authoritative source for component usage, examples, and heading conventions.
+---
+
+# MDX Component Patterns
+
+## Quick Reference
+
+### Component Decision Tree
+
+| Need | Component |
+|------|-----------|
+| Helpful tip or terminology | `` |
+| Common mistake warning | `` |
+| Advanced technical explanation | `` |
+| Canary-only feature | `` or `` |
+| Server Components only | `` |
+| Deprecated API | `` |
+| Experimental/WIP | `` |
+| Visual diagram | `` |
+| Multiple related examples | `` |
+| Interactive code | `` (see `/docs-sandpack`) |
+| Console error display | `` |
+| End-of-page exercises | `` (Learn pages only) |
+
+### Heading Level Conventions
+
+| Component | Heading Level |
+|-----------|---------------|
+| DeepDive title | `####` (h4) |
+| Titled Pitfall | `#####` (h5) |
+| Titled Note | `####` (h4) |
+| Recipe items | `####` (h4) |
+| Challenge items | `####` (h4) |
+
+### Callout Spacing Rules
+
+Callout components (Note, Pitfall, DeepDive) require a **blank line after the opening tag** before content begins.
+
+**Never place consecutively:**
+- `` followed by `` - Combine into one with titled subsections, or separate with prose
+- `` followed by `` - Combine into one, or separate with prose
+
+**Allowed consecutive patterns:**
+- `` followed by `` - OK for multi-part explorations (see useMemo.md)
+- `` followed by `` - OK when DeepDive explains "why" behind the Pitfall
+
+**Separation content:** Prose paragraphs, code examples (Sandpack), or section headers.
+
+**Why:** Consecutive warnings create a "wall of cautions" that overwhelms readers and causes important warnings to be skimmed.
+
+**Incorrect:**
+```mdx
+
+Don't do X.
+
+
+
+Don't do Y.
+
+```
+
+**Correct - combined:**
+```mdx
+
+
+##### Don't do X {/*pitfall-x*/}
+Explanation.
+
+##### Don't do Y {/*pitfall-y*/}
+Explanation.
+
+
+```
+
+**Correct - separated:**
+```mdx
+
+Don't do X.
+
+
+This leads to another common mistake:
+
+
+Don't do Y.
+
+```
+
+---
+
+## ``
+
+Important clarifications, conventions, or tips. Less severe than Pitfall.
+
+### Simple Note
+
+```mdx
+
+
+The optimization of caching return values is known as [_memoization_](https://en.wikipedia.org/wiki/Memoization).
+
+
+```
+
+### Note with Title
+
+Use `####` (h4) heading with an ID.
+
+```mdx
+
+
+#### There is no directive for Server Components. {/*no-directive*/}
+
+A common misunderstanding is that Server Components are denoted by `"use server"`, but there is no directive for Server Components. The `"use server"` directive is for Server Functions.
+
+
+```
+
+### Version-Specific Note
+
+```mdx
+
+
+Starting in React 19, you can render `` as a provider.
+
+In older versions of React, use ``.
+
+
+```
+
+---
+
+## ``
+
+Common mistakes that cause bugs. Use for errors readers will likely make.
+
+### Simple Pitfall
+
+```mdx
+
+
+We recommend defining components as functions instead of classes. [See how to migrate.](#alternatives)
+
+
+```
+
+### Titled Pitfall
+
+Use `#####` (h5) heading with an ID.
+
+```mdx
+
+
+##### Calling different memoized functions will read from different caches. {/*pitfall-different-caches*/}
+
+To access the same cache, components must call the same memoized function.
+
+
+```
+
+### Pitfall with Wrong/Right Code
+
+```mdx
+
+
+##### `useFormStatus` will not return status information for a `;
+}
+```
+
+Instead call `useFormStatus` from inside a component located inside `
+```
+
+---
+
+## ``
+
+Optional deep technical content. **First child must be `####` heading with ID.**
+
+### Standard DeepDive
+
+```mdx
+
+
+#### Is using an updater always preferred? {/*is-updater-preferred*/}
+
+You might hear a recommendation to always write code like `setAge(a => a + 1)` if the state you're setting is calculated from the previous state. There's no harm in it, but it's also not always necessary.
+
+In most cases, there is no difference between these two approaches. React always makes sure that for intentional user actions, like clicks, the `age` state variable would be updated before the next click.
+
+
+```
+
+### Comparison DeepDive
+
+For comparing related concepts:
+
+```mdx
+
+
+#### When should I use `cache`, `memo`, or `useMemo`? {/*cache-memo-usememo*/}
+
+All mentioned APIs offer memoization but differ in what they memoize, who can access the cache, and when their cache is invalidated.
+
+#### `useMemo` {/*deep-dive-usememo*/}
+
+In general, you should use `useMemo` for caching expensive computations in Client Components across renders.
+
+#### `cache` {/*deep-dive-cache*/}
+
+In general, you should use `cache` in Server Components to memoize work that can be shared across components.
+
+
+```
+
+---
+
+## ``
+
+Multiple related examples showing variations. Each recipe needs ``.
+
+```mdx
+
+
+#### Counter (number) {/*counter-number*/}
+
+In this example, the `count` state variable holds a number.
+
+
+{/* code */}
+
+
+
+
+#### Text field (string) {/*text-field-string*/}
+
+In this example, the `text` state variable holds a string.
+
+
+{/* code */}
+
+
+
+
+
+```
+
+**Common titleText/titleId combinations:**
+- "Basic [hookName] examples" / `examples-basic`
+- "Examples of [concept]" / `examples-[concept]`
+- "The difference between [A] and [B]" / `examples-[topic]`
+
+---
+
+## ``
+
+End-of-page exercises. **Learn pages only.** Each challenge needs problem + solution Sandpack.
+
+```mdx
+
+
+#### Fix the bug {/*fix-the-bug*/}
+
+Problem description...
+
+
+Optional hint text.
+
+
+
+{/* problem code */}
+
+
+
+
+Explanation...
+
+
+{/* solution code */}
+
+
+
+
+
+```
+
+**Guidelines:**
+- Only at end of standard Learn pages
+- No Challenges in chapter intros or tutorials
+- Each challenge has `####` heading with ID
+
+---
+
+## ``
+
+For deprecated APIs. Content should explain what to use instead.
+
+### Page-Level Deprecation
+
+```mdx
+
+
+In React 19, `forwardRef` is no longer necessary. Pass `ref` as a prop instead.
+
+`forwardRef` will be deprecated in a future release. Learn more [here](/blog/2024/04/25/react-19#ref-as-a-prop).
+
+
+```
+
+### Method-Level Deprecation
+
+```mdx
+### `componentWillMount()` {/*componentwillmount*/}
+
+
+
+This API has been renamed from `componentWillMount` to [`UNSAFE_componentWillMount`.](#unsafe_componentwillmount)
+
+Run the [`rename-unsafe-lifecycles` codemod](codemod-link) to automatically update.
+
+
+```
+
+---
+
+## ``
+
+For APIs that only work with React Server Components.
+
+### Basic RSC
+
+```mdx
+
+
+`cache` is only for use with [React Server Components](/reference/rsc/server-components).
+
+
+```
+
+### Extended RSC (for Server Functions)
+
+```mdx
+
+
+Server Functions are for use in [React Server Components](/reference/rsc/server-components).
+
+**Note:** Until September 2024, we referred to all Server Functions as "Server Actions".
+
+
+```
+
+---
+
+## `` and ``
+
+For features only available in Canary releases.
+
+### Canary Wrapper (inline in Intro)
+
+```mdx
+
+
+`` lets you group elements without a wrapper node.
+
+Fragments can also accept refs, enabling interaction with underlying DOM nodes.
+
+
+```
+
+### CanaryBadge in Section Headings
+
+```mdx
+### FragmentInstance {/*fragmentinstance*/}
+```
+
+### CanaryBadge in Props Lists
+
+```mdx
+* **optional** `ref`: A ref object from `useRef` or callback function.
+```
+
+### CanaryBadge in Caveats
+
+```mdx
+* If you want to pass `ref` to a Fragment, you can't use the `<>...>` syntax.
+```
+
+---
+
+## ``
+
+Visual explanations of module dependencies, render trees, or data flow.
+
+```mdx
+
+`'use client'` segments the module dependency tree, marking `InspirationGenerator.js` and all dependencies as client-rendered.
+
+```
+
+**Attributes:**
+- `name`: Diagram identifier (used for image file)
+- `height`: Height in pixels
+- `width`: Width in pixels
+- `alt`: Accessible description of the diagram
+
+---
+
+## `` (Use Sparingly)
+
+Numbered callouts in prose. Pairs with code block annotations.
+
+### Syntax
+
+In code blocks:
+```mdx
+```js [[1, 4, "age"], [2, 4, "setAge"], [3, 4, "42"]]
+import { useState } from 'react';
+
+function MyComponent() {
+ const [age, setAge] = useState(42);
+}
+```
+```
+
+Format: `[[step_number, line_number, "text_to_highlight"], ...]`
+
+In prose:
+```mdx
+1. The current state initially set to the initial value.
+2. The `set` function that lets you change it.
+```
+
+### Guidelines
+
+- Maximum 2-3 different colors per explanation
+- Don't highlight every keyword - only key concepts
+- Use for terms in prose, not entire code blocks
+- Maintain consistent usage within a section
+
+β **Good use** - highlighting key concepts:
+```mdx
+React will compare the dependencies with the dependencies you passed...
+```
+
+π« **Avoid** - excessive highlighting:
+```mdx
+When an Activity boundary is hidden during its initial render...
+```
+
+---
+
+## ``
+
+Display console output (errors, warnings, logs).
+
+```mdx
+
+Uncaught Error: Too many re-renders.
+
+```
+
+**Levels:** `error`, `warning`, `info`
+
+---
+
+## Component Usage by Page Type
+
+### Reference Pages
+
+For component placement rules specific to Reference pages, invoke `/docs-writer-reference`.
+
+Key placement patterns:
+- `` goes before `` at top of page
+- `` goes after `` for page-level deprecation
+- `` goes after method heading for method-level deprecation
+- `` wrapper goes inline within ``
+- `` appears in headings, props lists, and caveats
+
+### Learn Pages
+
+For Learn page structure and patterns, invoke `/docs-writer-learn`.
+
+Key usage patterns:
+- Challenges only at end of standard Learn pages
+- No Challenges in chapter intros or tutorials
+- DeepDive for optional advanced content
+- CodeStep should be used sparingly
+
+### Blog Pages
+
+For Blog page structure and patterns, invoke `/docs-writer-blog`.
+
+Key usage patterns:
+- Generally avoid deep technical components
+- Note and Pitfall OK for clarifications
+- Prefer inline explanations over DeepDive
+
+---
+
+## Other Available Components
+
+**Version/Status:** ``, ``, ``, ``, ``
+
+**Visuals:** ``, ``, ``, ``, ``
+
+**Console:** ``, ``
+
+**Specialized:** ``, ``, ``, ``, ``, ``, `
diff --git a/src/components/Layout/SidebarNav/index.tsx b/src/components/Layout/SidebarNav/index.tsx
index b268bbd29..f9680d803 100644
--- a/src/components/Layout/SidebarNav/index.tsx
+++ b/src/components/Layout/SidebarNav/index.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/Layout/Toc.tsx b/src/components/Layout/Toc.tsx
index f5b7ec661..4909c016a 100644
--- a/src/components/Layout/Toc.tsx
+++ b/src/components/Layout/Toc.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/Layout/TopNav/BrandMenu.tsx b/src/components/Layout/TopNav/BrandMenu.tsx
index 3bd8776f2..218e423ce 100644
--- a/src/components/Layout/TopNav/BrandMenu.tsx
+++ b/src/components/Layout/TopNav/BrandMenu.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
import * as ContextMenu from '@radix-ui/react-context-menu';
import {IconCopy} from 'components/Icon/IconCopy';
import {IconDownload} from 'components/Icon/IconDownload';
diff --git a/src/components/Layout/TopNav/TopNav.tsx b/src/components/Layout/TopNav/TopNav.tsx
index 0d4e350e5..5a9b2d516 100644
--- a/src/components/Layout/TopNav/TopNav.tsx
+++ b/src/components/Layout/TopNav/TopNav.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -22,7 +29,6 @@ import {IconHamburger} from 'components/Icon/IconHamburger';
import {IconSearch} from 'components/Icon/IconSearch';
import {Search} from 'components/Search';
import {Logo} from '../../Logo';
-import {Feedback} from '../Feedback';
import {SidebarRouteTree} from '../Sidebar';
import type {RouteItem} from '../getRouteMeta';
import {siteConfig} from 'siteConfig';
@@ -266,7 +272,9 @@ export default function TopNav({
-
+
-
-
-
)}
diff --git a/src/components/Layout/TopNav/index.tsx b/src/components/Layout/TopNav/index.tsx
index 8472fb126..e76fa5ed0 100644
--- a/src/components/Layout/TopNav/index.tsx
+++ b/src/components/Layout/TopNav/index.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/Layout/getRouteMeta.tsx b/src/components/Layout/getRouteMeta.tsx
index 3564dd738..5a85a3e21 100644
--- a/src/components/Layout/getRouteMeta.tsx
+++ b/src/components/Layout/getRouteMeta.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -19,8 +26,8 @@ export type RouteTag =
export interface RouteItem {
/** Page title (for the sidebar) */
title: string;
- /** Optional canary flag for heading */
- canary?: boolean;
+ /** Optional version flag for heading */
+ version?: 'canary' | 'major';
/** Optional page description for heading */
description?: string;
/* Additional meta info for page tagging */
diff --git a/src/components/Layout/useTocHighlight.tsx b/src/components/Layout/useTocHighlight.tsx
index 544396c68..02385409f 100644
--- a/src/components/Layout/useTocHighlight.tsx
+++ b/src/components/Layout/useTocHighlight.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/Logo.tsx b/src/components/Logo.tsx
index 07e72c992..3ea4ba9ac 100644
--- a/src/components/Logo.tsx
+++ b/src/components/Logo.tsx
@@ -1,8 +1,16 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
+import type {SVGProps} from 'react';
-export function Logo(props: JSX.IntrinsicElements['svg']) {
+export function Logo(props: SVGProps) {
return (
= {};
let content: React.ReactElement[] = [];
Children.forEach(children, (child) => {
- const {props, type} = child;
+ const {props, type} = child as React.ReactElement<{
+ children?: string;
+ id?: string;
+ }>;
switch ((type as any).mdxName) {
case 'Solution': {
challenge.solution = child;
diff --git a/src/components/MDX/Challenges/Navigation.tsx b/src/components/MDX/Challenges/Navigation.tsx
index 736db093c..0511bd05a 100644
--- a/src/components/MDX/Challenges/Navigation.tsx
+++ b/src/components/MDX/Challenges/Navigation.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -108,7 +115,7 @@ export function Navigation({
onClick={handleScrollLeft}
aria-label="Scroll left"
className={cn(
- 'bg-secondary-button dark:bg-secondary-button-dark h-8 px-2 rounded-l border-gray-20 border-r rtl:rotate-180',
+ 'bg-secondary-button dark:bg-secondary-button-dark h-8 px-2 rounded-l rtl:rounded-r rtl:rounded-l-none border-gray-20 border-r rtl:border-l rtl:border-r-0',
{
'text-primary dark:text-primary-dark': canScrollLeft,
'text-gray-30': !canScrollLeft,
@@ -120,7 +127,7 @@ export function Navigation({
onClick={handleScrollRight}
aria-label="Scroll right"
className={cn(
- 'bg-secondary-button dark:bg-secondary-button-dark h-8 px-2 rounded-e rtl:rotate-180',
+ 'bg-secondary-button dark:bg-secondary-button-dark h-8 px-2 rounded-e',
{
'text-primary dark:text-primary-dark': canScrollRight,
'text-gray-30': !canScrollRight,
diff --git a/src/components/MDX/Challenges/index.tsx b/src/components/MDX/Challenges/index.tsx
index 413fd4611..27e3df1ef 100644
--- a/src/components/MDX/Challenges/index.tsx
+++ b/src/components/MDX/Challenges/index.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/CodeBlock/CodeBlock.tsx b/src/components/MDX/CodeBlock/CodeBlock.tsx
index 7eef0abe8..3eeac3945 100644
--- a/src/components/MDX/CodeBlock/CodeBlock.tsx
+++ b/src/components/MDX/CodeBlock/CodeBlock.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -289,7 +296,7 @@ function getSyntaxHighlight(theme: any): HighlightStyle {
function getLineDecorators(
code: string,
- meta: string
+ meta?: string
): Array<{
line: number;
className: string;
@@ -309,7 +316,7 @@ function getLineDecorators(
function getInlineDecorators(
code: string,
- meta: string
+ meta?: string
): Array<{
step: number;
line: number;
@@ -336,6 +343,7 @@ function getInlineDecorators(
line.step === 3,
'bg-green-40 border-green-40 text-green-60 dark:text-green-30':
line.step === 4,
+ // TODO: Some codeblocks use up to 6 steps.
}
),
})
diff --git a/src/components/MDX/CodeBlock/index.tsx b/src/components/MDX/CodeBlock/index.tsx
index 551c1d1b6..d3ed3a065 100644
--- a/src/components/MDX/CodeBlock/index.tsx
+++ b/src/components/MDX/CodeBlock/index.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/CodeDiagram.tsx b/src/components/MDX/CodeDiagram.tsx
index 7a503f068..ba18ae973 100644
--- a/src/components/MDX/CodeDiagram.tsx
+++ b/src/components/MDX/CodeDiagram.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -17,7 +24,14 @@ export function CodeDiagram({children, flip = false}: CodeDiagramProps) {
});
const content = Children.toArray(children).map((child: any) => {
if (child.type?.mdxName === 'pre') {
- return ;
+ return (
+
+ );
} else if (child.type === 'img') {
return null;
} else {
diff --git a/src/components/MDX/ConsoleBlock.tsx b/src/components/MDX/ConsoleBlock.tsx
index 6e704b417..1847abc5c 100644
--- a/src/components/MDX/ConsoleBlock.tsx
+++ b/src/components/MDX/ConsoleBlock.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -38,7 +45,8 @@ export function ConsoleBlock({level = 'error', children}: ConsoleBlockProps) {
if (typeof children === 'string') {
message = children;
} else if (isValidElement(children)) {
- message = children.props.children;
+ message = (children as React.ReactElement<{children?: React.ReactNode}>)
+ .props.children;
}
return (
@@ -113,7 +121,8 @@ export function ConsoleLogLine({children, level}: ConsoleBlockProps) {
if (typeof children === 'string') {
message = children;
} else if (isValidElement(children)) {
- message = children.props.children;
+ message = (children as React.ReactElement<{children?: React.ReactNode}>)
+ .props.children;
} else if (Array.isArray(children)) {
message = children.reduce((result, child) => {
if (typeof child === 'string') {
diff --git a/src/components/MDX/Diagram.tsx b/src/components/MDX/Diagram.tsx
index 649f48dff..579c86ebe 100644
--- a/src/components/MDX/Diagram.tsx
+++ b/src/components/MDX/Diagram.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/DiagramGroup.tsx b/src/components/MDX/DiagramGroup.tsx
index 6c5130a3d..8e3bf46c3 100644
--- a/src/components/MDX/DiagramGroup.tsx
+++ b/src/components/MDX/DiagramGroup.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/ErrorDecoder.tsx b/src/components/MDX/ErrorDecoder.tsx
index 198aa939d..423790198 100644
--- a/src/components/MDX/ErrorDecoder.tsx
+++ b/src/components/MDX/ErrorDecoder.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
import {useEffect, useState} from 'react';
import {useErrorDecoderParams} from '../ErrorDecoderContext';
import cn from 'classnames';
@@ -11,7 +18,7 @@ function replaceArgs(
return msg.replace(/%s/g, function () {
const arg = argList[argIdx++];
// arg can be an empty string: ?args[0]=&args[1]=count
- return arg === undefined || arg === '' ? replacer : arg;
+ return arg === undefined ? replacer : arg;
});
}
@@ -69,7 +76,7 @@ function parseQueryString(search: string): Array {
}
export default function ErrorDecoder() {
- const {errorMessage} = useErrorDecoderParams();
+ const {errorMessage, errorCode} = useErrorDecoderParams();
/** error messages that contain %s require reading location.search */
const hasParams = errorMessage?.includes('%s');
const [message, setMessage] = useState(() =>
@@ -82,23 +89,28 @@ export default function ErrorDecoder() {
if (errorMessage == null || !hasParams) {
return;
}
+ const args = parseQueryString(window.location.search);
+ let message = errorMessage;
+ if (errorCode === '418') {
+ // Hydration errors have a %s for the diff, but we don't add that to the args for security reasons.
+ message = message.replace(/%s$/, '');
+
+ // Before React 19.1, the error message didn't have an arg, and was always HTML.
+ if (args.length === 0) {
+ args.push('HTML');
+ } else if (args.length === 1 && args[0] === '') {
+ args[0] = 'HTML';
+ }
+ }
- setMessage(
- urlify(
- replaceArgs(
- errorMessage,
- parseQueryString(window.location.search),
- '[missing argument]'
- )
- )
- );
+ setMessage(urlify(replaceArgs(message, args, '[missing argument]')));
setIsReady(true);
- }, [hasParams, errorMessage]);
+ }, [errorCode, hasParams, errorMessage]);
return (
{message}
diff --git a/src/components/MDX/ExpandableCallout.tsx b/src/components/MDX/ExpandableCallout.tsx
index 035ccb8e2..9fb49d13c 100644
--- a/src/components/MDX/ExpandableCallout.tsx
+++ b/src/components/MDX/ExpandableCallout.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -8,8 +15,18 @@ import {IconNote} from '../Icon/IconNote';
import {IconWarning} from '../Icon/IconWarning';
import {IconPitfall} from '../Icon/IconPitfall';
import {IconCanary} from '../Icon/IconCanary';
+import {IconRocket} from '../Icon/IconRocket';
-type CalloutVariants = 'deprecated' | 'pitfall' | 'note' | 'wip' | 'canary';
+type CalloutVariants =
+ | 'deprecated'
+ | 'pitfall'
+ | 'note'
+ | 'wip'
+ | 'canary'
+ | 'experimental'
+ | 'rc'
+ | 'major'
+ | 'rsc';
interface ExpandableCalloutProps {
children: React.ReactNode;
@@ -34,6 +51,15 @@ const variantMap = {
overlayGradient:
'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)',
},
+ rc: {
+ title: 'RC',
+ Icon: IconCanary,
+ containerClasses:
+ 'bg-gray-5 dark:bg-gray-60 dark:bg-opacity-20 text-primary dark:text-primary-dark text-lg',
+ textColor: 'text-gray-60 dark:text-gray-30',
+ overlayGradient:
+ 'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)',
+ },
canary: {
title: 'Test OrtamΔ± (Canary)',
Icon: IconCanary,
@@ -43,6 +69,15 @@ const variantMap = {
overlayGradient:
'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)',
},
+ experimental: {
+ title: 'Experimental Feature',
+ Icon: IconCanary,
+ containerClasses:
+ 'bg-green-5 dark:bg-green-60 dark:bg-opacity-20 text-primary dark:text-primary-dark text-lg',
+ textColor: 'text-green-60 dark:text-green-40',
+ overlayGradient:
+ 'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)',
+ },
pitfall: {
title: 'Tuzak',
Icon: IconPitfall,
@@ -59,6 +94,22 @@ const variantMap = {
overlayGradient:
'linear-gradient(rgba(249, 247, 243, 0), rgba(249, 247, 243, 1)',
},
+ major: {
+ title: 'React 19',
+ Icon: IconRocket,
+ containerClasses: 'bg-blue-10 dark:bg-blue-60 dark:bg-opacity-20',
+ textColor: 'text-blue-50 dark:text-blue-40',
+ overlayGradient:
+ 'linear-gradient(rgba(249, 247, 243, 0), rgba(249, 247, 243, 1)',
+ },
+ rsc: {
+ title: 'React Server Components',
+ Icon: null,
+ containerClasses: 'bg-blue-10 dark:bg-blue-60 dark:bg-opacity-20',
+ textColor: 'text-blue-50 dark:text-blue-40',
+ overlayGradient:
+ 'linear-gradient(rgba(249, 247, 243, 0), rgba(249, 247, 243, 1)',
+ },
};
function ExpandableCallout({children, type = 'note'}: ExpandableCalloutProps) {
@@ -72,9 +123,11 @@ function ExpandableCallout({children, type = 'note'}: ExpandableCalloutProps) {
variant.containerClasses
)}>
-
+ {variant.Icon && (
+
+ )}
{variant.title}
diff --git a/src/components/MDX/ExpandableExample.tsx b/src/components/MDX/ExpandableExample.tsx
index 9407c8f8c..ad861978c 100644
--- a/src/components/MDX/ExpandableExample.tsx
+++ b/src/components/MDX/ExpandableExample.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/Heading.tsx b/src/components/MDX/Heading.tsx
index a9f3efc38..5890a3a48 100644
--- a/src/components/MDX/Heading.tsx
+++ b/src/components/MDX/Heading.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/InlineCode.tsx b/src/components/MDX/InlineCode.tsx
index 0e8db0165..17e4683b9 100644
--- a/src/components/MDX/InlineCode.tsx
+++ b/src/components/MDX/InlineCode.tsx
@@ -1,8 +1,16 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
import cn from 'classnames';
+import type {HTMLAttributes} from 'react';
interface InlineCodeProps {
isLink?: boolean;
@@ -11,7 +19,7 @@ interface InlineCodeProps {
function InlineCode({
isLink,
...props
-}: JSX.IntrinsicElements['code'] & InlineCodeProps) {
+}: HTMLAttributes & InlineCodeProps) {
return (
in case of RTL languages to avoid like `()console.log` to be rendered as `console.log()`
diff --git a/src/components/MDX/Intro.tsx b/src/components/MDX/Intro.tsx
index 0522df678..b0bee624d 100644
--- a/src/components/MDX/Intro.tsx
+++ b/src/components/MDX/Intro.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/LanguagesContext.tsx b/src/components/MDX/LanguagesContext.tsx
index 776a11c0d..cd9f88816 100644
--- a/src/components/MDX/LanguagesContext.tsx
+++ b/src/components/MDX/LanguagesContext.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/Link.tsx b/src/components/MDX/Link.tsx
index 7bf041e56..8a47c401f 100644
--- a/src/components/MDX/Link.tsx
+++ b/src/components/MDX/Link.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/MDXComponents.tsx b/src/components/MDX/MDXComponents.tsx
index 8830e2210..2715fa1c6 100644
--- a/src/components/MDX/MDXComponents.tsx
+++ b/src/components/MDX/MDXComponents.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -5,6 +12,7 @@
import {Children, useContext, useMemo} from 'react';
import * as React from 'react';
import cn from 'classnames';
+import type {HTMLAttributes} from 'react';
import CodeBlock from './CodeBlock';
import {CodeDiagram} from './CodeDiagram';
@@ -18,7 +26,7 @@ import BlogCard from './BlogCard';
import Link from './Link';
import {PackageImport} from './PackageImport';
import Recap from './Recap';
-import Sandpack from './Sandpack';
+import {SandpackClient as Sandpack, SandpackRSC} from './Sandpack';
import SandpackWithHTMLOutput from './SandpackWithHTMLOutput';
import Diagram from './Diagram';
import DiagramGroup from './DiagramGroup';
@@ -36,6 +44,7 @@ import {finishedTranslations} from 'utils/finishedTranslations';
import ErrorDecoder from './ErrorDecoder';
import {IconCanary} from '../Icon/IconCanary';
+import {IconExperimental} from 'components/Icon/IconExperimental';
function CodeStep({children, step}: {children: any; step: number}) {
return (
@@ -59,21 +68,21 @@ function CodeStep({children, step}: {children: any; step: number}) {
);
}
-const P = (p: JSX.IntrinsicElements['p']) => (
+const P = (p: HTMLAttributes) => (
);
-const Strong = (strong: JSX.IntrinsicElements['strong']) => (
+const Strong = (strong: HTMLAttributes) => (
);
-const OL = (p: JSX.IntrinsicElements['ol']) => (
+const OL = (p: HTMLAttributes) => (
);
-const LI = (p: JSX.IntrinsicElements['li']) => (
+const LI = (p: HTMLAttributes) => (
);
-const UL = (p: JSX.IntrinsicElements['ul']) => (
+const UL = (p: HTMLAttributes) => (
{sequential ? (
@@ -325,7 +381,7 @@ function IllustrationBlock({
)}
-
+
);
}
@@ -481,13 +537,21 @@ export const MDXComponents = {
Math,
MathI,
Note,
+ RC,
Canary,
+ Experimental,
+ ExperimentalBadge,
CanaryBadge,
+ NextMajor,
+ NextMajorBadge,
+ RSC,
+ RSCBadge,
PackageImport,
ReadBlogPost,
Recap,
Recipes,
Sandpack,
+ SandpackRSC,
SandpackWithHTMLOutput,
TeamMember,
TerminalBlock,
diff --git a/src/components/MDX/PackageImport.tsx b/src/components/MDX/PackageImport.tsx
index 5e2da820e..222353ff5 100644
--- a/src/components/MDX/PackageImport.tsx
+++ b/src/components/MDX/PackageImport.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/Recap.tsx b/src/components/MDX/Recap.tsx
index 3d68ca989..a9918a9b6 100644
--- a/src/components/MDX/Recap.tsx
+++ b/src/components/MDX/Recap.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/Sandpack/ClearButton.tsx b/src/components/MDX/Sandpack/ClearButton.tsx
new file mode 100644
index 000000000..be7451ab3
--- /dev/null
+++ b/src/components/MDX/Sandpack/ClearButton.tsx
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/*
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ */
+
+import * as React from 'react';
+import {IconClose} from '../../Icon/IconClose';
+export interface ClearButtonProps {
+ onClear: () => void;
+}
+
+export function ClearButton({onClear}: ClearButtonProps) {
+ return (
+
+ );
+}
diff --git a/src/components/MDX/Sandpack/Console.tsx b/src/components/MDX/Sandpack/Console.tsx
index b5276fc13..625b1c365 100644
--- a/src/components/MDX/Sandpack/Console.tsx
+++ b/src/components/MDX/Sandpack/Console.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -112,7 +119,7 @@ export const SandpackConsole = ({visible}: {visible: boolean}) => {
setLogs((prev) => {
const newLogs = message.log
.filter((consoleData) => {
- if (!consoleData.method) {
+ if (!consoleData.method || !consoleData.data) {
return false;
}
if (
diff --git a/src/components/MDX/Sandpack/CustomPreset.tsx b/src/components/MDX/Sandpack/CustomPreset.tsx
index 9080f7aea..2cc54d258 100644
--- a/src/components/MDX/Sandpack/CustomPreset.tsx
+++ b/src/components/MDX/Sandpack/CustomPreset.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -19,8 +26,10 @@ import {useSandpackLint} from './useSandpackLint';
export const CustomPreset = memo(function CustomPreset({
providedFiles,
+ showOpenInCodeSandbox = true,
}: {
providedFiles: Array;
+ showOpenInCodeSandbox?: boolean;
}) {
const {lintErrors, lintExtensions} = useSandpackLint();
const {sandpack} = useSandpack();
@@ -28,6 +37,7 @@ export const CustomPreset = memo(function CustomPreset({
const {activeFile} = sandpack;
const lineCountRef = useRef<{[key: string]: number}>({});
if (!lineCountRef.current[activeFile]) {
+ // eslint-disable-next-line react-compiler/react-compiler
lineCountRef.current[activeFile] = code.split('\n').length;
}
const lineCount = lineCountRef.current[activeFile];
@@ -38,6 +48,7 @@ export const CustomPreset = memo(function CustomPreset({
lintErrors={lintErrors}
lintExtensions={lintExtensions}
isExpandable={isExpandable}
+ showOpenInCodeSandbox={showOpenInCodeSandbox}
/>
);
});
@@ -47,11 +58,13 @@ const SandboxShell = memo(function SandboxShell({
lintErrors,
lintExtensions,
isExpandable,
+ showOpenInCodeSandbox,
}: {
providedFiles: Array;
lintErrors: Array;
lintExtensions: Array;
isExpandable: boolean;
+ showOpenInCodeSandbox: boolean;
}) {
const containerRef = useRef(null);
const [isExpanded, setIsExpanded] = useState(false);
@@ -63,7 +76,10 @@ const SandboxShell = memo(function SandboxShell({
style={{
contain: 'content',
}}>
-
+ ): JSX.Element | null => {
+} & React.HTMLAttributes): React.ReactNode | null => {
const loadingOverlayState = useLoadingOverlayState(
clientId,
dependenciesLoading,
@@ -64,6 +71,7 @@ export const LoadingOverlay = ({
transition: `opacity ${FADE_ANIMATION_DURATION}ms ease-out`,
}}>
+ {/* @ts-ignore: the OpenInCodeSandboxButton type from '@codesandbox/sandpack-react/unstyled' is incompatible with JSX in React 19 */}
diff --git a/src/components/MDX/Sandpack/NavigationBar.tsx b/src/components/MDX/Sandpack/NavigationBar.tsx
index 26ed5783d..042f4b93a 100644
--- a/src/components/MDX/Sandpack/NavigationBar.tsx
+++ b/src/components/MDX/Sandpack/NavigationBar.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -17,7 +24,8 @@ import {
useSandpackNavigation,
} from '@codesandbox/sandpack-react/unstyled';
import {OpenInCodeSandboxButton} from './OpenInCodeSandboxButton';
-import {ResetButton} from './ResetButton';
+import {ReloadButton} from './ReloadButton';
+import {ClearButton} from './ClearButton';
import {DownloadButton} from './DownloadButton';
import {IconChevron} from '../../Icon/IconChevron';
import {Listbox} from '@headlessui/react';
@@ -40,7 +48,13 @@ const getFileName = (filePath: string): string => {
return filePath.slice(lastIndexOfSlash + 1);
};
-export function NavigationBar({providedFiles}: {providedFiles: Array}) {
+export function NavigationBar({
+ providedFiles,
+ showOpenInCodeSandbox = true,
+}: {
+ providedFiles: Array;
+ showOpenInCodeSandbox?: boolean;
+}) {
const {sandpack} = useSandpack();
const containerRef = useRef(null);
const tabsRef = useRef(null);
@@ -95,7 +109,7 @@ export function NavigationBar({providedFiles}: {providedFiles: Array}) {
// Note: in a real useEvent, onContainerResize would be omitted.
}, [isMultiFile, onContainerResize]);
- const handleReset = () => {
+ const handleClear = () => {
/**
* resetAllFiles must come first, otherwise
* the previous content will appear for a second
@@ -103,19 +117,22 @@ export function NavigationBar({providedFiles}: {providedFiles: Array}) {
*
* Plus, it should only prompt if there's any file changes
*/
- if (
- sandpack.editorState === 'dirty' &&
- confirm('Reset all your edits too?')
- ) {
+ if (sandpack.editorState === 'dirty' && confirm('Clear all your edits?')) {
sandpack.resetAllFiles();
}
+ refresh();
+ };
+ const handleReload = () => {
refresh();
};
return (
+ {/* If Prettier reformats this block, the two @ts-ignore directives will no longer be adjacent to the problematic lines, causing TypeScript errors */}
+ {/* prettier-ignore */}
+ {/* @ts-ignore: the Listbox type from '@headlessui/react' is incompatible with JSX in React 19 */}
@@ -129,8 +146,10 @@ export function NavigationBar({providedFiles}: {providedFiles: Array}) {
'w-[fit-content]',
showDropdown ? 'invisible' : ''
)}>
+ {/* @ts-ignore: the FileTabs type from '@codesandbox/sandpack-react/unstyled' is incompatible with JSX in React 19 */}
+ {/* @ts-ignore: the Listbox type from '@headlessui/react' is incompatible with JSX in React 19 */}
{({open}) => (
// If tabs don't fit, display the dropdown instead.
@@ -160,10 +179,10 @@ export function NavigationBar({providedFiles}: {providedFiles: Array}) {
- {isMultiFile && showDropdown && (
-
- {visibleFiles.map((filePath: string) => (
-
+ {/* @ts-ignore: the Listbox type from '@headlessui/react' is incompatible with JSX in React 19 */}
+ {isMultiFile && showDropdown && (
+ {/* @ts-ignore: the Listbox type from '@headlessui/react' is incompatible with JSX in React 19 */}
+ {visibleFiles.map((filePath: string) => (
{({active}) => (
}) {
className="px-3 flex items-center justify-end text-start"
translate="yes">
-
-
+
+
+ {showOpenInCodeSandbox && }
{activeFile.endsWith('.tsx') && (
void;
+}
+
+export function ReloadButton({onReload}: ReloadButtonProps) {
+ return (
+
+ );
+}
diff --git a/src/components/MDX/Sandpack/ResetButton.tsx b/src/components/MDX/Sandpack/ResetButton.tsx
deleted file mode 100644
index 31fb25fa3..000000000
--- a/src/components/MDX/Sandpack/ResetButton.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (c) Facebook, Inc. and its affiliates.
- */
-
-import * as React from 'react';
-import {IconRestart} from '../../Icon/IconRestart';
-export interface ResetButtonProps {
- onReset: () => void;
-}
-
-export function ResetButton({onReset}: ResetButtonProps) {
- return (
-
- );
-}
diff --git a/src/components/MDX/Sandpack/SandpackRSCRoot.tsx b/src/components/MDX/Sandpack/SandpackRSCRoot.tsx
new file mode 100644
index 000000000..1c9bd0582
--- /dev/null
+++ b/src/components/MDX/Sandpack/SandpackRSCRoot.tsx
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/*
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ */
+
+import {Children} from 'react';
+import * as React from 'react';
+import {SandpackProvider} from '@codesandbox/sandpack-react/unstyled';
+import {SandpackLogLevel} from '@codesandbox/sandpack-client';
+import {CustomPreset} from './CustomPreset';
+import {createFileMap} from './createFileMap';
+import {CustomTheme} from './Themes';
+import {templateRSC} from './templateRSC';
+import {RscFileBridge} from './sandpack-rsc/RscFileBridge';
+
+type SandpackProps = {
+ children: React.ReactNode;
+ autorun?: boolean;
+};
+
+const sandboxStyle = `
+* {
+ box-sizing: border-box;
+}
+
+body {
+ font-family: sans-serif;
+ margin: 20px;
+ padding: 0;
+}
+
+h1 {
+ margin-top: 0;
+ font-size: 22px;
+}
+
+h2 {
+ margin-top: 0;
+ font-size: 20px;
+}
+
+h3 {
+ margin-top: 0;
+ font-size: 18px;
+}
+
+h4 {
+ margin-top: 0;
+ font-size: 16px;
+}
+
+h5 {
+ margin-top: 0;
+ font-size: 14px;
+}
+
+h6 {
+ margin-top: 0;
+ font-size: 12px;
+}
+
+code {
+ font-size: 1.2em;
+}
+
+ul {
+ padding-inline-start: 20px;
+}
+`.trim();
+
+function SandpackRSCRoot(props: SandpackProps) {
+ const {children, autorun = true} = props;
+ const codeSnippets = Children.toArray(children) as React.ReactElement[];
+ const files = createFileMap(codeSnippets);
+
+ if ('/index.html' in files) {
+ throw new Error(
+ 'You cannot use `index.html` file in sandboxes. ' +
+ 'Only `public/index.html` is respected by Sandpack and CodeSandbox (where forks are created).'
+ );
+ }
+
+ files['/src/styles.css'] = {
+ code: [sandboxStyle, files['/src/styles.css']?.code ?? ''].join('\n\n'),
+ hidden: !files['/src/styles.css']?.visible,
+ };
+
+ return (
+
+
+
+
+
+
+ );
+}
+
+export default SandpackRSCRoot;
diff --git a/src/components/MDX/Sandpack/SandpackRoot.tsx b/src/components/MDX/Sandpack/SandpackRoot.tsx
index a47fa6860..48d8daee5 100644
--- a/src/components/MDX/Sandpack/SandpackRoot.tsx
+++ b/src/components/MDX/Sandpack/SandpackRoot.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -71,6 +78,13 @@ function SandpackRoot(props: SandpackProps) {
const codeSnippets = Children.toArray(children) as React.ReactElement[];
const files = createFileMap(codeSnippets);
+ if ('/index.html' in files) {
+ throw new Error(
+ 'You cannot use `index.html` file in sandboxes. ' +
+ 'Only `public/index.html` is respected by Sandpack and CodeSandbox (where forks are created).'
+ );
+ }
+
files['/src/styles.css'] = {
code: [sandboxStyle, files['/src/styles.css']?.code ?? ''].join('\n\n'),
hidden: !files['/src/styles.css']?.visible,
diff --git a/src/components/MDX/Sandpack/Themes.tsx b/src/components/MDX/Sandpack/Themes.tsx
index 3923470ca..8aa34dc95 100644
--- a/src/components/MDX/Sandpack/Themes.tsx
+++ b/src/components/MDX/Sandpack/Themes.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/Sandpack/createFileMap.ts b/src/components/MDX/Sandpack/createFileMap.ts
index 615d34c9a..049face93 100644
--- a/src/components/MDX/Sandpack/createFileMap.ts
+++ b/src/components/MDX/Sandpack/createFileMap.ts
@@ -1,13 +1,81 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
import type {SandpackFile} from '@codesandbox/sandpack-react/unstyled';
+import type {PropsWithChildren, ReactElement, HTMLAttributes} from 'react';
export const AppJSPath = `/src/App.js`;
export const StylesCSSPath = `/src/styles.css`;
export const SUPPORTED_FILES = [AppJSPath, StylesCSSPath];
+/**
+ * Tokenize meta attributes while ignoring brace-wrapped metadata (e.g. {expectedErrors: β¦}).
+ */
+function splitMeta(meta: string): string[] {
+ const tokens: string[] = [];
+ let current = '';
+ let depth = 0;
+ const trimmed = meta.trim();
+
+ for (let ii = 0; ii < trimmed.length; ii++) {
+ const char = trimmed[ii];
+
+ if (char === '{') {
+ if (depth === 0 && current) {
+ tokens.push(current);
+ current = '';
+ }
+ depth += 1;
+ continue;
+ }
+
+ if (char === '}') {
+ if (depth > 0) {
+ depth -= 1;
+ }
+ if (depth === 0) {
+ current = '';
+ }
+ if (depth < 0) {
+ throw new Error(`Unexpected closing brace in meta: ${meta}`);
+ }
+ continue;
+ }
+
+ if (depth > 0) {
+ continue;
+ }
+
+ if (/\s/.test(char)) {
+ if (current) {
+ tokens.push(current);
+ current = '';
+ }
+ continue;
+ }
+
+ current += char;
+ }
+
+ if (current) {
+ tokens.push(current);
+ }
+
+ if (depth !== 0) {
+ throw new Error(`Unclosed brace in meta: ${meta}`);
+ }
+
+ return tokens;
+}
+
export const createFileMap = (codeSnippets: any) => {
return codeSnippets.reduce(
(result: Record, codeSnippet: React.ReactElement) => {
@@ -17,18 +85,29 @@ export const createFileMap = (codeSnippets: any) => {
) {
return result;
}
- const {props} = codeSnippet.props.children;
+ const {props} = (
+ codeSnippet.props as PropsWithChildren<{
+ children: ReactElement<
+ HTMLAttributes & {meta?: string}
+ >;
+ }>
+ ).children;
let filePath; // path in the folder structure
let fileHidden = false; // if the file is available as a tab
let fileActive = false; // if the file tab is shown by default
if (props.meta) {
- const [name, ...params] = props.meta.split(' ');
- filePath = '/' + name;
- if (params.includes('hidden')) {
+ const tokens = splitMeta(props.meta);
+ const name = tokens.find(
+ (token) => token.includes('/') || token.includes('.')
+ );
+ if (name) {
+ filePath = name.startsWith('/') ? name : `/${name}`;
+ }
+ if (tokens.includes('hidden')) {
fileHidden = true;
}
- if (params.includes('active')) {
+ if (tokens.includes('active')) {
fileActive = true;
}
} else {
@@ -43,6 +122,18 @@ export const createFileMap = (codeSnippets: any) => {
}
}
+ if (!filePath) {
+ if (props.className === 'language-js') {
+ filePath = AppJSPath;
+ } else if (props.className === 'language-css') {
+ filePath = StylesCSSPath;
+ } else {
+ throw new Error(
+ `Code block is missing a filename: ${props.children}`
+ );
+ }
+ }
+
if (result[filePath]) {
throw new Error(
`File ${filePath} was defined multiple times. Each file snippet should have a unique path name`
diff --git a/src/components/MDX/Sandpack/index.tsx b/src/components/MDX/Sandpack/index.tsx
index 6755ba8de..a8b802cec 100644
--- a/src/components/MDX/Sandpack/index.tsx
+++ b/src/components/MDX/Sandpack/index.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -45,7 +52,7 @@ const SandpackGlimmer = ({code}: {code: string}) => (
);
-export default memo(function SandpackWrapper(props: any): any {
+export const SandpackClient = memo(function SandpackWrapper(props: any): any {
const codeSnippet = createFileMap(Children.toArray(props.children));
// To set the active file in the fallback we have to find the active file first.
@@ -68,3 +75,31 @@ export default memo(function SandpackWrapper(props: any): any {
);
});
+
+const SandpackRSCRoot = lazy(() => import('./SandpackRSCRoot'));
+
+export const SandpackRSC = memo(function SandpackRSCWrapper(props: {
+ children: React.ReactNode;
+}): any {
+ const codeSnippet = createFileMap(Children.toArray(props.children));
+
+ // To set the active file in the fallback we have to find the active file first.
+ // If there are no active files we fallback to App.js as default.
+ let activeCodeSnippet = Object.keys(codeSnippet).filter(
+ (fileName) =>
+ codeSnippet[fileName]?.active === true &&
+ codeSnippet[fileName]?.hidden === false
+ );
+ let activeCode;
+ if (!activeCodeSnippet.length) {
+ activeCode = codeSnippet[AppJSPath]?.code ?? '';
+ } else {
+ activeCode = codeSnippet[activeCodeSnippet[0]].code;
+ }
+
+ return (
+ }>
+ {props.children}
+
+ );
+});
diff --git a/src/components/MDX/Sandpack/runESLint.tsx b/src/components/MDX/Sandpack/runESLint.tsx
index 5fea2f110..667b22d7e 100644
--- a/src/components/MDX/Sandpack/runESLint.tsx
+++ b/src/components/MDX/Sandpack/runESLint.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
// @ts-nocheck
import {Linter} from 'eslint/lib/linter/linter';
@@ -14,13 +21,6 @@ const getCodeMirrorPosition = (
const linter = new Linter();
-// HACK! Eslint requires 'esquery' using `require`, but there's no commonjs interop.
-// because of this it tries to run `esquery.parse()`, while there's only `esquery.default.parse()`.
-// This hack places the functions in the right place.
-const esquery = require('esquery');
-esquery.parse = esquery.default?.parse;
-esquery.matches = esquery.default?.matches;
-
const reactRules = require('eslint-plugin-react-hooks').rules;
linter.defineRules({
'react-hooks/rules-of-hooks': reactRules['rules-of-hooks'],
diff --git a/src/components/MDX/Sandpack/sandpack-rsc/RscFileBridge.tsx b/src/components/MDX/Sandpack/sandpack-rsc/RscFileBridge.tsx
new file mode 100644
index 000000000..cca545a40
--- /dev/null
+++ b/src/components/MDX/Sandpack/sandpack-rsc/RscFileBridge.tsx
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import {useEffect, useRef} from 'react';
+import {useSandpack} from '@codesandbox/sandpack-react/unstyled';
+
+/**
+ * Bridges file contents from the Sandpack editor to the RSC client entry
+ * running inside the iframe. When the Sandpack bundler finishes compiling,
+ * reads all raw file contents and posts them to the iframe via postMessage.
+ */
+export function RscFileBridge() {
+ const {sandpack, dispatch, listen} = useSandpack();
+ const filesRef = useRef(sandpack.files);
+
+ // TODO: fix this with useEffectEvent
+ // eslint-disable-next-line react-compiler/react-compiler
+ filesRef.current = sandpack.files;
+
+ useEffect(() => {
+ const unsubscribe = listen((msg: any) => {
+ if (msg.type !== 'done') return;
+
+ const files: Record = {};
+ for (const [path, file] of Object.entries(filesRef.current)) {
+ files[path] = file.code;
+ }
+
+ dispatch({type: 'rsc-file-update', files} as any);
+ });
+
+ return unsubscribe;
+ }, [dispatch, listen]);
+
+ return null;
+}
diff --git a/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/__react_refresh_init__.js b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/__react_refresh_init__.js
new file mode 100644
index 000000000..8d0efa9d0
--- /dev/null
+++ b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/__react_refresh_init__.js
@@ -0,0 +1,17 @@
+// Must run before React loads. Creates __REACT_DEVTOOLS_GLOBAL_HOOK__ so
+// React's renderer injects into it, enabling react-refresh to work.
+if (typeof window !== 'undefined' && !window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {
+ var nextID = 0;
+ window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = {
+ renderers: new Map(),
+ supportsFiber: true,
+ inject: function (injected) {
+ var id = nextID++;
+ this.renderers.set(id, injected);
+ return id;
+ },
+ onScheduleFiberRoot: function () {},
+ onCommitFiberRoot: function () {},
+ onCommitFiberUnmount: function () {},
+ };
+}
diff --git a/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/rsc-client.js b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/rsc-client.js
new file mode 100644
index 000000000..ed41755ed
--- /dev/null
+++ b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/rsc-client.js
@@ -0,0 +1,381 @@
+// RSC Client Entry Point
+// Runs inside the Sandpack iframe. Orchestrates the RSC pipeline:
+// 1. Creates a Web Worker from pre-bundled server runtime
+// 2. Receives file updates from parent (RscFileBridge) via postMessage
+// 3. Sends all user files to Worker for directive detection + compilation
+// 4. Worker compiles with Sucrase + executes, sends back Flight chunks
+// 5. Renders the Flight stream result with React
+
+// Minimal webpack shim for RSDW compatibility.
+// Works in both browser (window) and worker (self) contexts via globalThis.
+
+import * as React from 'react';
+import * as ReactJSXRuntime from 'react/jsx-runtime';
+import * as ReactJSXDevRuntime from 'react/jsx-dev-runtime';
+import {useState, startTransition, use} from 'react';
+import {jsx} from 'react/jsx-runtime';
+import {createRoot} from 'react-dom/client';
+
+import rscServerForWorker from './rsc-server.js';
+
+import './__webpack_shim__';
+import {
+ createFromReadableStream,
+ encodeReply,
+} from 'react-server-dom-webpack/client.browser';
+
+import {
+ injectIntoGlobalHook,
+ register as refreshRegister,
+ performReactRefresh,
+ isLikelyComponentType,
+} from 'react-refresh/runtime';
+
+// Patch the DevTools hook to capture renderer helpers and track roots.
+// Must run after react-dom evaluates (injects renderer) but before createRoot().
+injectIntoGlobalHook(window);
+
+export function initClient() {
+ // Create Worker from pre-bundled server runtime
+ var blob = new Blob([rscServerForWorker], {type: 'application/javascript'});
+ var workerUrl = URL.createObjectURL(blob);
+ var worker = new Worker(workerUrl);
+
+ // Render tracking
+ var nextStreamId = 0;
+ var chunkControllers = {};
+ var setCurrentPromise;
+ var firstRender = true;
+ var workerReady = false;
+ var pendingFiles = null;
+
+ function Root({initialPromise}) {
+ var _state = useState(initialPromise);
+ setCurrentPromise = _state[1];
+ return use(_state[0]);
+ }
+
+ // Set up React root
+ var initialResolve;
+ var initialPromise = new Promise(function (resolve) {
+ initialResolve = resolve;
+ });
+
+ var rootEl = document.getElementById('root');
+ if (!rootEl) throw new Error('#root element not found');
+ var root = createRoot(rootEl, {
+ onUncaughtError: function (error) {
+ var msg =
+ error && error.digest
+ ? error.digest
+ : error && error.message
+ ? error.message
+ : String(error);
+ console.error(msg);
+ showError(msg);
+ },
+ });
+ startTransition(function () {
+ root.render(jsx(Root, {initialPromise: initialPromise}));
+ });
+
+ // Error overlay β rendered inside the iframe via DOM so it doesn't
+ // interfere with Sandpack's parent-frame message protocol.
+ function showError(message) {
+ var overlay = document.getElementById('rsc-error-overlay');
+ if (!overlay) {
+ overlay = document.createElement('div');
+ overlay.id = 'rsc-error-overlay';
+ overlay.style.cssText =
+ 'background:#fff;border:2px solid #c00;border-radius:8px;padding:16px;margin:20px;font-family:sans-serif;';
+ var heading = document.createElement('h2');
+ heading.style.cssText = 'color:#c00;margin:0 0 8px;font-size:16px;';
+ heading.textContent = 'Server Error';
+ overlay.appendChild(heading);
+ var pre = document.createElement('pre');
+ pre.style.cssText =
+ 'margin:0;white-space:pre-wrap;word-break:break-word;font-size:14px;color:#222;';
+ overlay.appendChild(pre);
+ rootEl.parentNode.insertBefore(overlay, rootEl);
+ }
+ overlay.lastChild.textContent = message;
+ overlay.style.display = '';
+ rootEl.style.display = 'none';
+ }
+
+ function clearError() {
+ var overlay = document.getElementById('rsc-error-overlay');
+ if (overlay) overlay.style.display = 'none';
+ rootEl.style.display = '';
+ }
+
+ // Worker message handler
+ worker.onmessage = function (e) {
+ var msg = e.data;
+ if (msg.type === 'ready') {
+ workerReady = true;
+ if (pendingFiles) {
+ processFiles(pendingFiles);
+ pendingFiles = null;
+ }
+ } else if (msg.type === 'deploy-result') {
+ clearError();
+ // Register compiled client modules in the webpack cache before rendering
+ if (msg.result && msg.result.compiledClients) {
+ registerClientModules(
+ msg.result.compiledClients,
+ msg.result.clientEntries || {}
+ );
+ }
+ triggerRender();
+ } else if (msg.type === 'rsc-chunk') {
+ handleChunk(msg);
+ } else if (msg.type === 'rsc-error') {
+ showError(msg.error);
+ }
+ };
+
+ function callServer(id, args) {
+ return encodeReply(args).then(function (body) {
+ nextStreamId++;
+ var reqId = nextStreamId;
+
+ var stream = new ReadableStream({
+ start: function (controller) {
+ chunkControllers[reqId] = controller;
+ },
+ });
+
+ // FormData is not structured-cloneable for postMessage.
+ // Serialize to an array of entries; the worker reconstructs it.
+ var encodedArgs;
+ if (typeof body === 'string') {
+ encodedArgs = body;
+ } else {
+ var entries = [];
+ body.forEach(function (value, key) {
+ entries.push([key, value]);
+ });
+ encodedArgs = {__formData: entries};
+ }
+
+ worker.postMessage({
+ type: 'callAction',
+ requestId: reqId,
+ actionId: id,
+ encodedArgs: encodedArgs,
+ });
+
+ var response = createFromReadableStream(stream, {
+ callServer: callServer,
+ });
+
+ // Update UI with re-rendered root
+ startTransition(function () {
+ updateUI(
+ Promise.resolve(response).then(function (v) {
+ return v.root;
+ })
+ );
+ });
+
+ // Return action's return value (for useActionState support)
+ return Promise.resolve(response).then(function (v) {
+ return v.returnValue;
+ });
+ });
+ }
+
+ function triggerRender() {
+ // Close any in-flight streams from previous renders
+ Object.keys(chunkControllers).forEach(function (id) {
+ try {
+ chunkControllers[id].close();
+ } catch (e) {}
+ delete chunkControllers[id];
+ });
+
+ nextStreamId++;
+ var reqId = nextStreamId;
+
+ var stream = new ReadableStream({
+ start: function (controller) {
+ chunkControllers[reqId] = controller;
+ },
+ });
+
+ worker.postMessage({type: 'render', requestId: reqId});
+
+ var promise = createFromReadableStream(stream, {
+ callServer: callServer,
+ });
+
+ updateUI(promise);
+ }
+
+ function handleChunk(msg) {
+ var ctrl = chunkControllers[msg.requestId];
+ if (!ctrl) return;
+ if (msg.done) {
+ ctrl.close();
+ delete chunkControllers[msg.requestId];
+ } else {
+ ctrl.enqueue(msg.chunk);
+ }
+ }
+
+ function updateUI(promise) {
+ if (firstRender) {
+ firstRender = false;
+ if (initialResolve) initialResolve(promise);
+ } else {
+ startTransition(function () {
+ if (setCurrentPromise) setCurrentPromise(promise);
+ });
+ }
+ }
+
+ // File update handler β receives raw file contents from RscFileBridge
+ window.addEventListener('message', function (e) {
+ var msg = e.data;
+ if (msg.type !== 'rsc-file-update') return;
+ if (!workerReady) {
+ pendingFiles = msg.files;
+ return;
+ }
+ processFiles(msg.files);
+ });
+
+ function processFiles(files) {
+ console.clear();
+ var userFiles = {};
+ Object.keys(files).forEach(function (filePath) {
+ if (!filePath.match(/\.(js|jsx|ts|tsx)$/)) return;
+ if (filePath.indexOf('node_modules') !== -1) return;
+ if (filePath === '/src/index.js') return;
+ if (filePath === '/src/rsc-client.js') return;
+ if (filePath === '/src/rsc-server.js') return;
+ if (filePath === '/src/__webpack_shim__.js') return;
+ if (filePath === '/src/__react_refresh_init__.js') return;
+ userFiles[filePath] = files[filePath];
+ });
+ worker.postMessage({
+ type: 'deploy',
+ files: userFiles,
+ });
+ }
+
+ // Resolve relative paths (e.g., './Button' from '/src/Counter.js' β '/src/Button')
+ function resolvePath(from, to) {
+ if (!to.startsWith('.')) return to;
+ var parts = from.split('/');
+ parts.pop();
+ var toParts = to.split('/');
+ for (var i = 0; i < toParts.length; i++) {
+ if (toParts[i] === '.') continue;
+ if (toParts[i] === '..') {
+ parts.pop();
+ continue;
+ }
+ parts.push(toParts[i]);
+ }
+ return parts.join('/');
+ }
+
+ // Evaluate compiled client modules and register them in the webpack cache
+ // so RSDW client can resolve them via __webpack_require__.
+ function registerClientModules(compiledClients, clientEntries) {
+ // Clear stale client modules from previous deploys
+ Object.keys(globalThis.__webpack_module_cache__).forEach(function (key) {
+ delete globalThis.__webpack_module_cache__[key];
+ });
+
+ // Store all compiled code for lazy evaluation
+ var allCompiled = compiledClients;
+
+ function evaluateModule(moduleId) {
+ if (globalThis.__webpack_module_cache__[moduleId]) {
+ var cached = globalThis.__webpack_module_cache__[moduleId];
+ return cached.exports !== undefined ? cached.exports : cached;
+ }
+ var code = allCompiled[moduleId];
+ if (!code)
+ throw new Error('Client require: module "' + moduleId + '" not found');
+
+ var mod = {exports: {}};
+ // Register before evaluating to handle circular deps
+ var cacheEntry = {exports: mod.exports};
+ globalThis.__webpack_module_cache__[moduleId] = cacheEntry;
+
+ var clientRequire = function (id) {
+ if (id === 'react') return React;
+ if (id === 'react/jsx-runtime') return ReactJSXRuntime;
+ if (id === 'react/jsx-dev-runtime') return ReactJSXDevRuntime;
+ if (id.endsWith('.css')) return {};
+ var resolvedId = id.startsWith('.') ? resolvePath(moduleId, id) : id;
+ var candidates = [resolvedId];
+ var exts = ['.js', '.jsx', '.ts', '.tsx'];
+ for (var i = 0; i < exts.length; i++) {
+ candidates.push(resolvedId + exts[i]);
+ }
+ for (var j = 0; j < candidates.length; j++) {
+ if (
+ allCompiled[candidates[j]] ||
+ globalThis.__webpack_module_cache__[candidates[j]]
+ ) {
+ return evaluateModule(candidates[j]);
+ }
+ }
+ throw new Error('Client require: module "' + id + '" not found');
+ };
+
+ try {
+ new Function('module', 'exports', 'require', 'React', code)(
+ mod,
+ mod.exports,
+ clientRequire,
+ React
+ );
+ } catch (err) {
+ console.error('Error executing client module ' + moduleId + ':', err);
+ return mod.exports;
+ }
+ // Update the SAME cache entry's exports (don't replace the wrapper)
+ cacheEntry.exports = mod.exports;
+ return mod.exports;
+ }
+
+ // Eagerly evaluate 'use client' entry points; their imports resolve lazily
+ Object.keys(clientEntries).forEach(function (moduleId) {
+ evaluateModule(moduleId);
+ });
+
+ // Register all evaluated components with react-refresh for Fast Refresh.
+ // This creates stable "component families" so React can preserve state
+ // across re-evaluations when component identity changes.
+ Object.keys(globalThis.__webpack_module_cache__).forEach(function (
+ moduleId
+ ) {
+ var moduleExports = globalThis.__webpack_module_cache__[moduleId];
+ var exports =
+ moduleExports.exports !== undefined
+ ? moduleExports.exports
+ : moduleExports;
+ if (exports && typeof exports === 'object') {
+ for (var key in exports) {
+ var exportValue = exports[key];
+ if (isLikelyComponentType(exportValue)) {
+ refreshRegister(exportValue, moduleId + ' %exports% ' + key);
+ }
+ }
+ }
+ if (typeof exports === 'function' && isLikelyComponentType(exports)) {
+ refreshRegister(exports, moduleId + ' %exports% default');
+ }
+ });
+
+ // Tell React about updated component families so it can
+ // preserve state for components whose implementation changed.
+ performReactRefresh();
+ }
+}
diff --git a/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/rsc-server.js b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/rsc-server.js
new file mode 100644
index 000000000..7570a350c
--- /dev/null
+++ b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/rsc-server.js
@@ -0,0 +1,537 @@
+// Server Worker for RSC Sandboxes
+// Runs inside a Blob URL Web Worker.
+// Pre-bundled by esbuild with React (server build), react-server-dom-webpack/server.browser, and Sucrase.
+
+// IMPORTANT
+// If this file changes, run:
+// yarn prebuild:rsc
+
+var React = require('react');
+var ReactJSXRuntime = require('react/jsx-runtime');
+var RSDWServer = require('react-server-dom-webpack/server.browser');
+var Sucrase = require('sucrase');
+var acorn = require('acorn-loose');
+
+var deployed = null;
+
+// Module map proxy: generates module references on-demand for client components.
+// When server code imports a 'use client' file, it gets a proxy reference
+// that serializes into the Flight stream.
+function createModuleMap() {
+ return new Proxy(
+ {},
+ {
+ get: function (target, key) {
+ if (key in target) return target[key];
+ var parts = String(key).split('#');
+ var moduleId = parts[0];
+ var exportName = parts[1] || 'default';
+ var entry = {
+ id: moduleId,
+ chunks: [moduleId],
+ name: exportName,
+ async: true,
+ };
+ target[key] = entry;
+ return entry;
+ },
+ }
+ );
+}
+
+// Server actions registry
+var serverActionsRegistry = {};
+
+function registerServerReference(impl, moduleId, name) {
+ var ref = RSDWServer.registerServerReference(impl, moduleId, name);
+ var id = moduleId + '#' + name;
+ serverActionsRegistry[id] = impl;
+ return ref;
+}
+
+// Detect 'use client' / 'use server' directives using acorn-loose,
+// matching the same approach as react-server-dom-webpack/node-register.
+function parseDirective(code) {
+ if (code.indexOf('use client') === -1 && code.indexOf('use server') === -1) {
+ return null;
+ }
+ try {
+ var body = acorn.parse(code, {
+ ecmaVersion: '2024',
+ sourceType: 'source',
+ }).body;
+ } catch (x) {
+ return null;
+ }
+ for (var i = 0; i < body.length; i++) {
+ var node = body[i];
+ if (node.type !== 'ExpressionStatement' || !node.directive) break;
+ if (node.directive === 'use client') return 'use client';
+ if (node.directive === 'use server') return 'use server';
+ }
+ return null;
+}
+
+// Transform inline 'use server' functions (inside function bodies) into
+// registered server references. Module-level 'use server' is handled
+// separately by executeModule.
+function transformInlineServerActions(code) {
+ if (code.indexOf('use server') === -1) return code;
+ var ast;
+ try {
+ ast = acorn.parse(code, {ecmaVersion: '2024', sourceType: 'source'});
+ } catch (x) {
+ return code;
+ }
+
+ var edits = [];
+ var counter = 0;
+
+ function visit(node, fnDepth) {
+ if (!node || typeof node !== 'object') return;
+ var isFn =
+ node.type === 'FunctionDeclaration' ||
+ node.type === 'FunctionExpression' ||
+ node.type === 'ArrowFunctionExpression';
+
+ // Only look for 'use server' inside nested functions (fnDepth > 0)
+ if (
+ isFn &&
+ fnDepth > 0 &&
+ node.body &&
+ node.body.type === 'BlockStatement'
+ ) {
+ var body = node.body.body;
+ for (var s = 0; s < body.length; s++) {
+ var stmt = body[s];
+ if (stmt.type !== 'ExpressionStatement') break;
+ if (stmt.directive === 'use server') {
+ edits.push({
+ funcStart: node.start,
+ funcEnd: node.end,
+ dStart: stmt.start,
+ dEnd: stmt.end,
+ name: node.id ? node.id.name : 'action' + counter,
+ isDecl: node.type === 'FunctionDeclaration',
+ });
+ counter++;
+ return; // don't recurse into this function
+ }
+ if (!stmt.directive) break;
+ }
+ }
+
+ var nextDepth = isFn ? fnDepth + 1 : fnDepth;
+ for (var key in node) {
+ if (key === 'start' || key === 'end' || key === 'type') continue;
+ var child = node[key];
+ if (Array.isArray(child)) {
+ for (var i = 0; i < child.length; i++) {
+ if (child[i] && typeof child[i].type === 'string') {
+ visit(child[i], nextDepth);
+ }
+ }
+ } else if (child && typeof child.type === 'string') {
+ visit(child, nextDepth);
+ }
+ }
+ }
+
+ ast.body.forEach(function (stmt) {
+ visit(stmt, 0);
+ });
+ if (edits.length === 0) return code;
+
+ // Apply in reverse order to preserve positions
+ edits.sort(function (a, b) {
+ return b.funcStart - a.funcStart;
+ });
+
+ var result = code;
+ for (var i = 0; i < edits.length; i++) {
+ var e = edits[i];
+ // Remove the 'use server' directive + trailing whitespace
+ var dEnd = e.dEnd;
+ var ch = result.charAt(dEnd);
+ while (
+ dEnd < result.length &&
+ (ch === ' ' || ch === '\n' || ch === '\r' || ch === '\t')
+ ) {
+ dEnd++;
+ ch = result.charAt(dEnd);
+ }
+ result = result.slice(0, e.dStart) + result.slice(dEnd);
+ var removed = dEnd - e.dStart;
+ var adjEnd = e.funcEnd - removed;
+
+ // Wrap function with __rsa (register server action)
+ var funcCode = result.slice(e.funcStart, adjEnd);
+ if (e.isDecl) {
+ // async function foo() { ... } β
+ // var foo = __rsa(async function foo() { ... }, 'foo');
+ result =
+ result.slice(0, e.funcStart) +
+ 'var ' +
+ e.name +
+ ' = __rsa(' +
+ funcCode +
+ ", '" +
+ e.name +
+ "');" +
+ result.slice(adjEnd);
+ } else {
+ // expression/arrow: just wrap in __rsa(...)
+ result =
+ result.slice(0, e.funcStart) +
+ '__rsa(' +
+ funcCode +
+ ", '" +
+ e.name +
+ "')" +
+ result.slice(adjEnd);
+ }
+ }
+
+ return result;
+}
+
+// Resolve relative paths (e.g., './Counter.js' from '/src/App.js' β '/src/Counter.js')
+function resolvePath(from, to) {
+ if (!to.startsWith('.')) return to;
+ var parts = from.split('/');
+ parts.pop(); // remove filename
+ var toParts = to.split('/');
+ for (var i = 0; i < toParts.length; i++) {
+ if (toParts[i] === '.') continue;
+ if (toParts[i] === '..') {
+ parts.pop();
+ continue;
+ }
+ parts.push(toParts[i]);
+ }
+ return parts.join('/');
+}
+
+// Deploy new server code into the Worker
+// Receives raw source files β compiles them with Sucrase before execution.
+function deploy(files) {
+ serverActionsRegistry = {};
+
+ // Build a require function for the server module scope
+ var modules = {
+ react: React,
+ 'react/jsx-runtime': ReactJSXRuntime,
+ };
+
+ // Compile all files first, then execute on-demand via require.
+ // This avoids ordering issues where a file imports another that hasn't been executed yet.
+ var compiled = {};
+ var compileError = null;
+ Object.keys(files).forEach(function (filePath) {
+ if (compileError) return;
+ try {
+ compiled[filePath] = Sucrase.transform(files[filePath], {
+ transforms: ['jsx', 'imports'],
+ jsxRuntime: 'automatic',
+ production: true,
+ }).code;
+ } catch (err) {
+ compileError = filePath + ': ' + (err.message || String(err));
+ }
+ });
+
+ if (compileError) {
+ return {type: 'error', error: compileError};
+ }
+
+ // Resolve a module id relative to a requesting file
+ function resolveModuleId(from, id) {
+ if (modules[id]) return id;
+ if (id.startsWith('.')) {
+ var resolved = resolvePath(from, id);
+ if (modules[resolved] || compiled[resolved]) return resolved;
+ var exts = ['.js', '.jsx', '.ts', '.tsx'];
+ for (var ei = 0; ei < exts.length; ei++) {
+ var withExt = resolved + exts[ei];
+ if (modules[withExt] || compiled[withExt]) return withExt;
+ }
+ }
+ return id;
+ }
+
+ // Execute a module lazily and cache its exports
+ var executing = {};
+ var detectedClientFiles = {};
+
+ function executeModule(filePath) {
+ if (modules[filePath]) return modules[filePath];
+ if (!compiled[filePath]) {
+ throw new Error('Module "' + filePath + '" not found');
+ }
+ if (executing[filePath]) {
+ // Circular dependency β return partially populated exports
+ return executing[filePath].exports;
+ }
+
+ // Replicate node-register's _compile hook:
+ // detect directives BEFORE executing the module.
+ var directive = parseDirective(files[filePath]);
+
+ if (directive === 'use client') {
+ // Don't execute β return a client module proxy (same as node-register)
+ modules[filePath] = RSDWServer.createClientModuleProxy(filePath);
+ detectedClientFiles[filePath] = true;
+ return modules[filePath];
+ }
+
+ var mod = {exports: {}};
+ executing[filePath] = mod;
+
+ var localRequire = function (id) {
+ if (id.endsWith('.css')) return {};
+ var resolved = resolveModuleId(filePath, id);
+ if (modules[resolved]) return modules[resolved];
+ return executeModule(resolved);
+ };
+
+ // Transform inline 'use server' functions before execution
+ var codeToExecute = compiled[filePath];
+ if (directive !== 'use server') {
+ codeToExecute = transformInlineServerActions(codeToExecute);
+ }
+
+ new Function(
+ 'module',
+ 'exports',
+ 'require',
+ 'React',
+ '__rsa',
+ codeToExecute
+ )(mod, mod.exports, localRequire, React, function (fn, name) {
+ return registerServerReference(fn, filePath, name);
+ });
+
+ modules[filePath] = mod.exports;
+
+ if (directive === 'use server') {
+ // Execute normally, then register server references (same as node-register)
+ var exportNames = Object.keys(mod.exports);
+ for (var i = 0; i < exportNames.length; i++) {
+ var name = exportNames[i];
+ if (typeof mod.exports[name] === 'function') {
+ registerServerReference(mod.exports[name], filePath, name);
+ }
+ }
+ }
+
+ delete executing[filePath];
+ return mod.exports;
+ }
+
+ // Execute all files (order no longer matters β require triggers lazy execution)
+ var mainModule = {exports: {}};
+ Object.keys(compiled).forEach(function (filePath) {
+ executeModule(filePath);
+ if (
+ filePath === '/src/App.js' ||
+ filePath === './App.js' ||
+ filePath === './src/App.js'
+ ) {
+ mainModule.exports = modules[filePath];
+ }
+ });
+
+ deployed = {
+ module: mainModule.exports,
+ };
+
+ // Collect only client-reachable compiled code.
+ // Start from 'use client' entries and trace their require() calls.
+ var clientReachable = {};
+ function traceClientDeps(filePath) {
+ if (clientReachable[filePath]) return;
+ clientReachable[filePath] = true;
+ var code = compiled[filePath];
+ if (!code) return;
+ var requireRegex = /require\(["']([^"']+)["']\)/g;
+ var match;
+ while ((match = requireRegex.exec(code)) !== null) {
+ var dep = match[1];
+ if (
+ dep === 'react' ||
+ dep === 'react/jsx-runtime' ||
+ dep === 'react/jsx-dev-runtime' ||
+ dep.endsWith('.css')
+ )
+ continue;
+ var resolved = resolveModuleId(filePath, dep);
+ if (compiled[resolved]) {
+ traceClientDeps(resolved);
+ }
+ }
+ }
+ Object.keys(detectedClientFiles).forEach(function (filePath) {
+ traceClientDeps(filePath);
+ });
+
+ var clientCompiled = {};
+ Object.keys(clientReachable).forEach(function (filePath) {
+ clientCompiled[filePath] = compiled[filePath];
+ });
+
+ return {
+ type: 'deployed',
+ compiledClients: clientCompiled,
+ clientEntries: detectedClientFiles,
+ };
+}
+
+// Render the deployed app to a Flight stream
+function render() {
+ if (!deployed) throw new Error('No code deployed');
+ var App = deployed.module.default || deployed.module;
+ var element = React.createElement(App);
+ return RSDWServer.renderToReadableStream(element, createModuleMap(), {
+ onError: function (err) {
+ console.error('[RSC Server Error]', err);
+ return msg;
+ },
+ });
+}
+
+// Execute a server action and re-render
+function callAction(actionId, encodedArgs) {
+ if (!deployed) throw new Error('No code deployed');
+ var action = serverActionsRegistry[actionId];
+ if (!action) throw new Error('Action "' + actionId + '" not found');
+ // Reconstruct FormData from serialized entries (postMessage can't clone FormData)
+ var decoded = encodedArgs;
+ if (
+ typeof encodedArgs !== 'string' &&
+ encodedArgs &&
+ encodedArgs.__formData
+ ) {
+ decoded = new FormData();
+ for (var i = 0; i < encodedArgs.__formData.length; i++) {
+ decoded.append(
+ encodedArgs.__formData[i][0],
+ encodedArgs.__formData[i][1]
+ );
+ }
+ }
+ return Promise.resolve(RSDWServer.decodeReply(decoded)).then(function (args) {
+ var resultPromise = Promise.resolve(action.apply(null, args));
+ return resultPromise.then(function () {
+ var App = deployed.module.default || deployed.module;
+ return RSDWServer.renderToReadableStream(
+ {root: React.createElement(App), returnValue: resultPromise},
+ createModuleMap(),
+ {
+ onError: function (err) {
+ console.error('[RSC Server Error]', err);
+ return msg;
+ },
+ }
+ );
+ });
+ });
+}
+
+// Stream chunks back to the main thread via postMessage
+function sendStream(requestId, stream) {
+ var reader = stream.getReader();
+ function pump() {
+ return reader.read().then(function (result) {
+ if (result.done) {
+ self.postMessage({type: 'rsc-chunk', requestId: requestId, done: true});
+ return;
+ }
+ self.postMessage(
+ {
+ type: 'rsc-chunk',
+ requestId: requestId,
+ done: false,
+ chunk: result.value,
+ },
+ [result.value.buffer]
+ );
+ return pump();
+ });
+ }
+ pump().catch(function (err) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: requestId,
+ error: String(err),
+ });
+ });
+}
+
+// RPC message handler
+self.onmessage = function (e) {
+ var msg = e.data;
+ if (msg.type === 'deploy') {
+ try {
+ var result = deploy(msg.files);
+ if (result && result.type === 'error') {
+ self.postMessage({
+ type: 'rsc-error',
+ error: result.error,
+ });
+ } else if (result) {
+ self.postMessage({
+ type: 'deploy-result',
+ result: result,
+ });
+ }
+ } catch (err) {
+ self.postMessage({
+ type: 'rsc-error',
+ error: String(err),
+ });
+ }
+ } else if (msg.type === 'render') {
+ try {
+ var streamPromise = render();
+ Promise.resolve(streamPromise)
+ .then(function (stream) {
+ sendStream(msg.requestId, stream);
+ })
+ .catch(function (err) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: msg.requestId,
+ error: String(err),
+ });
+ });
+ } catch (err) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: msg.requestId,
+ error: String(err),
+ });
+ }
+ } else if (msg.type === 'callAction') {
+ try {
+ callAction(msg.actionId, msg.encodedArgs)
+ .then(function (stream) {
+ sendStream(msg.requestId, stream);
+ })
+ .catch(function (err) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: msg.requestId,
+ error: String(err),
+ });
+ });
+ } catch (err) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: msg.requestId,
+ error: String(err),
+ });
+ }
+ }
+};
+
+self.postMessage({type: 'ready'});
diff --git a/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/webpack-shim.js b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/webpack-shim.js
new file mode 100644
index 000000000..5573bf153
--- /dev/null
+++ b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/webpack-shim.js
@@ -0,0 +1,24 @@
+// Minimal webpack shim for RSDW compatibility.
+// Works in both browser (window) and worker (self) contexts via globalThis.
+
+var moduleCache = {};
+
+globalThis.__webpack_module_cache__ = moduleCache;
+
+globalThis.__webpack_require__ = function (moduleId) {
+ var cached = moduleCache[moduleId];
+ if (cached) return cached.exports !== undefined ? cached.exports : cached;
+ throw new Error('Module "' + moduleId + '" not found in webpack shim cache');
+};
+
+globalThis.__webpack_chunk_load__ = function () {
+ return Promise.resolve();
+};
+
+globalThis.__webpack_require__.u = function (chunkId) {
+ return chunkId;
+};
+
+globalThis.__webpack_get_script_filename__ = function (chunkId) {
+ return chunkId;
+};
diff --git a/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/worker-bundle.dist.js b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/worker-bundle.dist.js
new file mode 100644
index 000000000..e30f04935
--- /dev/null
+++ b/src/components/MDX/Sandpack/sandpack-rsc/sandbox-code/src/worker-bundle.dist.js
@@ -0,0 +1,32233 @@
+// Minimal webpack shim for RSDW compatibility.
+// Works in both browser (window) and worker (self) contexts via globalThis.
+
+var moduleCache = {};
+
+globalThis.__webpack_module_cache__ = moduleCache;
+
+globalThis.__webpack_require__ = function (moduleId) {
+ var cached = moduleCache[moduleId];
+ if (cached) return cached.exports !== undefined ? cached.exports : cached;
+ throw new Error('Module "' + moduleId + '" not found in webpack shim cache');
+};
+
+globalThis.__webpack_chunk_load__ = function () {
+ return Promise.resolve();
+};
+
+globalThis.__webpack_require__.u = function (chunkId) {
+ return chunkId;
+};
+
+globalThis.__webpack_get_script_filename__ = function (chunkId) {
+ return chunkId;
+};
+
+('use strict');
+(() => {
+ var Z = (e, t) => () => (t || e((t = {exports: {}}).exports, t), t.exports);
+ var Wc = Z((ht) => {
+ 'use strict';
+ var ei = {H: null, A: null};
+ function Yo(e) {
+ var t = 'https://react.dev/errors/' + e;
+ if (1 < arguments.length) {
+ t += '?args[]=' + encodeURIComponent(arguments[1]);
+ for (var s = 2; s < arguments.length; s++)
+ t += '&args[]=' + encodeURIComponent(arguments[s]);
+ }
+ return (
+ 'Minified React error #' +
+ e +
+ '; visit ' +
+ t +
+ ' for the full message or use the non-minified dev environment for full errors and additional helpful warnings.'
+ );
+ }
+ var jc = Array.isArray,
+ Jo = Symbol.for('react.transitional.element'),
+ Af = Symbol.for('react.portal'),
+ Pf = Symbol.for('react.fragment'),
+ Nf = Symbol.for('react.strict_mode'),
+ Rf = Symbol.for('react.profiler'),
+ Lf = Symbol.for('react.forward_ref'),
+ Of = Symbol.for('react.suspense'),
+ Df = Symbol.for('react.memo'),
+ Uc = Symbol.for('react.lazy'),
+ $c = Symbol.iterator;
+ function Mf(e) {
+ return e === null || typeof e != 'object'
+ ? null
+ : ((e = ($c && e[$c]) || e['@@iterator']),
+ typeof e == 'function' ? e : null);
+ }
+ var Hc = Object.prototype.hasOwnProperty,
+ Ff = Object.assign;
+ function Qo(e, t, s, i, r, a) {
+ return (
+ (s = a.ref),
+ {$$typeof: Jo, type: e, key: t, ref: s !== void 0 ? s : null, props: a}
+ );
+ }
+ function Bf(e, t) {
+ return Qo(e.type, t, void 0, void 0, void 0, e.props);
+ }
+ function Zo(e) {
+ return typeof e == 'object' && e !== null && e.$$typeof === Jo;
+ }
+ function Vf(e) {
+ var t = {'=': '=0', ':': '=2'};
+ return (
+ '$' +
+ e.replace(/[=:]/g, function (s) {
+ return t[s];
+ })
+ );
+ }
+ var qc = /\/+/g;
+ function zo(e, t) {
+ return typeof e == 'object' && e !== null && e.key != null
+ ? Vf('' + e.key)
+ : t.toString(36);
+ }
+ function Kc() {}
+ function jf(e) {
+ switch (e.status) {
+ case 'fulfilled':
+ return e.value;
+ case 'rejected':
+ throw e.reason;
+ default:
+ switch (
+ (typeof e.status == 'string'
+ ? e.then(Kc, Kc)
+ : ((e.status = 'pending'),
+ e.then(
+ function (t) {
+ e.status === 'pending' &&
+ ((e.status = 'fulfilled'), (e.value = t));
+ },
+ function (t) {
+ e.status === 'pending' &&
+ ((e.status = 'rejected'), (e.reason = t));
+ }
+ )),
+ e.status)
+ ) {
+ case 'fulfilled':
+ return e.value;
+ case 'rejected':
+ throw e.reason;
+ }
+ }
+ throw e;
+ }
+ function Zs(e, t, s, i, r) {
+ var a = typeof e;
+ (a === 'undefined' || a === 'boolean') && (e = null);
+ var u = !1;
+ if (e === null) u = !0;
+ else
+ switch (a) {
+ case 'bigint':
+ case 'string':
+ case 'number':
+ u = !0;
+ break;
+ case 'object':
+ switch (e.$$typeof) {
+ case Jo:
+ case Af:
+ u = !0;
+ break;
+ case Uc:
+ return (u = e._init), Zs(u(e._payload), t, s, i, r);
+ }
+ }
+ if (u)
+ return (
+ (r = r(e)),
+ (u = i === '' ? '.' + zo(e, 0) : i),
+ jc(r)
+ ? ((s = ''),
+ u != null && (s = u.replace(qc, '$&/') + '/'),
+ Zs(r, t, s, '', function (g) {
+ return g;
+ }))
+ : r != null &&
+ (Zo(r) &&
+ (r = Bf(
+ r,
+ s +
+ (r.key == null || (e && e.key === r.key)
+ ? ''
+ : ('' + r.key).replace(qc, '$&/') + '/') +
+ u
+ )),
+ t.push(r)),
+ 1
+ );
+ u = 0;
+ var d = i === '' ? '.' : i + ':';
+ if (jc(e))
+ for (var y = 0; y < e.length; y++)
+ (i = e[y]), (a = d + zo(i, y)), (u += Zs(i, t, s, a, r));
+ else if (((y = Mf(e)), typeof y == 'function'))
+ for (e = y.call(e), y = 0; !(i = e.next()).done; )
+ (i = i.value), (a = d + zo(i, y++)), (u += Zs(i, t, s, a, r));
+ else if (a === 'object') {
+ if (typeof e.then == 'function') return Zs(jf(e), t, s, i, r);
+ throw (
+ ((t = String(e)),
+ Error(
+ Yo(
+ 31,
+ t === '[object Object]'
+ ? 'object with keys {' + Object.keys(e).join(', ') + '}'
+ : t
+ )
+ ))
+ );
+ }
+ return u;
+ }
+ function _r(e, t, s) {
+ if (e == null) return e;
+ var i = [],
+ r = 0;
+ return (
+ Zs(e, i, '', '', function (a) {
+ return t.call(s, a, r++);
+ }),
+ i
+ );
+ }
+ function $f(e) {
+ if (e._status === -1) {
+ var t = e._result;
+ (t = t()),
+ t.then(
+ function (s) {
+ (e._status === 0 || e._status === -1) &&
+ ((e._status = 1), (e._result = s));
+ },
+ function (s) {
+ (e._status === 0 || e._status === -1) &&
+ ((e._status = 2), (e._result = s));
+ }
+ ),
+ e._status === -1 && ((e._status = 0), (e._result = t));
+ }
+ if (e._status === 1) return e._result.default;
+ throw e._result;
+ }
+ function qf() {
+ return new WeakMap();
+ }
+ function Xo() {
+ return {s: 0, v: void 0, o: null, p: null};
+ }
+ ht.Children = {
+ map: _r,
+ forEach: function (e, t, s) {
+ _r(
+ e,
+ function () {
+ t.apply(this, arguments);
+ },
+ s
+ );
+ },
+ count: function (e) {
+ var t = 0;
+ return (
+ _r(e, function () {
+ t++;
+ }),
+ t
+ );
+ },
+ toArray: function (e) {
+ return (
+ _r(e, function (t) {
+ return t;
+ }) || []
+ );
+ },
+ only: function (e) {
+ if (!Zo(e)) throw Error(Yo(143));
+ return e;
+ },
+ };
+ ht.Fragment = Pf;
+ ht.Profiler = Rf;
+ ht.StrictMode = Nf;
+ ht.Suspense = Of;
+ ht.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ei;
+ ht.cache = function (e) {
+ return function () {
+ var t = ei.A;
+ if (!t) return e.apply(null, arguments);
+ var s = t.getCacheForType(qf);
+ (t = s.get(e)), t === void 0 && ((t = Xo()), s.set(e, t)), (s = 0);
+ for (var i = arguments.length; s < i; s++) {
+ var r = arguments[s];
+ if (typeof r == 'function' || (typeof r == 'object' && r !== null)) {
+ var a = t.o;
+ a === null && (t.o = a = new WeakMap()),
+ (t = a.get(r)),
+ t === void 0 && ((t = Xo()), a.set(r, t));
+ } else
+ (a = t.p),
+ a === null && (t.p = a = new Map()),
+ (t = a.get(r)),
+ t === void 0 && ((t = Xo()), a.set(r, t));
+ }
+ if (t.s === 1) return t.v;
+ if (t.s === 2) throw t.v;
+ try {
+ var u = e.apply(null, arguments);
+ return (s = t), (s.s = 1), (s.v = u);
+ } catch (d) {
+ throw ((u = t), (u.s = 2), (u.v = d), d);
+ }
+ };
+ };
+ ht.cloneElement = function (e, t, s) {
+ if (e == null) throw Error(Yo(267, e));
+ var i = Ff({}, e.props),
+ r = e.key,
+ a = void 0;
+ if (t != null)
+ for (u in (t.ref !== void 0 && (a = void 0),
+ t.key !== void 0 && (r = '' + t.key),
+ t))
+ !Hc.call(t, u) ||
+ u === 'key' ||
+ u === '__self' ||
+ u === '__source' ||
+ (u === 'ref' && t.ref === void 0) ||
+ (i[u] = t[u]);
+ var u = arguments.length - 2;
+ if (u === 1) i.children = s;
+ else if (1 < u) {
+ for (var d = Array(u), y = 0; y < u; y++) d[y] = arguments[y + 2];
+ i.children = d;
+ }
+ return Qo(e.type, r, void 0, void 0, a, i);
+ };
+ ht.createElement = function (e, t, s) {
+ var i,
+ r = {},
+ a = null;
+ if (t != null)
+ for (i in (t.key !== void 0 && (a = '' + t.key), t))
+ Hc.call(t, i) &&
+ i !== 'key' &&
+ i !== '__self' &&
+ i !== '__source' &&
+ (r[i] = t[i]);
+ var u = arguments.length - 2;
+ if (u === 1) r.children = s;
+ else if (1 < u) {
+ for (var d = Array(u), y = 0; y < u; y++) d[y] = arguments[y + 2];
+ r.children = d;
+ }
+ if (e && e.defaultProps)
+ for (i in ((u = e.defaultProps), u)) r[i] === void 0 && (r[i] = u[i]);
+ return Qo(e, a, void 0, void 0, null, r);
+ };
+ ht.createRef = function () {
+ return {current: null};
+ };
+ ht.forwardRef = function (e) {
+ return {$$typeof: Lf, render: e};
+ };
+ ht.isValidElement = Zo;
+ ht.lazy = function (e) {
+ return {$$typeof: Uc, _payload: {_status: -1, _result: e}, _init: $f};
+ };
+ ht.memo = function (e, t) {
+ return {$$typeof: Df, type: e, compare: t === void 0 ? null : t};
+ };
+ ht.use = function (e) {
+ return ei.H.use(e);
+ };
+ ht.useCallback = function (e, t) {
+ return ei.H.useCallback(e, t);
+ };
+ ht.useDebugValue = function () {};
+ ht.useId = function () {
+ return ei.H.useId();
+ };
+ ht.useMemo = function (e, t) {
+ return ei.H.useMemo(e, t);
+ };
+ ht.version = '19.0.0';
+ });
+ var Li = Z((e_, Gc) => {
+ 'use strict';
+ Gc.exports = Wc();
+ });
+ var Xc = Z((Oi) => {
+ 'use strict';
+ var Kf = Li(),
+ Uf = Symbol.for('react.transitional.element'),
+ Hf = Symbol.for('react.fragment');
+ if (!Kf.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)
+ throw Error(
+ 'The "react" package in this environment is not configured correctly. The "react-server" condition must be enabled in any environment that runs React Server Components.'
+ );
+ function zc(e, t, s) {
+ var i = null;
+ if (
+ (s !== void 0 && (i = '' + s),
+ t.key !== void 0 && (i = '' + t.key),
+ 'key' in t)
+ ) {
+ s = {};
+ for (var r in t) r !== 'key' && (s[r] = t[r]);
+ } else s = t;
+ return (
+ (t = s.ref),
+ {$$typeof: Uf, type: e, key: i, ref: t !== void 0 ? t : null, props: s}
+ );
+ }
+ Oi.Fragment = Hf;
+ Oi.jsx = zc;
+ Oi.jsxDEV = void 0;
+ Oi.jsxs = zc;
+ });
+ var Jc = Z((n_, Yc) => {
+ 'use strict';
+ Yc.exports = Xc();
+ });
+ var Qc = Z((jn) => {
+ 'use strict';
+ var Wf = Li();
+ function ns() {}
+ var Sn = {
+ d: {
+ f: ns,
+ r: function () {
+ throw Error(
+ 'Invalid form element. requestFormReset must be passed a form that was rendered by React.'
+ );
+ },
+ D: ns,
+ C: ns,
+ L: ns,
+ m: ns,
+ X: ns,
+ S: ns,
+ M: ns,
+ },
+ p: 0,
+ findDOMNode: null,
+ };
+ if (!Wf.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)
+ throw Error(
+ 'The "react" package in this environment is not configured correctly. The "react-server" condition must be enabled in any environment that runs React Server Components.'
+ );
+ function br(e, t) {
+ if (e === 'font') return '';
+ if (typeof t == 'string') return t === 'use-credentials' ? t : '';
+ }
+ jn.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Sn;
+ jn.preconnect = function (e, t) {
+ typeof e == 'string' &&
+ (t
+ ? ((t = t.crossOrigin),
+ (t =
+ typeof t == 'string'
+ ? t === 'use-credentials'
+ ? t
+ : ''
+ : void 0))
+ : (t = null),
+ Sn.d.C(e, t));
+ };
+ jn.prefetchDNS = function (e) {
+ typeof e == 'string' && Sn.d.D(e);
+ };
+ jn.preinit = function (e, t) {
+ if (typeof e == 'string' && t && typeof t.as == 'string') {
+ var s = t.as,
+ i = br(s, t.crossOrigin),
+ r = typeof t.integrity == 'string' ? t.integrity : void 0,
+ a = typeof t.fetchPriority == 'string' ? t.fetchPriority : void 0;
+ s === 'style'
+ ? Sn.d.S(e, typeof t.precedence == 'string' ? t.precedence : void 0, {
+ crossOrigin: i,
+ integrity: r,
+ fetchPriority: a,
+ })
+ : s === 'script' &&
+ Sn.d.X(e, {
+ crossOrigin: i,
+ integrity: r,
+ fetchPriority: a,
+ nonce: typeof t.nonce == 'string' ? t.nonce : void 0,
+ });
+ }
+ };
+ jn.preinitModule = function (e, t) {
+ if (typeof e == 'string')
+ if (typeof t == 'object' && t !== null) {
+ if (t.as == null || t.as === 'script') {
+ var s = br(t.as, t.crossOrigin);
+ Sn.d.M(e, {
+ crossOrigin: s,
+ integrity: typeof t.integrity == 'string' ? t.integrity : void 0,
+ nonce: typeof t.nonce == 'string' ? t.nonce : void 0,
+ });
+ }
+ } else t == null && Sn.d.M(e);
+ };
+ jn.preload = function (e, t) {
+ if (
+ typeof e == 'string' &&
+ typeof t == 'object' &&
+ t !== null &&
+ typeof t.as == 'string'
+ ) {
+ var s = t.as,
+ i = br(s, t.crossOrigin);
+ Sn.d.L(e, s, {
+ crossOrigin: i,
+ integrity: typeof t.integrity == 'string' ? t.integrity : void 0,
+ nonce: typeof t.nonce == 'string' ? t.nonce : void 0,
+ type: typeof t.type == 'string' ? t.type : void 0,
+ fetchPriority:
+ typeof t.fetchPriority == 'string' ? t.fetchPriority : void 0,
+ referrerPolicy:
+ typeof t.referrerPolicy == 'string' ? t.referrerPolicy : void 0,
+ imageSrcSet:
+ typeof t.imageSrcSet == 'string' ? t.imageSrcSet : void 0,
+ imageSizes: typeof t.imageSizes == 'string' ? t.imageSizes : void 0,
+ media: typeof t.media == 'string' ? t.media : void 0,
+ });
+ }
+ };
+ jn.preloadModule = function (e, t) {
+ if (typeof e == 'string')
+ if (t) {
+ var s = br(t.as, t.crossOrigin);
+ Sn.d.m(e, {
+ as: typeof t.as == 'string' && t.as !== 'script' ? t.as : void 0,
+ crossOrigin: s,
+ integrity: typeof t.integrity == 'string' ? t.integrity : void 0,
+ });
+ } else Sn.d.m(e);
+ };
+ jn.version = '19.0.0';
+ });
+ var eu = Z((i_, Zc) => {
+ 'use strict';
+ Zc.exports = Qc();
+ });
+ var Zu = Z((En) => {
+ 'use strict';
+ var Gf = eu(),
+ zf = Li(),
+ Tu = new MessageChannel(),
+ ku = [];
+ Tu.port1.onmessage = function () {
+ var e = ku.shift();
+ e && e();
+ };
+ function Bi(e) {
+ ku.push(e), Tu.port2.postMessage(null);
+ }
+ function Xf(e) {
+ setTimeout(function () {
+ throw e;
+ });
+ }
+ var Yf = Promise,
+ vu =
+ typeof queueMicrotask == 'function'
+ ? queueMicrotask
+ : function (e) {
+ Yf.resolve(null).then(e).catch(Xf);
+ },
+ ln = null,
+ cn = 0;
+ function Cr(e, t) {
+ if (t.byteLength !== 0)
+ if (2048 < t.byteLength)
+ 0 < cn &&
+ (e.enqueue(new Uint8Array(ln.buffer, 0, cn)),
+ (ln = new Uint8Array(2048)),
+ (cn = 0)),
+ e.enqueue(t);
+ else {
+ var s = ln.length - cn;
+ s < t.byteLength &&
+ (s === 0
+ ? e.enqueue(ln)
+ : (ln.set(t.subarray(0, s), cn),
+ e.enqueue(ln),
+ (t = t.subarray(s))),
+ (ln = new Uint8Array(2048)),
+ (cn = 0)),
+ ln.set(t, cn),
+ (cn += t.byteLength);
+ }
+ return !0;
+ }
+ var Jf = new TextEncoder();
+ function pn(e) {
+ return Jf.encode(e);
+ }
+ function la(e) {
+ return e.byteLength;
+ }
+ function xu(e, t) {
+ typeof e.error == 'function' ? e.error(t) : e.close();
+ }
+ var rs = Symbol.for('react.client.reference'),
+ Ar = Symbol.for('react.server.reference');
+ function ti(e, t, s) {
+ return Object.defineProperties(e, {
+ $$typeof: {value: rs},
+ $$id: {value: t},
+ $$async: {value: s},
+ });
+ }
+ var Qf = Function.prototype.bind,
+ Zf = Array.prototype.slice;
+ function gu() {
+ var e = Qf.apply(this, arguments);
+ if (this.$$typeof === Ar) {
+ var t = Zf.call(arguments, 1),
+ s = {value: Ar},
+ i = {value: this.$$id};
+ return (
+ (t = {value: this.$$bound ? this.$$bound.concat(t) : t}),
+ Object.defineProperties(e, {
+ $$typeof: s,
+ $$id: i,
+ $$bound: t,
+ bind: {value: gu, configurable: !0},
+ })
+ );
+ }
+ return e;
+ }
+ var ed = {
+ value: function () {
+ return 'function () { [omitted code] }';
+ },
+ configurable: !0,
+ writable: !0,
+ },
+ td = Promise.prototype,
+ nd = {
+ get: function (e, t) {
+ switch (t) {
+ case '$$typeof':
+ return e.$$typeof;
+ case '$$id':
+ return e.$$id;
+ case '$$async':
+ return e.$$async;
+ case 'name':
+ return e.name;
+ case 'displayName':
+ return;
+ case 'defaultProps':
+ return;
+ case '_debugInfo':
+ return;
+ case 'toJSON':
+ return;
+ case Symbol.toPrimitive:
+ return Object.prototype[Symbol.toPrimitive];
+ case Symbol.toStringTag:
+ return Object.prototype[Symbol.toStringTag];
+ case 'Provider':
+ throw Error(
+ 'Cannot render a Client Context Provider on the Server. Instead, you can export a Client Component wrapper that itself renders a Client Context Provider.'
+ );
+ case 'then':
+ throw Error(
+ 'Cannot await or return from a thenable. You cannot await a client module from a server component.'
+ );
+ }
+ throw Error(
+ 'Cannot access ' +
+ (String(e.name) + '.' + String(t)) +
+ ' on the server. You cannot dot into a client module from a server component. You can only pass the imported name through.'
+ );
+ },
+ set: function () {
+ throw Error('Cannot assign to a client module from a server module.');
+ },
+ };
+ function tu(e, t) {
+ switch (t) {
+ case '$$typeof':
+ return e.$$typeof;
+ case '$$id':
+ return e.$$id;
+ case '$$async':
+ return e.$$async;
+ case 'name':
+ return e.name;
+ case 'defaultProps':
+ return;
+ case '_debugInfo':
+ return;
+ case 'toJSON':
+ return;
+ case Symbol.toPrimitive:
+ return Object.prototype[Symbol.toPrimitive];
+ case Symbol.toStringTag:
+ return Object.prototype[Symbol.toStringTag];
+ case '__esModule':
+ var s = e.$$id;
+ return (
+ (e.default = ti(
+ function () {
+ throw Error(
+ 'Attempted to call the default export of ' +
+ s +
+ " from the server but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."
+ );
+ },
+ e.$$id + '#',
+ e.$$async
+ )),
+ !0
+ );
+ case 'then':
+ if (e.then) return e.then;
+ if (e.$$async) return;
+ var i = ti({}, e.$$id, !0),
+ r = new Proxy(i, _u);
+ return (
+ (e.status = 'fulfilled'),
+ (e.value = r),
+ (e.then = ti(
+ function (a) {
+ return Promise.resolve(a(r));
+ },
+ e.$$id + '#then',
+ !1
+ ))
+ );
+ }
+ if (typeof t == 'symbol')
+ throw Error(
+ 'Cannot read Symbol exports. Only named exports are supported on a client module imported on the server.'
+ );
+ return (
+ (i = e[t]),
+ i ||
+ ((i = ti(
+ function () {
+ throw Error(
+ 'Attempted to call ' +
+ String(t) +
+ '() from the server but ' +
+ String(t) +
+ " is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."
+ );
+ },
+ e.$$id + '#' + t,
+ e.$$async
+ )),
+ Object.defineProperty(i, 'name', {value: t}),
+ (i = e[t] = new Proxy(i, nd))),
+ i
+ );
+ }
+ var _u = {
+ get: function (e, t) {
+ return tu(e, t);
+ },
+ getOwnPropertyDescriptor: function (e, t) {
+ var s = Object.getOwnPropertyDescriptor(e, t);
+ return (
+ s ||
+ ((s = {
+ value: tu(e, t),
+ writable: !1,
+ configurable: !1,
+ enumerable: !1,
+ }),
+ Object.defineProperty(e, t, s)),
+ s
+ );
+ },
+ getPrototypeOf: function () {
+ return td;
+ },
+ set: function () {
+ throw Error('Cannot assign to a client module from a server module.');
+ },
+ },
+ bu = Gf.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
+ qn = bu.d;
+ bu.d = {f: qn.f, r: qn.r, D: sd, C: id, L: Sr, m: Cu, X: od, S: rd, M: ad};
+ function sd(e) {
+ if (typeof e == 'string' && e) {
+ var t = st || null;
+ if (t) {
+ var s = t.hints,
+ i = 'D|' + e;
+ s.has(i) || (s.add(i), Ut(t, 'D', e));
+ } else qn.D(e);
+ }
+ }
+ function id(e, t) {
+ if (typeof e == 'string') {
+ var s = st || null;
+ if (s) {
+ var i = s.hints,
+ r = 'C|' + (t ?? 'null') + '|' + e;
+ i.has(r) ||
+ (i.add(r),
+ typeof t == 'string' ? Ut(s, 'C', [e, t]) : Ut(s, 'C', e));
+ } else qn.C(e, t);
+ }
+ }
+ function Sr(e, t, s) {
+ if (typeof e == 'string') {
+ var i = st || null;
+ if (i) {
+ var r = i.hints,
+ a = 'L';
+ if (t === 'image' && s) {
+ var u = s.imageSrcSet,
+ d = s.imageSizes,
+ y = '';
+ typeof u == 'string' && u !== ''
+ ? ((y += '[' + u + ']'),
+ typeof d == 'string' && (y += '[' + d + ']'))
+ : (y += '[][]' + e),
+ (a += '[image]' + y);
+ } else a += '[' + t + ']' + e;
+ r.has(a) ||
+ (r.add(a),
+ (s = ji(s)) ? Ut(i, 'L', [e, t, s]) : Ut(i, 'L', [e, t]));
+ } else qn.L(e, t, s);
+ }
+ }
+ function Cu(e, t) {
+ if (typeof e == 'string') {
+ var s = st || null;
+ if (s) {
+ var i = s.hints,
+ r = 'm|' + e;
+ return i.has(r)
+ ? void 0
+ : (i.add(r), (t = ji(t)) ? Ut(s, 'm', [e, t]) : Ut(s, 'm', e));
+ }
+ qn.m(e, t);
+ }
+ }
+ function rd(e, t, s) {
+ if (typeof e == 'string') {
+ var i = st || null;
+ if (i) {
+ var r = i.hints,
+ a = 'S|' + e;
+ return r.has(a)
+ ? void 0
+ : (r.add(a),
+ (s = ji(s))
+ ? Ut(i, 'S', [e, typeof t == 'string' ? t : 0, s])
+ : typeof t == 'string'
+ ? Ut(i, 'S', [e, t])
+ : Ut(i, 'S', e));
+ }
+ qn.S(e, t, s);
+ }
+ }
+ function od(e, t) {
+ if (typeof e == 'string') {
+ var s = st || null;
+ if (s) {
+ var i = s.hints,
+ r = 'X|' + e;
+ return i.has(r)
+ ? void 0
+ : (i.add(r), (t = ji(t)) ? Ut(s, 'X', [e, t]) : Ut(s, 'X', e));
+ }
+ qn.X(e, t);
+ }
+ }
+ function ad(e, t) {
+ if (typeof e == 'string') {
+ var s = st || null;
+ if (s) {
+ var i = s.hints,
+ r = 'M|' + e;
+ return i.has(r)
+ ? void 0
+ : (i.add(r), (t = ji(t)) ? Ut(s, 'M', [e, t]) : Ut(s, 'M', e));
+ }
+ qn.M(e, t);
+ }
+ }
+ function ji(e) {
+ if (e == null) return null;
+ var t = !1,
+ s = {},
+ i;
+ for (i in e) e[i] != null && ((t = !0), (s[i] = e[i]));
+ return t ? s : null;
+ }
+ function ld(e, t, s) {
+ switch (t) {
+ case 'img':
+ t = s.src;
+ var i = s.srcSet;
+ if (
+ !(
+ s.loading === 'lazy' ||
+ (!t && !i) ||
+ (typeof t != 'string' && t != null) ||
+ (typeof i != 'string' && i != null) ||
+ s.fetchPriority === 'low' ||
+ e & 3
+ ) &&
+ (typeof t != 'string' ||
+ t[4] !== ':' ||
+ (t[0] !== 'd' && t[0] !== 'D') ||
+ (t[1] !== 'a' && t[1] !== 'A') ||
+ (t[2] !== 't' && t[2] !== 'T') ||
+ (t[3] !== 'a' && t[3] !== 'A')) &&
+ (typeof i != 'string' ||
+ i[4] !== ':' ||
+ (i[0] !== 'd' && i[0] !== 'D') ||
+ (i[1] !== 'a' && i[1] !== 'A') ||
+ (i[2] !== 't' && i[2] !== 'T') ||
+ (i[3] !== 'a' && i[3] !== 'A'))
+ ) {
+ var r = typeof s.sizes == 'string' ? s.sizes : void 0,
+ a = s.crossOrigin;
+ Sr(t || '', 'image', {
+ imageSrcSet: i,
+ imageSizes: r,
+ crossOrigin:
+ typeof a == 'string'
+ ? a === 'use-credentials'
+ ? a
+ : ''
+ : void 0,
+ integrity: s.integrity,
+ type: s.type,
+ fetchPriority: s.fetchPriority,
+ referrerPolicy: s.referrerPolicy,
+ });
+ }
+ return e;
+ case 'link':
+ if (
+ ((t = s.rel),
+ (i = s.href),
+ !(
+ e & 1 ||
+ s.itemProp != null ||
+ typeof t != 'string' ||
+ typeof i != 'string' ||
+ i === ''
+ ))
+ )
+ switch (t) {
+ case 'preload':
+ Sr(i, s.as, {
+ crossOrigin: s.crossOrigin,
+ integrity: s.integrity,
+ nonce: s.nonce,
+ type: s.type,
+ fetchPriority: s.fetchPriority,
+ referrerPolicy: s.referrerPolicy,
+ imageSrcSet: s.imageSrcSet,
+ imageSizes: s.imageSizes,
+ media: s.media,
+ });
+ break;
+ case 'modulepreload':
+ Cu(i, {
+ as: s.as,
+ crossOrigin: s.crossOrigin,
+ integrity: s.integrity,
+ nonce: s.nonce,
+ });
+ break;
+ case 'stylesheet':
+ Sr(i, 'stylesheet', {
+ crossOrigin: s.crossOrigin,
+ integrity: s.integrity,
+ nonce: s.nonce,
+ type: s.type,
+ fetchPriority: s.fetchPriority,
+ referrerPolicy: s.referrerPolicy,
+ media: s.media,
+ });
+ }
+ return e;
+ case 'picture':
+ return e | 2;
+ case 'noscript':
+ return e | 1;
+ default:
+ return e;
+ }
+ }
+ var ca = Symbol.for('react.temporary.reference'),
+ cd = {
+ get: function (e, t) {
+ switch (t) {
+ case '$$typeof':
+ return e.$$typeof;
+ case 'name':
+ return;
+ case 'displayName':
+ return;
+ case 'defaultProps':
+ return;
+ case '_debugInfo':
+ return;
+ case 'toJSON':
+ return;
+ case Symbol.toPrimitive:
+ return Object.prototype[Symbol.toPrimitive];
+ case Symbol.toStringTag:
+ return Object.prototype[Symbol.toStringTag];
+ case 'Provider':
+ throw Error(
+ 'Cannot render a Client Context Provider on the Server. Instead, you can export a Client Component wrapper that itself renders a Client Context Provider.'
+ );
+ case 'then':
+ return;
+ }
+ throw Error(
+ 'Cannot access ' +
+ String(t) +
+ ' on the server. You cannot dot into a temporary client reference from a server component. You can only pass the value through to the client.'
+ );
+ },
+ set: function () {
+ throw Error(
+ 'Cannot assign to a temporary client reference from a server module.'
+ );
+ },
+ };
+ function ud(e, t) {
+ var s = Object.defineProperties(
+ function () {
+ throw Error(
+ "Attempted to call a temporary Client Reference from the server but it is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."
+ );
+ },
+ {$$typeof: {value: ca}}
+ );
+ return (s = new Proxy(s, cd)), e.set(s, t), s;
+ }
+ var pd = Symbol.for('react.element'),
+ In = Symbol.for('react.transitional.element'),
+ ua = Symbol.for('react.fragment'),
+ nu = Symbol.for('react.context'),
+ wu = Symbol.for('react.forward_ref'),
+ hd = Symbol.for('react.suspense'),
+ fd = Symbol.for('react.suspense_list'),
+ Su = Symbol.for('react.memo'),
+ $i = Symbol.for('react.lazy'),
+ dd = Symbol.for('react.memo_cache_sentinel');
+ Symbol.for('react.postpone');
+ var su = Symbol.iterator;
+ function Iu(e) {
+ return e === null || typeof e != 'object'
+ ? null
+ : ((e = (su && e[su]) || e['@@iterator']),
+ typeof e == 'function' ? e : null);
+ }
+ var Ss = Symbol.asyncIterator;
+ function Cs() {}
+ var pa = Error(
+ "Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`."
+ );
+ function md(e, t, s) {
+ switch (
+ ((s = e[s]),
+ s === void 0 ? e.push(t) : s !== t && (t.then(Cs, Cs), (t = s)),
+ t.status)
+ ) {
+ case 'fulfilled':
+ return t.value;
+ case 'rejected':
+ throw t.reason;
+ default:
+ switch (
+ (typeof t.status == 'string'
+ ? t.then(Cs, Cs)
+ : ((e = t),
+ (e.status = 'pending'),
+ e.then(
+ function (i) {
+ if (t.status === 'pending') {
+ var r = t;
+ (r.status = 'fulfilled'), (r.value = i);
+ }
+ },
+ function (i) {
+ if (t.status === 'pending') {
+ var r = t;
+ (r.status = 'rejected'), (r.reason = i);
+ }
+ }
+ )),
+ t.status)
+ ) {
+ case 'fulfilled':
+ return t.value;
+ case 'rejected':
+ throw t.reason;
+ }
+ throw ((Ir = t), pa);
+ }
+ }
+ var Ir = null;
+ function Eu() {
+ if (Ir === null)
+ throw Error(
+ 'Expected a suspended thenable. This is a bug in React. Please file an issue.'
+ );
+ var e = Ir;
+ return (Ir = null), e;
+ }
+ var Mi = null,
+ ta = 0,
+ ni = null;
+ function Au() {
+ var e = ni || [];
+ return (ni = null), e;
+ }
+ var Pu = {
+ readContext: na,
+ use: kd,
+ useCallback: function (e) {
+ return e;
+ },
+ useContext: na,
+ useEffect: Vt,
+ useImperativeHandle: Vt,
+ useLayoutEffect: Vt,
+ useInsertionEffect: Vt,
+ useMemo: function (e) {
+ return e();
+ },
+ useReducer: Vt,
+ useRef: Vt,
+ useState: Vt,
+ useDebugValue: function () {},
+ useDeferredValue: Vt,
+ useTransition: Vt,
+ useSyncExternalStore: Vt,
+ useId: Td,
+ useHostTransitionStatus: Vt,
+ useFormState: Vt,
+ useActionState: Vt,
+ useOptimistic: Vt,
+ useMemoCache: function (e) {
+ for (var t = Array(e), s = 0; s < e; s++) t[s] = dd;
+ return t;
+ },
+ useCacheRefresh: function () {
+ return yd;
+ },
+ };
+ Pu.useEffectEvent = Vt;
+ function Vt() {
+ throw Error('This Hook is not supported in Server Components.');
+ }
+ function yd() {
+ throw Error(
+ 'Refreshing the cache is not supported in Server Components.'
+ );
+ }
+ function na() {
+ throw Error('Cannot read a Client Context from a Server Component.');
+ }
+ function Td() {
+ if (Mi === null)
+ throw Error('useId can only be used while React is rendering');
+ var e = Mi.identifierCount++;
+ return '_' + Mi.identifierPrefix + 'S_' + e.toString(32) + '_';
+ }
+ function kd(e) {
+ if ((e !== null && typeof e == 'object') || typeof e == 'function') {
+ if (typeof e.then == 'function') {
+ var t = ta;
+ return (ta += 1), ni === null && (ni = []), md(ni, e, t);
+ }
+ e.$$typeof === nu && na();
+ }
+ throw e.$$typeof === rs
+ ? e.value != null && e.value.$$typeof === nu
+ ? Error('Cannot read a Client Context from a Server Component.')
+ : Error('Cannot use() an already resolved Client Reference.')
+ : Error('An unsupported type was passed to use(): ' + String(e));
+ }
+ var iu = {
+ getCacheForType: function (e) {
+ var t = (t = st || null) ? t.cache : new Map(),
+ s = t.get(e);
+ return s === void 0 && ((s = e()), t.set(e, s)), s;
+ },
+ cacheSignal: function () {
+ var e = st || null;
+ return e ? e.cacheController.signal : null;
+ },
+ },
+ Is = zf.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
+ if (!Is)
+ throw Error(
+ 'The "react" package in this environment is not configured correctly. The "react-server" condition must be enabled in any environment that runs React Server Components.'
+ );
+ var kn = Array.isArray,
+ ii = Object.getPrototypeOf;
+ function Nu(e) {
+ return (e = Object.prototype.toString.call(e)), e.slice(8, e.length - 1);
+ }
+ function ru(e) {
+ switch (typeof e) {
+ case 'string':
+ return JSON.stringify(10 >= e.length ? e : e.slice(0, 10) + '...');
+ case 'object':
+ return kn(e)
+ ? '[...]'
+ : e !== null && e.$$typeof === sa
+ ? 'client'
+ : ((e = Nu(e)), e === 'Object' ? '{...}' : e);
+ case 'function':
+ return e.$$typeof === sa
+ ? 'client'
+ : (e = e.displayName || e.name)
+ ? 'function ' + e
+ : 'function';
+ default:
+ return String(e);
+ }
+ }
+ function Er(e) {
+ if (typeof e == 'string') return e;
+ switch (e) {
+ case hd:
+ return 'Suspense';
+ case fd:
+ return 'SuspenseList';
+ }
+ if (typeof e == 'object')
+ switch (e.$$typeof) {
+ case wu:
+ return Er(e.render);
+ case Su:
+ return Er(e.type);
+ case $i:
+ var t = e._payload;
+ e = e._init;
+ try {
+ return Er(e(t));
+ } catch {}
+ }
+ return '';
+ }
+ var sa = Symbol.for('react.client.reference');
+ function _s(e, t) {
+ var s = Nu(e);
+ if (s !== 'Object' && s !== 'Array') return s;
+ s = -1;
+ var i = 0;
+ if (kn(e)) {
+ for (var r = '[', a = 0; a < e.length; a++) {
+ 0 < a && (r += ', ');
+ var u = e[a];
+ (u = typeof u == 'object' && u !== null ? _s(u) : ru(u)),
+ '' + a === t
+ ? ((s = r.length), (i = u.length), (r += u))
+ : (r =
+ 10 > u.length && 40 > r.length + u.length
+ ? r + u
+ : r + '...');
+ }
+ r += ']';
+ } else if (e.$$typeof === In) r = '<' + Er(e.type) + '/>';
+ else {
+ if (e.$$typeof === sa) return 'client';
+ for (r = '{', a = Object.keys(e), u = 0; u < a.length; u++) {
+ 0 < u && (r += ', ');
+ var d = a[u],
+ y = JSON.stringify(d);
+ (r += ('"' + d + '"' === y ? d : y) + ': '),
+ (y = e[d]),
+ (y = typeof y == 'object' && y !== null ? _s(y) : ru(y)),
+ d === t
+ ? ((s = r.length), (i = y.length), (r += y))
+ : (r =
+ 10 > y.length && 40 > r.length + y.length
+ ? r + y
+ : r + '...');
+ }
+ r += '}';
+ }
+ return t === void 0
+ ? r
+ : -1 < s && 0 < i
+ ? ((e = ' '.repeat(s) + '^'.repeat(i)),
+ `
+ ` +
+ r +
+ `
+ ` +
+ e)
+ : `
+ ` + r;
+ }
+ var Nr = Object.prototype.hasOwnProperty,
+ vd = Object.prototype,
+ Es = JSON.stringify;
+ function xd(e) {
+ console.error(e);
+ }
+ function Ru(e, t, s, i, r, a, u, d, y) {
+ if (Is.A !== null && Is.A !== iu)
+ throw Error(
+ 'Currently React only supports one RSC renderer at a time.'
+ );
+ Is.A = iu;
+ var g = new Set(),
+ L = [],
+ p = new Set();
+ (this.type = e),
+ (this.status = 10),
+ (this.flushScheduled = !1),
+ (this.destination = this.fatalError = null),
+ (this.bundlerConfig = s),
+ (this.cache = new Map()),
+ (this.cacheController = new AbortController()),
+ (this.pendingChunks = this.nextChunkId = 0),
+ (this.hints = p),
+ (this.abortableTasks = g),
+ (this.pingedTasks = L),
+ (this.completedImportChunks = []),
+ (this.completedHintChunks = []),
+ (this.completedRegularChunks = []),
+ (this.completedErrorChunks = []),
+ (this.writtenSymbols = new Map()),
+ (this.writtenClientReferences = new Map()),
+ (this.writtenServerReferences = new Map()),
+ (this.writtenObjects = new WeakMap()),
+ (this.temporaryReferences = y),
+ (this.identifierPrefix = d || ''),
+ (this.identifierCount = 1),
+ (this.taintCleanupQueue = []),
+ (this.onError = i === void 0 ? xd : i),
+ (this.onPostpone = r === void 0 ? Cs : r),
+ (this.onAllReady = a),
+ (this.onFatalError = u),
+ (e = os(this, t, null, !1, 0, g)),
+ L.push(e);
+ }
+ var st = null;
+ function ou(e, t, s) {
+ var i = os(
+ e,
+ s,
+ t.keyPath,
+ t.implicitSlot,
+ t.formatContext,
+ e.abortableTasks
+ );
+ switch (s.status) {
+ case 'fulfilled':
+ return (i.model = s.value), Vi(e, i), i.id;
+ case 'rejected':
+ return Un(e, i, s.reason), i.id;
+ default:
+ if (e.status === 12)
+ return (
+ e.abortableTasks.delete(i),
+ e.type === 21
+ ? (ri(i), oi(i, e))
+ : ((t = e.fatalError), ha(i), fa(i, e, t)),
+ i.id
+ );
+ typeof s.status != 'string' &&
+ ((s.status = 'pending'),
+ s.then(
+ function (r) {
+ s.status === 'pending' &&
+ ((s.status = 'fulfilled'), (s.value = r));
+ },
+ function (r) {
+ s.status === 'pending' &&
+ ((s.status = 'rejected'), (s.reason = r));
+ }
+ ));
+ }
+ return (
+ s.then(
+ function (r) {
+ (i.model = r), Vi(e, i);
+ },
+ function (r) {
+ i.status === 0 && (Un(e, i, r), un(e));
+ }
+ ),
+ i.id
+ );
+ }
+ function gd(e, t, s) {
+ function i(g) {
+ if (y.status === 0)
+ if (g.done)
+ (y.status = 1),
+ (g =
+ y.id.toString(16) +
+ `:C
+`),
+ e.completedRegularChunks.push(pn(g)),
+ e.abortableTasks.delete(y),
+ e.cacheController.signal.removeEventListener('abort', a),
+ un(e),
+ Or(e);
+ else
+ try {
+ (y.model = g.value),
+ e.pendingChunks++,
+ Bu(e, y),
+ un(e),
+ d.read().then(i, r);
+ } catch (L) {
+ r(L);
+ }
+ }
+ function r(g) {
+ y.status === 0 &&
+ (e.cacheController.signal.removeEventListener('abort', a),
+ Un(e, y, g),
+ un(e),
+ d.cancel(g).then(r, r));
+ }
+ function a() {
+ if (y.status === 0) {
+ var g = e.cacheController.signal;
+ g.removeEventListener('abort', a),
+ (g = g.reason),
+ e.type === 21
+ ? (e.abortableTasks.delete(y), ri(y), oi(y, e))
+ : (Un(e, y, g), un(e)),
+ d.cancel(g).then(r, r);
+ }
+ }
+ var u = s.supportsBYOB;
+ if (u === void 0)
+ try {
+ s.getReader({mode: 'byob'}).releaseLock(), (u = !0);
+ } catch {
+ u = !1;
+ }
+ var d = s.getReader(),
+ y = os(
+ e,
+ t.model,
+ t.keyPath,
+ t.implicitSlot,
+ t.formatContext,
+ e.abortableTasks
+ );
+ return (
+ e.pendingChunks++,
+ (t =
+ y.id.toString(16) +
+ ':' +
+ (u ? 'r' : 'R') +
+ `
+`),
+ e.completedRegularChunks.push(pn(t)),
+ e.cacheController.signal.addEventListener('abort', a),
+ d.read().then(i, r),
+ Ct(y.id)
+ );
+ }
+ function _d(e, t, s, i) {
+ function r(y) {
+ if (d.status === 0)
+ if (y.done) {
+ if (((d.status = 1), y.value === void 0))
+ var g =
+ d.id.toString(16) +
+ `:C
+`;
+ else
+ try {
+ var L = bs(e, y.value, 0);
+ g =
+ d.id.toString(16) +
+ ':C' +
+ Es(Ct(L)) +
+ `
+`;
+ } catch (p) {
+ a(p);
+ return;
+ }
+ e.completedRegularChunks.push(pn(g)),
+ e.abortableTasks.delete(d),
+ e.cacheController.signal.removeEventListener('abort', u),
+ un(e),
+ Or(e);
+ } else
+ try {
+ (d.model = y.value),
+ e.pendingChunks++,
+ Bu(e, d),
+ un(e),
+ i.next().then(r, a);
+ } catch (p) {
+ a(p);
+ }
+ }
+ function a(y) {
+ d.status === 0 &&
+ (e.cacheController.signal.removeEventListener('abort', u),
+ Un(e, d, y),
+ un(e),
+ typeof i.throw == 'function' && i.throw(y).then(a, a));
+ }
+ function u() {
+ if (d.status === 0) {
+ var y = e.cacheController.signal;
+ y.removeEventListener('abort', u);
+ var g = y.reason;
+ e.type === 21
+ ? (e.abortableTasks.delete(d), ri(d), oi(d, e))
+ : (Un(e, d, y.reason), un(e)),
+ typeof i.throw == 'function' && i.throw(g).then(a, a);
+ }
+ }
+ s = s === i;
+ var d = os(
+ e,
+ t.model,
+ t.keyPath,
+ t.implicitSlot,
+ t.formatContext,
+ e.abortableTasks
+ );
+ return (
+ e.pendingChunks++,
+ (t =
+ d.id.toString(16) +
+ ':' +
+ (s ? 'x' : 'X') +
+ `
+`),
+ e.completedRegularChunks.push(pn(t)),
+ e.cacheController.signal.addEventListener('abort', u),
+ i.next().then(r, a),
+ Ct(d.id)
+ );
+ }
+ function Ut(e, t, s) {
+ (s = Es(s)),
+ (t = pn(
+ ':H' +
+ t +
+ s +
+ `
+`
+ )),
+ e.completedHintChunks.push(t),
+ un(e);
+ }
+ function bd(e) {
+ if (e.status === 'fulfilled') return e.value;
+ throw e.status === 'rejected' ? e.reason : e;
+ }
+ function Cd(e, t, s) {
+ switch (s.status) {
+ case 'fulfilled':
+ return s.value;
+ case 'rejected':
+ break;
+ default:
+ typeof s.status != 'string' &&
+ ((s.status = 'pending'),
+ s.then(
+ function (i) {
+ s.status === 'pending' &&
+ ((s.status = 'fulfilled'), (s.value = i));
+ },
+ function (i) {
+ s.status === 'pending' &&
+ ((s.status = 'rejected'), (s.reason = i));
+ }
+ ));
+ }
+ return {$$typeof: $i, _payload: s, _init: bd};
+ }
+ function au() {}
+ function wd(e, t, s, i) {
+ if (typeof i != 'object' || i === null || i.$$typeof === rs) return i;
+ if (typeof i.then == 'function') return Cd(e, t, i);
+ var r = Iu(i);
+ return r
+ ? ((e = {}),
+ (e[Symbol.iterator] = function () {
+ return r.call(i);
+ }),
+ e)
+ : typeof i[Ss] != 'function' ||
+ (typeof ReadableStream == 'function' && i instanceof ReadableStream)
+ ? i
+ : ((e = {}),
+ (e[Ss] = function () {
+ return i[Ss]();
+ }),
+ e);
+ }
+ function lu(e, t, s, i, r) {
+ var a = t.thenableState;
+ if (
+ ((t.thenableState = null),
+ (ta = 0),
+ (ni = a),
+ (r = i(r, void 0)),
+ e.status === 12)
+ )
+ throw (
+ (typeof r == 'object' &&
+ r !== null &&
+ typeof r.then == 'function' &&
+ r.$$typeof !== rs &&
+ r.then(au, au),
+ null)
+ );
+ return (
+ (r = wd(e, t, i, r)),
+ (i = t.keyPath),
+ (a = t.implicitSlot),
+ s !== null
+ ? (t.keyPath = i === null ? s : i + ',' + s)
+ : i === null && (t.implicitSlot = !0),
+ (e = qi(e, t, Lr, '', r)),
+ (t.keyPath = i),
+ (t.implicitSlot = a),
+ e
+ );
+ }
+ function cu(e, t, s) {
+ return t.keyPath !== null
+ ? ((e = [In, ua, t.keyPath, {children: s}]), t.implicitSlot ? [e] : e)
+ : s;
+ }
+ var is = 0;
+ function uu(e, t) {
+ return (
+ (t = os(
+ e,
+ t.model,
+ t.keyPath,
+ t.implicitSlot,
+ t.formatContext,
+ e.abortableTasks
+ )),
+ Vi(e, t),
+ ws(t.id)
+ );
+ }
+ function ia(e, t, s, i, r, a) {
+ if (r != null)
+ throw Error(
+ 'Refs cannot be used in Server Components, nor passed to Client Components.'
+ );
+ if (typeof s == 'function' && s.$$typeof !== rs && s.$$typeof !== ca)
+ return lu(e, t, i, s, a);
+ if (s === ua && i === null)
+ return (
+ (s = t.implicitSlot),
+ t.keyPath === null && (t.implicitSlot = !0),
+ (a = qi(e, t, Lr, '', a.children)),
+ (t.implicitSlot = s),
+ a
+ );
+ if (s != null && typeof s == 'object' && s.$$typeof !== rs)
+ switch (s.$$typeof) {
+ case $i:
+ var u = s._init;
+ if (((s = u(s._payload)), e.status === 12)) throw null;
+ return ia(e, t, s, i, r, a);
+ case wu:
+ return lu(e, t, i, s.render, a);
+ case Su:
+ return ia(e, t, s.type, i, r, a);
+ }
+ else
+ typeof s == 'string' &&
+ ((r = t.formatContext),
+ (u = ld(r, s, a)),
+ r !== u && a.children != null && bs(e, a.children, u));
+ return (
+ (e = i),
+ (i = t.keyPath),
+ e === null ? (e = i) : i !== null && (e = i + ',' + e),
+ (a = [In, s, e, a]),
+ (t = t.implicitSlot && e !== null ? [a] : a),
+ t
+ );
+ }
+ function Vi(e, t) {
+ var s = e.pingedTasks;
+ s.push(t),
+ s.length === 1 &&
+ ((e.flushScheduled = e.destination !== null),
+ e.type === 21 || e.status === 10
+ ? vu(function () {
+ return ra(e);
+ })
+ : Bi(function () {
+ return ra(e);
+ }));
+ }
+ function os(e, t, s, i, r, a) {
+ e.pendingChunks++;
+ var u = e.nextChunkId++;
+ typeof t != 'object' ||
+ t === null ||
+ s !== null ||
+ i ||
+ e.writtenObjects.set(t, Ct(u));
+ var d = {
+ id: u,
+ status: 0,
+ model: t,
+ keyPath: s,
+ implicitSlot: i,
+ formatContext: r,
+ ping: function () {
+ return Vi(e, d);
+ },
+ toJSON: function (y, g) {
+ is += y.length;
+ var L = d.keyPath,
+ p = d.implicitSlot;
+ try {
+ var h = qi(e, d, this, y, g);
+ } catch (x) {
+ if (
+ ((y = d.model),
+ (y =
+ typeof y == 'object' &&
+ y !== null &&
+ (y.$$typeof === In || y.$$typeof === $i)),
+ e.status === 12)
+ )
+ (d.status = 3),
+ e.type === 21
+ ? ((L = e.nextChunkId++), (L = y ? ws(L) : Ct(L)), (h = L))
+ : ((L = e.fatalError), (h = y ? ws(L) : Ct(L)));
+ else if (
+ ((g = x === pa ? Eu() : x),
+ typeof g == 'object' && g !== null && typeof g.then == 'function')
+ ) {
+ h = os(
+ e,
+ d.model,
+ d.keyPath,
+ d.implicitSlot,
+ d.formatContext,
+ e.abortableTasks
+ );
+ var T = h.ping;
+ g.then(T, T),
+ (h.thenableState = Au()),
+ (d.keyPath = L),
+ (d.implicitSlot = p),
+ (h = y ? ws(h.id) : Ct(h.id));
+ } else
+ (d.keyPath = L),
+ (d.implicitSlot = p),
+ e.pendingChunks++,
+ (L = e.nextChunkId++),
+ (p = Kn(e, g, d)),
+ Rr(e, L, p),
+ (h = y ? ws(L) : Ct(L));
+ }
+ return h;
+ },
+ thenableState: null,
+ };
+ return a.add(d), d;
+ }
+ function Ct(e) {
+ return '$' + e.toString(16);
+ }
+ function ws(e) {
+ return '$L' + e.toString(16);
+ }
+ function Lu(e, t, s) {
+ return (
+ (e = Es(s)),
+ (t =
+ t.toString(16) +
+ ':' +
+ e +
+ `
+`),
+ pn(t)
+ );
+ }
+ function pu(e, t, s, i) {
+ var r = i.$$async ? i.$$id + '#async' : i.$$id,
+ a = e.writtenClientReferences,
+ u = a.get(r);
+ if (u !== void 0) return t[0] === In && s === '1' ? ws(u) : Ct(u);
+ try {
+ var d = e.bundlerConfig,
+ y = i.$$id;
+ u = '';
+ var g = d[y];
+ if (g) u = g.name;
+ else {
+ var L = y.lastIndexOf('#');
+ if ((L !== -1 && ((u = y.slice(L + 1)), (g = d[y.slice(0, L)])), !g))
+ throw Error(
+ 'Could not find the module "' +
+ y +
+ '" in the React Client Manifest. This is probably a bug in the React Server Components bundler.'
+ );
+ }
+ if (g.async === !0 && i.$$async === !0)
+ throw Error(
+ 'The module "' +
+ y +
+ '" is marked as an async ESM module but was loaded as a CJS proxy. This is probably a bug in the React Server Components bundler.'
+ );
+ var p =
+ g.async === !0 || i.$$async === !0
+ ? [g.id, g.chunks, u, 1]
+ : [g.id, g.chunks, u];
+ e.pendingChunks++;
+ var h = e.nextChunkId++,
+ T = Es(p),
+ x =
+ h.toString(16) +
+ ':I' +
+ T +
+ `
+`,
+ w = pn(x);
+ return (
+ e.completedImportChunks.push(w),
+ a.set(r, h),
+ t[0] === In && s === '1' ? ws(h) : Ct(h)
+ );
+ } catch (S) {
+ return (
+ e.pendingChunks++,
+ (t = e.nextChunkId++),
+ (s = Kn(e, S, null)),
+ Rr(e, t, s),
+ Ct(t)
+ );
+ }
+ }
+ function bs(e, t, s) {
+ return (t = os(e, t, null, !1, s, e.abortableTasks)), Fu(e, t), t.id;
+ }
+ function Yt(e, t, s) {
+ e.pendingChunks++;
+ var i = e.nextChunkId++;
+ return Kt(e, i, t, s, !1), Ct(i);
+ }
+ function Sd(e, t) {
+ function s(y) {
+ if (u.status === 0)
+ if (y.done)
+ e.cacheController.signal.removeEventListener('abort', r), Vi(e, u);
+ else return a.push(y.value), d.read().then(s).catch(i);
+ }
+ function i(y) {
+ u.status === 0 &&
+ (e.cacheController.signal.removeEventListener('abort', r),
+ Un(e, u, y),
+ un(e),
+ d.cancel(y).then(i, i));
+ }
+ function r() {
+ if (u.status === 0) {
+ var y = e.cacheController.signal;
+ y.removeEventListener('abort', r),
+ (y = y.reason),
+ e.type === 21
+ ? (e.abortableTasks.delete(u), ri(u), oi(u, e))
+ : (Un(e, u, y), un(e)),
+ d.cancel(y).then(i, i);
+ }
+ }
+ var a = [t.type],
+ u = os(e, a, null, !1, 0, e.abortableTasks),
+ d = t.stream().getReader();
+ return (
+ e.cacheController.signal.addEventListener('abort', r),
+ d.read().then(s).catch(i),
+ '$B' + u.id.toString(16)
+ );
+ }
+ var ss = !1;
+ function qi(e, t, s, i, r) {
+ if (((t.model = r), r === In)) return '$';
+ if (r === null) return null;
+ if (typeof r == 'object') {
+ switch (r.$$typeof) {
+ case In:
+ var a = null,
+ u = e.writtenObjects;
+ if (t.keyPath === null && !t.implicitSlot) {
+ var d = u.get(r);
+ if (d !== void 0)
+ if (ss === r) ss = null;
+ else return d;
+ else
+ i.indexOf(':') === -1 &&
+ ((s = u.get(s)),
+ s !== void 0 && ((a = s + ':' + i), u.set(r, a)));
+ }
+ return 3200 < is
+ ? uu(e, t)
+ : ((i = r.props),
+ (s = i.ref),
+ (e = ia(e, t, r.type, r.key, s !== void 0 ? s : null, i)),
+ typeof e == 'object' &&
+ e !== null &&
+ a !== null &&
+ (u.has(e) || u.set(e, a)),
+ e);
+ case $i:
+ if (3200 < is) return uu(e, t);
+ if (
+ ((t.thenableState = null),
+ (i = r._init),
+ (r = i(r._payload)),
+ e.status === 12)
+ )
+ throw null;
+ return qi(e, t, Lr, '', r);
+ case pd:
+ throw Error(`A React Element from an older version of React was rendered. This is not supported. It can happen if:
+- Multiple copies of the "react" package is used.
+- A library pre-bundled an old copy of "react" or "react/jsx-runtime".
+- A compiler tries to "inline" JSX instead of using the runtime.`);
+ }
+ if (r.$$typeof === rs) return pu(e, s, i, r);
+ if (
+ e.temporaryReferences !== void 0 &&
+ ((a = e.temporaryReferences.get(r)), a !== void 0)
+ )
+ return '$T' + a;
+ if (
+ ((a = e.writtenObjects), (u = a.get(r)), typeof r.then == 'function')
+ ) {
+ if (u !== void 0) {
+ if (t.keyPath !== null || t.implicitSlot)
+ return '$@' + ou(e, t, r).toString(16);
+ if (ss === r) ss = null;
+ else return u;
+ }
+ return (e = '$@' + ou(e, t, r).toString(16)), a.set(r, e), e;
+ }
+ if (u !== void 0)
+ if (ss === r) {
+ if (u !== Ct(t.id)) return u;
+ ss = null;
+ } else return u;
+ else if (i.indexOf(':') === -1 && ((u = a.get(s)), u !== void 0)) {
+ if (((d = i), kn(s) && s[0] === In))
+ switch (i) {
+ case '1':
+ d = 'type';
+ break;
+ case '2':
+ d = 'key';
+ break;
+ case '3':
+ d = 'props';
+ break;
+ case '4':
+ d = '_owner';
+ }
+ a.set(r, u + ':' + d);
+ }
+ if (kn(r)) return cu(e, t, r);
+ if (r instanceof Map)
+ return (r = Array.from(r)), '$Q' + bs(e, r, 0).toString(16);
+ if (r instanceof Set)
+ return (r = Array.from(r)), '$W' + bs(e, r, 0).toString(16);
+ if (typeof FormData == 'function' && r instanceof FormData)
+ return (r = Array.from(r.entries())), '$K' + bs(e, r, 0).toString(16);
+ if (r instanceof Error) return '$Z';
+ if (r instanceof ArrayBuffer) return Yt(e, 'A', new Uint8Array(r));
+ if (r instanceof Int8Array) return Yt(e, 'O', r);
+ if (r instanceof Uint8Array) return Yt(e, 'o', r);
+ if (r instanceof Uint8ClampedArray) return Yt(e, 'U', r);
+ if (r instanceof Int16Array) return Yt(e, 'S', r);
+ if (r instanceof Uint16Array) return Yt(e, 's', r);
+ if (r instanceof Int32Array) return Yt(e, 'L', r);
+ if (r instanceof Uint32Array) return Yt(e, 'l', r);
+ if (r instanceof Float32Array) return Yt(e, 'G', r);
+ if (r instanceof Float64Array) return Yt(e, 'g', r);
+ if (r instanceof BigInt64Array) return Yt(e, 'M', r);
+ if (r instanceof BigUint64Array) return Yt(e, 'm', r);
+ if (r instanceof DataView) return Yt(e, 'V', r);
+ if (typeof Blob == 'function' && r instanceof Blob) return Sd(e, r);
+ if ((a = Iu(r)))
+ return (
+ (i = a.call(r)),
+ i === r
+ ? ((r = Array.from(i)), '$i' + bs(e, r, 0).toString(16))
+ : cu(e, t, Array.from(i))
+ );
+ if (typeof ReadableStream == 'function' && r instanceof ReadableStream)
+ return gd(e, t, r);
+ if (((a = r[Ss]), typeof a == 'function'))
+ return (
+ t.keyPath !== null
+ ? ((e = [In, ua, t.keyPath, {children: r}]),
+ (e = t.implicitSlot ? [e] : e))
+ : ((i = a.call(r)), (e = _d(e, t, r, i))),
+ e
+ );
+ if (r instanceof Date) return '$D' + r.toJSON();
+ if (((e = ii(r)), e !== vd && (e === null || ii(e) !== null)))
+ throw Error(
+ 'Only plain objects, and a few built-ins, can be passed to Client Components from Server Components. Classes or null prototypes are not supported.' +
+ _s(s, i)
+ );
+ return r;
+ }
+ if (typeof r == 'string')
+ return (
+ (is += r.length),
+ r[r.length - 1] === 'Z' && s[i] instanceof Date
+ ? '$D' + r
+ : 1024 <= r.length && la !== null
+ ? (e.pendingChunks++, (t = e.nextChunkId++), Du(e, t, r, !1), Ct(t))
+ : ((e = r[0] === '$' ? '$' + r : r), e)
+ );
+ if (typeof r == 'boolean') return r;
+ if (typeof r == 'number')
+ return Number.isFinite(r)
+ ? r === 0 && 1 / r === -1 / 0
+ ? '$-0'
+ : r
+ : r === 1 / 0
+ ? '$Infinity'
+ : r === -1 / 0
+ ? '$-Infinity'
+ : '$NaN';
+ if (typeof r > 'u') return '$undefined';
+ if (typeof r == 'function') {
+ if (r.$$typeof === rs) return pu(e, s, i, r);
+ if (r.$$typeof === Ar)
+ return (
+ (t = e.writtenServerReferences),
+ (i = t.get(r)),
+ i !== void 0
+ ? (e = '$h' + i.toString(16))
+ : ((i = r.$$bound),
+ (i = i === null ? null : Promise.resolve(i)),
+ (e = bs(e, {id: r.$$id, bound: i}, 0)),
+ t.set(r, e),
+ (e = '$h' + e.toString(16))),
+ e
+ );
+ if (
+ e.temporaryReferences !== void 0 &&
+ ((e = e.temporaryReferences.get(r)), e !== void 0)
+ )
+ return '$T' + e;
+ throw r.$$typeof === ca
+ ? Error(
+ 'Could not reference an opaque temporary reference. This is likely due to misconfiguring the temporaryReferences options on the server.'
+ )
+ : /^on[A-Z]/.test(i)
+ ? Error(
+ 'Event handlers cannot be passed to Client Component props.' +
+ _s(s, i) +
+ `
+If you need interactivity, consider converting part of this to a Client Component.`
+ )
+ : Error(
+ 'Functions cannot be passed directly to Client Components unless you explicitly expose it by marking it with "use server". Or maybe you meant to call this function rather than return it.' +
+ _s(s, i)
+ );
+ }
+ if (typeof r == 'symbol') {
+ if (((t = e.writtenSymbols), (a = t.get(r)), a !== void 0))
+ return Ct(a);
+ if (((a = r.description), Symbol.for(a) !== r))
+ throw Error(
+ 'Only global symbols received from Symbol.for(...) can be passed to Client Components. The symbol Symbol.for(' +
+ (r.description + ') cannot be found among global symbols.') +
+ _s(s, i)
+ );
+ return (
+ e.pendingChunks++,
+ (i = e.nextChunkId++),
+ (s = Lu(e, i, '$S' + a)),
+ e.completedImportChunks.push(s),
+ t.set(r, i),
+ Ct(i)
+ );
+ }
+ if (typeof r == 'bigint') return '$n' + r.toString(10);
+ throw Error(
+ 'Type ' +
+ typeof r +
+ ' is not supported in Client Component props.' +
+ _s(s, i)
+ );
+ }
+ function Kn(e, t) {
+ var s = st;
+ st = null;
+ try {
+ var i = e.onError,
+ r = i(t);
+ } finally {
+ st = s;
+ }
+ if (r != null && typeof r != 'string')
+ throw Error(
+ 'onError returned something with a type other than "string". onError should return a string and may return null or undefined but must not return anything else. It received something of type "' +
+ typeof r +
+ '" instead'
+ );
+ return r || '';
+ }
+ function Ki(e, t) {
+ var s = e.onFatalError;
+ s(t),
+ e.destination !== null
+ ? ((e.status = 14), xu(e.destination, t))
+ : ((e.status = 13), (e.fatalError = t)),
+ e.cacheController.abort(
+ Error('The render was aborted due to a fatal error.', {cause: t})
+ );
+ }
+ function Rr(e, t, s) {
+ (s = {digest: s}),
+ (t =
+ t.toString(16) +
+ ':E' +
+ Es(s) +
+ `
+`),
+ (t = pn(t)),
+ e.completedErrorChunks.push(t);
+ }
+ function Ou(e, t, s) {
+ (t =
+ t.toString(16) +
+ ':' +
+ s +
+ `
+`),
+ (t = pn(t)),
+ e.completedRegularChunks.push(t);
+ }
+ function Kt(e, t, s, i, r) {
+ r ? e.pendingDebugChunks++ : e.pendingChunks++,
+ (r = new Uint8Array(i.buffer, i.byteOffset, i.byteLength)),
+ (i = 2048 < i.byteLength ? r.slice() : r),
+ (r = i.byteLength),
+ (t = t.toString(16) + ':' + s + r.toString(16) + ','),
+ (t = pn(t)),
+ e.completedRegularChunks.push(t, i);
+ }
+ function Du(e, t, s, i) {
+ if (la === null)
+ throw Error(
+ 'Existence of byteLengthOfChunk should have already been checked. This is a bug in React.'
+ );
+ i ? e.pendingDebugChunks++ : e.pendingChunks++,
+ (s = pn(s)),
+ (i = s.byteLength),
+ (t = t.toString(16) + ':T' + i.toString(16) + ','),
+ (t = pn(t)),
+ e.completedRegularChunks.push(t, s);
+ }
+ function Mu(e, t, s) {
+ var i = t.id;
+ typeof s == 'string' && la !== null
+ ? Du(e, i, s, !1)
+ : s instanceof ArrayBuffer
+ ? Kt(e, i, 'A', new Uint8Array(s), !1)
+ : s instanceof Int8Array
+ ? Kt(e, i, 'O', s, !1)
+ : s instanceof Uint8Array
+ ? Kt(e, i, 'o', s, !1)
+ : s instanceof Uint8ClampedArray
+ ? Kt(e, i, 'U', s, !1)
+ : s instanceof Int16Array
+ ? Kt(e, i, 'S', s, !1)
+ : s instanceof Uint16Array
+ ? Kt(e, i, 's', s, !1)
+ : s instanceof Int32Array
+ ? Kt(e, i, 'L', s, !1)
+ : s instanceof Uint32Array
+ ? Kt(e, i, 'l', s, !1)
+ : s instanceof Float32Array
+ ? Kt(e, i, 'G', s, !1)
+ : s instanceof Float64Array
+ ? Kt(e, i, 'g', s, !1)
+ : s instanceof BigInt64Array
+ ? Kt(e, i, 'M', s, !1)
+ : s instanceof BigUint64Array
+ ? Kt(e, i, 'm', s, !1)
+ : s instanceof DataView
+ ? Kt(e, i, 'V', s, !1)
+ : ((s = Es(s, t.toJSON)), Ou(e, t.id, s));
+ }
+ function Un(e, t, s) {
+ (t.status = 4),
+ (s = Kn(e, s, t)),
+ Rr(e, t.id, s),
+ e.abortableTasks.delete(t),
+ Or(e);
+ }
+ var Lr = {};
+ function Fu(e, t) {
+ if (t.status === 0) {
+ t.status = 5;
+ var s = is;
+ try {
+ ss = t.model;
+ var i = qi(e, t, Lr, '', t.model);
+ if (
+ ((ss = i),
+ (t.keyPath = null),
+ (t.implicitSlot = !1),
+ typeof i == 'object' && i !== null)
+ )
+ e.writtenObjects.set(i, Ct(t.id)), Mu(e, t, i);
+ else {
+ var r = Es(i);
+ Ou(e, t.id, r);
+ }
+ (t.status = 1), e.abortableTasks.delete(t), Or(e);
+ } catch (y) {
+ if (e.status === 12)
+ if ((e.abortableTasks.delete(t), (t.status = 0), e.type === 21))
+ ri(t), oi(t, e);
+ else {
+ var a = e.fatalError;
+ ha(t), fa(t, e, a);
+ }
+ else {
+ var u = y === pa ? Eu() : y;
+ if (
+ typeof u == 'object' &&
+ u !== null &&
+ typeof u.then == 'function'
+ ) {
+ (t.status = 0), (t.thenableState = Au());
+ var d = t.ping;
+ u.then(d, d);
+ } else Un(e, t, u);
+ }
+ } finally {
+ is = s;
+ }
+ }
+ }
+ function Bu(e, t) {
+ var s = is;
+ try {
+ Mu(e, t, t.model);
+ } finally {
+ is = s;
+ }
+ }
+ function ra(e) {
+ var t = Is.H;
+ Is.H = Pu;
+ var s = st;
+ Mi = st = e;
+ try {
+ var i = e.pingedTasks;
+ e.pingedTasks = [];
+ for (var r = 0; r < i.length; r++) Fu(e, i[r]);
+ ai(e);
+ } catch (a) {
+ Kn(e, a, null), Ki(e, a);
+ } finally {
+ (Is.H = t), (Mi = null), (st = s);
+ }
+ }
+ function ha(e) {
+ e.status === 0 && (e.status = 3);
+ }
+ function fa(e, t, s) {
+ e.status === 3 &&
+ ((s = Ct(s)), (e = Lu(t, e.id, s)), t.completedErrorChunks.push(e));
+ }
+ function ri(e) {
+ e.status === 0 && (e.status = 3);
+ }
+ function oi(e, t) {
+ e.status === 3 && t.pendingChunks--;
+ }
+ function ai(e) {
+ var t = e.destination;
+ if (t !== null) {
+ (ln = new Uint8Array(2048)), (cn = 0);
+ try {
+ for (var s = e.completedImportChunks, i = 0; i < s.length; i++)
+ e.pendingChunks--, Cr(t, s[i]);
+ s.splice(0, i);
+ var r = e.completedHintChunks;
+ for (i = 0; i < r.length; i++) Cr(t, r[i]);
+ r.splice(0, i);
+ var a = e.completedRegularChunks;
+ for (i = 0; i < a.length; i++) e.pendingChunks--, Cr(t, a[i]);
+ a.splice(0, i);
+ var u = e.completedErrorChunks;
+ for (i = 0; i < u.length; i++) e.pendingChunks--, Cr(t, u[i]);
+ u.splice(0, i);
+ } finally {
+ (e.flushScheduled = !1),
+ ln &&
+ 0 < cn &&
+ (t.enqueue(new Uint8Array(ln.buffer, 0, cn)),
+ (ln = null),
+ (cn = 0));
+ }
+ }
+ e.pendingChunks === 0 &&
+ (12 > e.status &&
+ e.cacheController.abort(
+ Error(
+ 'This render completed successfully. All cacheSignals are now aborted to allow clean up of any unused resources.'
+ )
+ ),
+ e.destination !== null &&
+ ((e.status = 14), e.destination.close(), (e.destination = null)));
+ }
+ function Vu(e) {
+ (e.flushScheduled = e.destination !== null),
+ vu(function () {
+ return ra(e);
+ }),
+ Bi(function () {
+ e.status === 10 && (e.status = 11);
+ });
+ }
+ function un(e) {
+ e.flushScheduled === !1 &&
+ e.pingedTasks.length === 0 &&
+ e.destination !== null &&
+ ((e.flushScheduled = !0),
+ Bi(function () {
+ (e.flushScheduled = !1), ai(e);
+ }));
+ }
+ function Or(e) {
+ e.abortableTasks.size === 0 && ((e = e.onAllReady), e());
+ }
+ function ju(e, t) {
+ if (e.status === 13) (e.status = 14), xu(t, e.fatalError);
+ else if (e.status !== 14 && e.destination === null) {
+ e.destination = t;
+ try {
+ ai(e);
+ } catch (s) {
+ Kn(e, s, null), Ki(e, s);
+ }
+ }
+ }
+ function Id(e, t) {
+ try {
+ t.forEach(function (i) {
+ return oi(i, e);
+ });
+ var s = e.onAllReady;
+ s(), ai(e);
+ } catch (i) {
+ Kn(e, i, null), Ki(e, i);
+ }
+ }
+ function Ed(e, t, s) {
+ try {
+ t.forEach(function (r) {
+ return fa(r, e, s);
+ });
+ var i = e.onAllReady;
+ i(), ai(e);
+ } catch (r) {
+ Kn(e, r, null), Ki(e, r);
+ }
+ }
+ function si(e, t) {
+ if (!(11 < e.status))
+ try {
+ (e.status = 12), e.cacheController.abort(t);
+ var s = e.abortableTasks;
+ if (0 < s.size)
+ if (e.type === 21)
+ s.forEach(function (d) {
+ return ri(d, e);
+ }),
+ Bi(function () {
+ return Id(e, s);
+ });
+ else {
+ var i =
+ t === void 0
+ ? Error(
+ 'The render was aborted by the server without a reason.'
+ )
+ : typeof t == 'object' &&
+ t !== null &&
+ typeof t.then == 'function'
+ ? Error(
+ 'The render was aborted by the server with a promise.'
+ )
+ : t,
+ r = Kn(e, i, null),
+ a = e.nextChunkId++;
+ (e.fatalError = a),
+ e.pendingChunks++,
+ Rr(e, a, r, i, !1, null),
+ s.forEach(function (d) {
+ return ha(d, e, a);
+ }),
+ Bi(function () {
+ return Ed(e, s, a);
+ });
+ }
+ else {
+ var u = e.onAllReady;
+ u(), ai(e);
+ }
+ } catch (d) {
+ Kn(e, d, null), Ki(e, d);
+ }
+ }
+ function $u(e, t) {
+ var s = '',
+ i = e[t];
+ if (i) s = i.name;
+ else {
+ var r = t.lastIndexOf('#');
+ if ((r !== -1 && ((s = t.slice(r + 1)), (i = e[t.slice(0, r)])), !i))
+ throw Error(
+ 'Could not find the module "' +
+ t +
+ '" in the React Server Manifest. This is probably a bug in the React Server Components bundler.'
+ );
+ }
+ return i.async ? [i.id, i.chunks, s, 1] : [i.id, i.chunks, s];
+ }
+ var wr = new Map();
+ function hu(e) {
+ var t = __webpack_require__(e);
+ return typeof t.then != 'function' || t.status === 'fulfilled'
+ ? null
+ : (t.then(
+ function (s) {
+ (t.status = 'fulfilled'), (t.value = s);
+ },
+ function (s) {
+ (t.status = 'rejected'), (t.reason = s);
+ }
+ ),
+ t);
+ }
+ function Ad() {}
+ function qu(e) {
+ for (var t = e[1], s = [], i = 0; i < t.length; ) {
+ var r = t[i++],
+ a = t[i++],
+ u = wr.get(r);
+ u === void 0
+ ? (Ku.set(r, a),
+ (a = __webpack_chunk_load__(r)),
+ s.push(a),
+ (u = wr.set.bind(wr, r, null)),
+ a.then(u, Ad),
+ wr.set(r, a))
+ : u !== null && s.push(u);
+ }
+ return e.length === 4
+ ? s.length === 0
+ ? hu(e[0])
+ : Promise.all(s).then(function () {
+ return hu(e[0]);
+ })
+ : 0 < s.length
+ ? Promise.all(s)
+ : null;
+ }
+ function Fi(e) {
+ var t = __webpack_require__(e[0]);
+ if (e.length === 4 && typeof t.then == 'function')
+ if (t.status === 'fulfilled') t = t.value;
+ else throw t.reason;
+ if (e[2] === '*') return t;
+ if (e[2] === '') return t.__esModule ? t.default : t;
+ if (Nr.call(t, e[2])) return t[e[2]];
+ }
+ var Ku = new Map(),
+ Pd = __webpack_require__.u;
+ __webpack_require__.u = function (e) {
+ var t = Ku.get(e);
+ return t !== void 0 ? t : Pd(e);
+ };
+ var Dr = Symbol();
+ function Ot(e, t, s) {
+ (this.status = e), (this.value = t), (this.reason = s);
+ }
+ Ot.prototype = Object.create(Promise.prototype);
+ Ot.prototype.then = function (e, t) {
+ switch (this.status) {
+ case 'resolved_model':
+ Br(this);
+ }
+ switch (this.status) {
+ case 'fulfilled':
+ if (typeof e == 'function') {
+ for (var s = this.value, i = 0, r = new Set(); s instanceof Ot; ) {
+ if ((i++, s === this || r.has(s) || 1e3 < i)) {
+ typeof t == 'function' &&
+ t(Error('Cannot have cyclic thenables.'));
+ return;
+ }
+ if ((r.add(s), s.status === 'fulfilled')) s = s.value;
+ else break;
+ }
+ e(this.value);
+ }
+ break;
+ case 'pending':
+ case 'blocked':
+ typeof e == 'function' &&
+ (this.value === null && (this.value = []), this.value.push(e)),
+ typeof t == 'function' &&
+ (this.reason === null && (this.reason = []), this.reason.push(t));
+ break;
+ default:
+ typeof t == 'function' && t(this.reason);
+ }
+ };
+ var Uu = Object.prototype,
+ Hu = Array.prototype;
+ function Mr(e, t, s, i) {
+ for (var r = 0; r < t.length; r++) {
+ var a = t[r];
+ typeof a == 'function' ? a(s) : zu(e, a, s, i.reason);
+ }
+ }
+ function da(e, t, s) {
+ for (var i = 0; i < t.length; i++) {
+ var r = t[i];
+ typeof r == 'function' ? r(s) : Pr(e, r.handler, s);
+ }
+ }
+ function Fr(e, t, s) {
+ if (t.status !== 'pending' && t.status !== 'blocked') t.reason.error(s);
+ else {
+ var i = t.reason;
+ (t.status = 'rejected'), (t.reason = s), i !== null && da(e, i, s);
+ }
+ }
+ function Wu(e, t, s) {
+ var i = {};
+ return new Ot('resolved_model', t, ((i.id = s), (i[Dr] = e), i));
+ }
+ function Gu(e, t, s, i) {
+ if (t.status !== 'pending')
+ (t = t.reason),
+ s[0] === 'C'
+ ? t.close(s === 'C' ? '"$undefined"' : s.slice(1))
+ : t.enqueueModel(s);
+ else {
+ var r = t.value,
+ a = t.reason;
+ if (
+ ((t.status = 'resolved_model'),
+ (t.value = s),
+ (s = {}),
+ (t.reason = ((s.id = i), (s[Dr] = e), s)),
+ r !== null)
+ )
+ switch ((Br(t), t.status)) {
+ case 'fulfilled':
+ Mr(e, r, t.value, t);
+ break;
+ case 'blocked':
+ case 'pending':
+ if (t.value) for (e = 0; e < r.length; e++) t.value.push(r[e]);
+ else t.value = r;
+ if (t.reason) {
+ if (a) for (r = 0; r < a.length; r++) t.reason.push(a[r]);
+ } else t.reason = a;
+ break;
+ case 'rejected':
+ a && da(e, a, t.reason);
+ }
+ }
+ }
+ function fu(e, t, s) {
+ var i = {};
+ return new Ot(
+ 'resolved_model',
+ (s ? '{"done":true,"value":' : '{"done":false,"value":') + t + '}',
+ ((i.id = -1), (i[Dr] = e), i)
+ );
+ }
+ function ea(e, t, s, i) {
+ Gu(
+ e,
+ t,
+ (i ? '{"done":true,"value":' : '{"done":false,"value":') + s + '}',
+ -1
+ );
+ }
+ function Nd(e, t, s, i) {
+ function r(L) {
+ var p = d.reason,
+ h = d;
+ (h.status = 'rejected'),
+ (h.value = null),
+ (h.reason = L),
+ p !== null && da(e, p, L),
+ Pr(e, g, L);
+ }
+ var a = t.id;
+ if (typeof a != 'string' || i === 'then') return null;
+ var u = t.$$promise;
+ if (u !== void 0)
+ return u.status === 'fulfilled'
+ ? ((u = u.value), i === '__proto__' ? null : (s[i] = u))
+ : (Ye
+ ? ((a = Ye), a.deps++)
+ : (a = Ye =
+ {
+ chunk: null,
+ value: null,
+ reason: null,
+ deps: 1,
+ errored: !1,
+ }),
+ u.then(aa.bind(null, e, a, s, i), Pr.bind(null, e, a)),
+ null);
+ var d = new Ot('blocked', null, null);
+ t.$$promise = d;
+ var y = $u(e._bundlerConfig, a);
+ if (((u = t.bound), (a = qu(y))))
+ u instanceof Ot && (a = Promise.all([a, u]));
+ else if (u instanceof Ot) a = Promise.resolve(u);
+ else return (u = Fi(y)), (a = d), (a.status = 'fulfilled'), (a.value = u);
+ if (Ye) {
+ var g = Ye;
+ g.deps++;
+ } else
+ g = Ye = {chunk: null, value: null, reason: null, deps: 1, errored: !1};
+ return (
+ a.then(function () {
+ var L = Fi(y);
+ if (t.bound) {
+ var p = t.bound.value;
+ if (((p = kn(p) ? p.slice(0) : []), 1e3 < p.length)) {
+ r(
+ Error(
+ 'Server Function has too many bound arguments. Received ' +
+ p.length +
+ ' but the limit is 1000.'
+ )
+ );
+ return;
+ }
+ p.unshift(null), (L = L.bind.apply(L, p));
+ }
+ p = d.value;
+ var h = d;
+ (h.status = 'fulfilled'),
+ (h.value = L),
+ (h.reason = null),
+ p !== null && Mr(e, p, L, h),
+ aa(e, g, s, i, L);
+ }, r),
+ null
+ );
+ }
+ function oa(e, t, s, i, r, a) {
+ if (typeof i == 'string') return Fd(e, t, s, i, r, a);
+ if (typeof i == 'object' && i !== null)
+ if (
+ (r !== void 0 &&
+ e._temporaryReferences !== void 0 &&
+ e._temporaryReferences.set(i, r),
+ kn(i))
+ ) {
+ if (a === null) {
+ var u = {count: 0, fork: !1};
+ e._rootArrayContexts.set(i, u);
+ } else u = a;
+ for (
+ 1 < i.length && (u.fork = !0), $n(u, i.length + 1, e), t = 0;
+ t < i.length;
+ t++
+ )
+ i[t] = oa(
+ e,
+ i,
+ '' + t,
+ i[t],
+ r !== void 0 ? r + ':' + t : void 0,
+ u
+ );
+ } else
+ for (u in i)
+ Nr.call(i, u) &&
+ (u === '__proto__'
+ ? delete i[u]
+ : ((t =
+ r !== void 0 && u.indexOf(':') === -1
+ ? r + ':' + u
+ : void 0),
+ (t = oa(e, i, u, i[u], t, null)),
+ t !== void 0 ? (i[u] = t) : delete i[u]));
+ return i;
+ }
+ function $n(e, t, s) {
+ if ((e.count += t) > s._arraySizeLimit && e.fork)
+ throw Error(
+ 'Maximum array nesting exceeded. Large nested arrays can be dangerous. Try adding intermediate objects.'
+ );
+ }
+ var Ye = null;
+ function Br(e) {
+ var t = Ye;
+ Ye = null;
+ var s = e.reason,
+ i = s[Dr];
+ (s = s.id), (s = s === -1 ? void 0 : s.toString(16));
+ var r = e.value;
+ (e.status = 'blocked'), (e.value = null), (e.reason = null);
+ try {
+ var a = JSON.parse(r);
+ r = {count: 0, fork: !1};
+ var u = oa(i, {'': a}, '', a, s, r),
+ d = e.value;
+ if (d !== null)
+ for (e.value = null, e.reason = null, a = 0; a < d.length; a++) {
+ var y = d[a];
+ typeof y == 'function' ? y(u) : zu(i, y, u, r);
+ }
+ if (Ye !== null) {
+ if (Ye.errored) throw Ye.reason;
+ if (0 < Ye.deps) {
+ (Ye.value = u), (Ye.reason = r), (Ye.chunk = e);
+ return;
+ }
+ }
+ (e.status = 'fulfilled'), (e.value = u), (e.reason = r);
+ } catch (g) {
+ (e.status = 'rejected'), (e.reason = g);
+ } finally {
+ Ye = t;
+ }
+ }
+ function Rd(e, t) {
+ (e._closed = !0),
+ (e._closedReason = t),
+ e._chunks.forEach(function (s) {
+ s.status === 'pending'
+ ? Fr(e, s, t)
+ : s.status === 'fulfilled' &&
+ s.reason !== null &&
+ ((s = s.reason), typeof s.error == 'function' && s.error(t));
+ });
+ }
+ function Vr(e, t) {
+ var s = e._chunks,
+ i = s.get(t);
+ return (
+ i ||
+ ((i = e._formData.get(e._prefix + t)),
+ (i =
+ typeof i == 'string'
+ ? Wu(e, i, t)
+ : e._closed
+ ? new Ot('rejected', null, e._closedReason)
+ : new Ot('pending', null, null)),
+ s.set(t, i)),
+ i
+ );
+ }
+ function zu(e, t, s, i) {
+ var r = t.handler,
+ a = t.parentObject,
+ u = t.key,
+ d = t.map,
+ y = t.path;
+ try {
+ for (var g = 0, L = e._rootArrayContexts, p = 1; p < y.length; p++) {
+ var h = y[p];
+ if (
+ typeof s != 'object' ||
+ s === null ||
+ (ii(s) !== Uu && ii(s) !== Hu) ||
+ !Nr.call(s, h)
+ )
+ throw Error('Invalid reference.');
+ if (((s = s[h]), kn(s))) (g = 0), (i = L.get(s) || i);
+ else if (((i = null), typeof s == 'string')) g = s.length;
+ else if (typeof s == 'bigint') {
+ var T = Math.abs(Number(s));
+ g = T === 0 ? 1 : Math.floor(Math.log10(T)) + 1;
+ } else g = ArrayBuffer.isView(s) ? s.byteLength : 0;
+ }
+ var x = d(e, s, a, u),
+ w = t.arrayRoot;
+ w !== null &&
+ (i !== null
+ ? (i.fork && (w.fork = !0), $n(w, i.count, e))
+ : 0 < g && $n(w, g, e));
+ } catch (S) {
+ Pr(e, r, S);
+ return;
+ }
+ aa(e, r, a, u, x);
+ }
+ function aa(e, t, s, i, r) {
+ i !== '__proto__' && (s[i] = r),
+ i === '' && t.value === null && (t.value = r),
+ t.deps--,
+ t.deps === 0 &&
+ ((s = t.chunk),
+ s !== null &&
+ s.status === 'blocked' &&
+ ((i = s.value),
+ (s.status = 'fulfilled'),
+ (s.value = t.value),
+ (s.reason = t.reason),
+ i !== null && Mr(e, i, t.value, s)));
+ }
+ function Pr(e, t, s) {
+ t.errored ||
+ ((t.errored = !0),
+ (t.value = null),
+ (t.reason = s),
+ (t = t.chunk),
+ t !== null && t.status === 'blocked' && Fr(e, t, s));
+ }
+ function Di(e, t, s, i, r, a) {
+ t = t.split(':');
+ var u = parseInt(t[0], 16),
+ d = Vr(e, u);
+ switch (d.status) {
+ case 'resolved_model':
+ Br(d);
+ }
+ switch (d.status) {
+ case 'fulfilled':
+ (u = d.value), (d = d.reason);
+ for (var y = 0, g = e._rootArrayContexts, L = 1; L < t.length; L++) {
+ if (
+ ((y = t[L]),
+ typeof u != 'object' ||
+ u === null ||
+ (ii(u) !== Uu && ii(u) !== Hu) ||
+ !Nr.call(u, y))
+ )
+ throw Error('Invalid reference.');
+ (u = u[y]),
+ kn(u)
+ ? ((y = 0), (d = g.get(u) || d))
+ : ((d = null),
+ typeof u == 'string'
+ ? (y = u.length)
+ : typeof u == 'bigint'
+ ? ((y = Math.abs(Number(u))),
+ (y = y === 0 ? 1 : Math.floor(Math.log10(y)) + 1))
+ : (y = ArrayBuffer.isView(u) ? u.byteLength : 0));
+ }
+ return (
+ (s = a(e, u, s, i)),
+ r !== null &&
+ (d !== null
+ ? (d.fork && (r.fork = !0), $n(r, d.count, e))
+ : 0 < y && $n(r, y, e)),
+ s
+ );
+ case 'blocked':
+ return (
+ Ye
+ ? ((e = Ye), e.deps++)
+ : (e = Ye =
+ {
+ chunk: null,
+ value: null,
+ reason: null,
+ deps: 1,
+ errored: !1,
+ }),
+ (r = {
+ handler: e,
+ parentObject: s,
+ key: i,
+ map: a,
+ path: t,
+ arrayRoot: r,
+ }),
+ d.value === null ? (d.value = [r]) : d.value.push(r),
+ d.reason === null ? (d.reason = [r]) : d.reason.push(r),
+ null
+ );
+ case 'pending':
+ throw Error('Invalid forward reference.');
+ default:
+ return (
+ Ye
+ ? ((Ye.errored = !0), (Ye.value = null), (Ye.reason = d.reason))
+ : (Ye = {
+ chunk: null,
+ value: null,
+ reason: d.reason,
+ deps: 0,
+ errored: !0,
+ }),
+ null
+ );
+ }
+ }
+ function Ld(e, t) {
+ if (!kn(t)) throw Error('Invalid Map initializer.');
+ if (t.$$consumed === !0) throw Error('Already initialized Map.');
+ return (e = new Map(t)), (t.$$consumed = !0), e;
+ }
+ function Od(e, t) {
+ if (!kn(t)) throw Error('Invalid Set initializer.');
+ if (t.$$consumed === !0) throw Error('Already initialized Set.');
+ return (e = new Set(t)), (t.$$consumed = !0), e;
+ }
+ function Dd(e, t) {
+ if (!kn(t)) throw Error('Invalid Iterator initializer.');
+ if (t.$$consumed === !0) throw Error('Already initialized Iterator.');
+ return (e = t[Symbol.iterator]()), (t.$$consumed = !0), e;
+ }
+ function Md(e, t, s, i) {
+ return i === 'then' && typeof t == 'function' ? null : t;
+ }
+ function Jt(e, t, s, i, r, a, u) {
+ function d(L) {
+ if (!g.errored) {
+ (g.errored = !0), (g.value = null), (g.reason = L);
+ var p = g.chunk;
+ p !== null && p.status === 'blocked' && Fr(e, p, L);
+ }
+ }
+ t = parseInt(t.slice(2), 16);
+ var y = e._prefix + t;
+ if (((i = e._chunks), i.has(t)))
+ throw Error('Already initialized typed array.');
+ if (
+ (i.set(
+ t,
+ new Ot('rejected', null, Error('Already initialized typed array.'))
+ ),
+ (t = e._formData.get(y).arrayBuffer()),
+ Ye)
+ ) {
+ var g = Ye;
+ g.deps++;
+ } else
+ g = Ye = {chunk: null, value: null, reason: null, deps: 1, errored: !1};
+ return (
+ t.then(function (L) {
+ try {
+ u !== null && $n(u, L.byteLength, e);
+ var p = s === ArrayBuffer ? L : new s(L);
+ y !== '__proto__' && (r[a] = p),
+ a === '' && g.value === null && (g.value = p);
+ } catch (h) {
+ d(h);
+ return;
+ }
+ g.deps--,
+ g.deps === 0 &&
+ ((L = g.chunk),
+ L !== null &&
+ L.status === 'blocked' &&
+ ((p = L.value),
+ (L.status = 'fulfilled'),
+ (L.value = g.value),
+ (L.reason = null),
+ p !== null && Mr(e, p, g.value, L)));
+ }, d),
+ null
+ );
+ }
+ function Xu(e, t, s, i) {
+ var r = e._chunks;
+ for (
+ s = new Ot('fulfilled', s, i),
+ r.set(t, s),
+ e = e._formData.getAll(e._prefix + t),
+ t = 0;
+ t < e.length;
+ t++
+ )
+ (r = e[t]),
+ typeof r == 'string' &&
+ (r[0] === 'C'
+ ? i.close(r === 'C' ? '"$undefined"' : r.slice(1))
+ : i.enqueueModel(r));
+ }
+ function du(e, t, s) {
+ function i(g) {
+ s !== 'bytes' || ArrayBuffer.isView(g)
+ ? r.enqueue(g)
+ : y.error(Error('Invalid data for bytes stream.'));
+ }
+ if (((t = parseInt(t.slice(2), 16)), e._chunks.has(t)))
+ throw Error('Already initialized stream.');
+ var r = null,
+ a = !1,
+ u = new ReadableStream({
+ type: s,
+ start: function (g) {
+ r = g;
+ },
+ }),
+ d = null,
+ y = {
+ enqueueModel: function (g) {
+ if (d === null) {
+ var L = Wu(e, g, -1);
+ Br(L),
+ L.status === 'fulfilled'
+ ? i(L.value)
+ : (L.then(i, y.error), (d = L));
+ } else {
+ L = d;
+ var p = new Ot('pending', null, null);
+ p.then(i, y.error),
+ (d = p),
+ L.then(function () {
+ d === p && (d = null), Gu(e, p, g, -1);
+ });
+ }
+ },
+ close: function () {
+ if (!a)
+ if (((a = !0), d === null)) r.close();
+ else {
+ var g = d;
+ (d = null),
+ g.then(function () {
+ return r.close();
+ });
+ }
+ },
+ error: function (g) {
+ if (!a)
+ if (((a = !0), d === null)) r.error(g);
+ else {
+ var L = d;
+ (d = null),
+ L.then(function () {
+ return r.error(g);
+ });
+ }
+ },
+ };
+ return Xu(e, t, u, y), u;
+ }
+ function ma(e) {
+ this.next = e;
+ }
+ ma.prototype = {};
+ ma.prototype[Ss] = function () {
+ return this;
+ };
+ function mu(e, t, s) {
+ if (((t = parseInt(t.slice(2), 16)), e._chunks.has(t)))
+ throw Error('Already initialized stream.');
+ var i = [],
+ r = !1,
+ a = 0,
+ u = {};
+ return (
+ (u =
+ ((u[Ss] = function () {
+ var d = 0;
+ return new ma(function (y) {
+ if (y !== void 0)
+ throw Error(
+ 'Values cannot be passed to next() of AsyncIterables passed to Client Components.'
+ );
+ if (d === i.length) {
+ if (r)
+ return new Ot('fulfilled', {done: !0, value: void 0}, null);
+ i[d] = new Ot('pending', null, null);
+ }
+ return i[d++];
+ });
+ }),
+ u)),
+ (s = s ? u[Ss]() : u),
+ Xu(e, t, s, {
+ enqueueModel: function (d) {
+ a === i.length ? (i[a] = fu(e, d, !1)) : ea(e, i[a], d, !1), a++;
+ },
+ close: function (d) {
+ if (!r)
+ for (
+ r = !0,
+ a === i.length ? (i[a] = fu(e, d, !0)) : ea(e, i[a], d, !0),
+ a++;
+ a < i.length;
+
+ )
+ ea(e, i[a++], '"$undefined"', !0);
+ },
+ error: function (d) {
+ if (!r)
+ for (
+ r = !0,
+ a === i.length && (i[a] = new Ot('pending', null, null));
+ a < i.length;
+
+ )
+ Fr(e, i[a++], d);
+ },
+ }),
+ s
+ );
+ }
+ function Fd(e, t, s, i, r, a) {
+ if (i[0] === '$') {
+ switch (i[1]) {
+ case '$':
+ return a !== null && $n(a, i.length - 1, e), i.slice(1);
+ case '@':
+ return (t = parseInt(i.slice(2), 16)), Vr(e, t);
+ case 'h':
+ return (a = i.slice(2)), Di(e, a, t, s, null, Nd);
+ case 'T':
+ if (r === void 0 || e._temporaryReferences === void 0)
+ throw Error(
+ 'Could not reference an opaque temporary reference. This is likely due to misconfiguring the temporaryReferences options on the server.'
+ );
+ return ud(e._temporaryReferences, r);
+ case 'Q':
+ return (a = i.slice(2)), Di(e, a, t, s, null, Ld);
+ case 'W':
+ return (a = i.slice(2)), Di(e, a, t, s, null, Od);
+ case 'K':
+ for (
+ t = i.slice(2),
+ t = e._prefix + t + '_',
+ s = new FormData(),
+ e = e._formData,
+ a = Array.from(e.keys()),
+ i = 0;
+ i < a.length;
+ i++
+ )
+ if (((r = a[i]), r.startsWith(t))) {
+ for (
+ var u = e.getAll(r), d = r.slice(t.length), y = 0;
+ y < u.length;
+ y++
+ )
+ s.append(d, u[y]);
+ e.delete(r);
+ }
+ return s;
+ case 'i':
+ return (a = i.slice(2)), Di(e, a, t, s, null, Dd);
+ case 'I':
+ return 1 / 0;
+ case '-':
+ return i === '$-0' ? -0 : -1 / 0;
+ case 'N':
+ return NaN;
+ case 'u':
+ return;
+ case 'D':
+ return new Date(Date.parse(i.slice(2)));
+ case 'n':
+ if (((t = i.slice(2)), 300 < t.length))
+ throw Error(
+ 'BigInt is too large. Received ' +
+ t.length +
+ ' digits but the limit is 300.'
+ );
+ return a !== null && $n(a, t.length, e), BigInt(t);
+ case 'A':
+ return Jt(e, i, ArrayBuffer, 1, t, s, a);
+ case 'O':
+ return Jt(e, i, Int8Array, 1, t, s, a);
+ case 'o':
+ return Jt(e, i, Uint8Array, 1, t, s, a);
+ case 'U':
+ return Jt(e, i, Uint8ClampedArray, 1, t, s, a);
+ case 'S':
+ return Jt(e, i, Int16Array, 2, t, s, a);
+ case 's':
+ return Jt(e, i, Uint16Array, 2, t, s, a);
+ case 'L':
+ return Jt(e, i, Int32Array, 4, t, s, a);
+ case 'l':
+ return Jt(e, i, Uint32Array, 4, t, s, a);
+ case 'G':
+ return Jt(e, i, Float32Array, 4, t, s, a);
+ case 'g':
+ return Jt(e, i, Float64Array, 8, t, s, a);
+ case 'M':
+ return Jt(e, i, BigInt64Array, 8, t, s, a);
+ case 'm':
+ return Jt(e, i, BigUint64Array, 8, t, s, a);
+ case 'V':
+ return Jt(e, i, DataView, 1, t, s, a);
+ case 'B':
+ return (
+ (t = parseInt(i.slice(2), 16)), e._formData.get(e._prefix + t)
+ );
+ case 'R':
+ return du(e, i, void 0);
+ case 'r':
+ return du(e, i, 'bytes');
+ case 'X':
+ return mu(e, i, !1);
+ case 'x':
+ return mu(e, i, !0);
+ }
+ return (i = i.slice(1)), Di(e, i, t, s, a, Md);
+ }
+ return a !== null && $n(a, i.length, e), i;
+ }
+ function Yu(e, t, s) {
+ var i =
+ 3 < arguments.length && arguments[3] !== void 0
+ ? arguments[3]
+ : new FormData(),
+ r =
+ 4 < arguments.length && arguments[4] !== void 0 ? arguments[4] : 1e6,
+ a = new Map();
+ return {
+ _bundlerConfig: e,
+ _prefix: t,
+ _formData: i,
+ _chunks: a,
+ _closed: !1,
+ _closedReason: null,
+ _temporaryReferences: s,
+ _rootArrayContexts: new WeakMap(),
+ _arraySizeLimit: r,
+ };
+ }
+ function Ju(e) {
+ Rd(e, Error('Connection closed.'));
+ }
+ function yu(e, t) {
+ var s = t.id;
+ if (typeof s != 'string') return null;
+ var i = $u(e, s);
+ return (
+ (e = qu(i)),
+ (t = t.bound),
+ t instanceof Promise
+ ? Promise.all([t, e]).then(function (r) {
+ r = r[0];
+ var a = Fi(i);
+ if (1e3 < r.length)
+ throw Error(
+ 'Server Function has too many bound arguments. Received ' +
+ r.length +
+ ' but the limit is 1000.'
+ );
+ return a.bind.apply(a, [null].concat(r));
+ })
+ : e
+ ? Promise.resolve(e).then(function () {
+ return Fi(i);
+ })
+ : Promise.resolve(Fi(i))
+ );
+ }
+ function Qu(e, t, s, i) {
+ if (
+ ((e = Yu(t, s, void 0, e, i)),
+ Ju(e),
+ (e = Vr(e, 0)),
+ e.then(function () {}),
+ e.status !== 'fulfilled')
+ )
+ throw e.reason;
+ return e.value;
+ }
+ En.createClientModuleProxy = function (e) {
+ return (e = ti({}, e, !1)), new Proxy(e, _u);
+ };
+ En.createTemporaryReferenceSet = function () {
+ return new WeakMap();
+ };
+ En.decodeAction = function (e, t) {
+ var s = new FormData(),
+ i = null,
+ r = new Set();
+ return (
+ e.forEach(function (a, u) {
+ u.startsWith('$ACTION_')
+ ? u.startsWith('$ACTION_REF_')
+ ? r.has(u) ||
+ (r.add(u),
+ (a = '$ACTION_' + u.slice(12) + ':'),
+ (a = Qu(e, t, a)),
+ (i = yu(t, a)))
+ : u.startsWith('$ACTION_ID_') &&
+ !r.has(u) &&
+ (r.add(u), (a = u.slice(11)), (i = yu(t, {id: a, bound: null})))
+ : s.append(u, a);
+ }),
+ i === null
+ ? null
+ : i.then(function (a) {
+ return a.bind(null, s);
+ })
+ );
+ };
+ En.decodeFormState = function (e, t, s) {
+ var i = t.get('$ACTION_KEY');
+ if (typeof i != 'string') return Promise.resolve(null);
+ var r = null;
+ if (
+ (t.forEach(function (u, d) {
+ d.startsWith('$ACTION_REF_') &&
+ ((u = '$ACTION_' + d.slice(12) + ':'), (r = Qu(t, s, u)));
+ }),
+ r === null)
+ )
+ return Promise.resolve(null);
+ var a = r.id;
+ return Promise.resolve(r.bound).then(function (u) {
+ return u === null ? null : [e, i, a, u.length - 1];
+ });
+ };
+ En.decodeReply = function (e, t, s) {
+ if (typeof e == 'string') {
+ var i = new FormData();
+ i.append('0', e), (e = i);
+ }
+ return (
+ (e = Yu(
+ t,
+ '',
+ s ? s.temporaryReferences : void 0,
+ e,
+ s ? s.arraySizeLimit : void 0
+ )),
+ (t = Vr(e, 0)),
+ Ju(e),
+ t
+ );
+ };
+ En.prerender = function (e, t, s) {
+ return new Promise(function (i, r) {
+ var a = new Ru(
+ 21,
+ e,
+ t,
+ s ? s.onError : void 0,
+ s ? s.onPostpone : void 0,
+ function () {
+ var y = new ReadableStream(
+ {
+ type: 'bytes',
+ pull: function (g) {
+ ju(a, g);
+ },
+ cancel: function (g) {
+ (a.destination = null), si(a, g);
+ },
+ },
+ {highWaterMark: 0}
+ );
+ i({prelude: y});
+ },
+ r,
+ s ? s.identifierPrefix : void 0,
+ s ? s.temporaryReferences : void 0
+ );
+ if (s && s.signal) {
+ var u = s.signal;
+ if (u.aborted) si(a, u.reason);
+ else {
+ var d = function () {
+ si(a, u.reason), u.removeEventListener('abort', d);
+ };
+ u.addEventListener('abort', d);
+ }
+ }
+ Vu(a);
+ });
+ };
+ En.registerClientReference = function (e, t, s) {
+ return ti(e, t + '#' + s, !1);
+ };
+ En.registerServerReference = function (e, t, s) {
+ return Object.defineProperties(e, {
+ $$typeof: {value: Ar},
+ $$id: {value: s === null ? t : t + '#' + s, configurable: !0},
+ $$bound: {value: null, configurable: !0},
+ bind: {value: gu, configurable: !0},
+ toString: ed,
+ });
+ };
+ En.renderToReadableStream = function (e, t, s) {
+ var i = new Ru(
+ 20,
+ e,
+ t,
+ s ? s.onError : void 0,
+ s ? s.onPostpone : void 0,
+ Cs,
+ Cs,
+ s ? s.identifierPrefix : void 0,
+ s ? s.temporaryReferences : void 0
+ );
+ if (s && s.signal) {
+ var r = s.signal;
+ if (r.aborted) si(i, r.reason);
+ else {
+ var a = function () {
+ si(i, r.reason), r.removeEventListener('abort', a);
+ };
+ r.addEventListener('abort', a);
+ }
+ }
+ return new ReadableStream(
+ {
+ type: 'bytes',
+ start: function () {
+ Vu(i);
+ },
+ pull: function (u) {
+ ju(i, u);
+ },
+ cancel: function (u) {
+ (i.destination = null), si(i, u);
+ },
+ },
+ {highWaterMark: 0}
+ );
+ };
+ });
+ var e1 = Z((Wn) => {
+ 'use strict';
+ var Hn;
+ Hn = Zu();
+ Wn.renderToReadableStream = Hn.renderToReadableStream;
+ Wn.decodeReply = Hn.decodeReply;
+ Wn.decodeAction = Hn.decodeAction;
+ Wn.decodeFormState = Hn.decodeFormState;
+ Wn.registerServerReference = Hn.registerServerReference;
+ Wn.registerClientReference = Hn.registerClientReference;
+ Wn.createClientModuleProxy = Hn.createClientModuleProxy;
+ Wn.createTemporaryReferenceSet = Hn.createTemporaryReferenceSet;
+ });
+ var It = Z((ya) => {
+ 'use strict';
+ Object.defineProperty(ya, '__esModule', {value: !0});
+ var t1;
+ (function (e) {
+ e[(e.NONE = 0)] = 'NONE';
+ let s = 1;
+ e[(e._abstract = s)] = '_abstract';
+ let i = s + 1;
+ e[(e._accessor = i)] = '_accessor';
+ let r = i + 1;
+ e[(e._as = r)] = '_as';
+ let a = r + 1;
+ e[(e._assert = a)] = '_assert';
+ let u = a + 1;
+ e[(e._asserts = u)] = '_asserts';
+ let d = u + 1;
+ e[(e._async = d)] = '_async';
+ let y = d + 1;
+ e[(e._await = y)] = '_await';
+ let g = y + 1;
+ e[(e._checks = g)] = '_checks';
+ let L = g + 1;
+ e[(e._constructor = L)] = '_constructor';
+ let p = L + 1;
+ e[(e._declare = p)] = '_declare';
+ let h = p + 1;
+ e[(e._enum = h)] = '_enum';
+ let T = h + 1;
+ e[(e._exports = T)] = '_exports';
+ let x = T + 1;
+ e[(e._from = x)] = '_from';
+ let w = x + 1;
+ e[(e._get = w)] = '_get';
+ let S = w + 1;
+ e[(e._global = S)] = '_global';
+ let A = S + 1;
+ e[(e._implements = A)] = '_implements';
+ let U = A + 1;
+ e[(e._infer = U)] = '_infer';
+ let M = U + 1;
+ e[(e._interface = M)] = '_interface';
+ let c = M + 1;
+ e[(e._is = c)] = '_is';
+ let R = c + 1;
+ e[(e._keyof = R)] = '_keyof';
+ let W = R + 1;
+ e[(e._mixins = W)] = '_mixins';
+ let X = W + 1;
+ e[(e._module = X)] = '_module';
+ let ie = X + 1;
+ e[(e._namespace = ie)] = '_namespace';
+ let pe = ie + 1;
+ e[(e._of = pe)] = '_of';
+ let ae = pe + 1;
+ e[(e._opaque = ae)] = '_opaque';
+ let He = ae + 1;
+ e[(e._out = He)] = '_out';
+ let qe = He + 1;
+ e[(e._override = qe)] = '_override';
+ let Bt = qe + 1;
+ e[(e._private = Bt)] = '_private';
+ let mt = Bt + 1;
+ e[(e._protected = mt)] = '_protected';
+ let kt = mt + 1;
+ e[(e._proto = kt)] = '_proto';
+ let At = kt + 1;
+ e[(e._public = At)] = '_public';
+ let tt = At + 1;
+ e[(e._readonly = tt)] = '_readonly';
+ let nt = tt + 1;
+ e[(e._require = nt)] = '_require';
+ let _t = nt + 1;
+ e[(e._satisfies = _t)] = '_satisfies';
+ let ct = _t + 1;
+ e[(e._set = ct)] = '_set';
+ let wt = ct + 1;
+ e[(e._static = wt)] = '_static';
+ let $t = wt + 1;
+ e[(e._symbol = $t)] = '_symbol';
+ let Pt = $t + 1;
+ e[(e._type = Pt)] = '_type';
+ let qt = Pt + 1;
+ e[(e._unique = qt)] = '_unique';
+ let Tn = qt + 1;
+ e[(e._using = Tn)] = '_using';
+ })(t1 || (ya.ContextualKeyword = t1 = {}));
+ });
+ var be = Z((jr) => {
+ 'use strict';
+ Object.defineProperty(jr, '__esModule', {value: !0});
+ var q;
+ (function (e) {
+ e[(e.PRECEDENCE_MASK = 15)] = 'PRECEDENCE_MASK';
+ let s = 16;
+ e[(e.IS_KEYWORD = s)] = 'IS_KEYWORD';
+ let i = 32;
+ e[(e.IS_ASSIGN = i)] = 'IS_ASSIGN';
+ let r = 64;
+ e[(e.IS_RIGHT_ASSOCIATIVE = r)] = 'IS_RIGHT_ASSOCIATIVE';
+ let a = 128;
+ e[(e.IS_PREFIX = a)] = 'IS_PREFIX';
+ let u = 256;
+ e[(e.IS_POSTFIX = u)] = 'IS_POSTFIX';
+ let d = 512;
+ e[(e.IS_EXPRESSION_START = d)] = 'IS_EXPRESSION_START';
+ let y = 512;
+ e[(e.num = y)] = 'num';
+ let g = 1536;
+ e[(e.bigint = g)] = 'bigint';
+ let L = 2560;
+ e[(e.decimal = L)] = 'decimal';
+ let p = 3584;
+ e[(e.regexp = p)] = 'regexp';
+ let h = 4608;
+ e[(e.string = h)] = 'string';
+ let T = 5632;
+ e[(e.name = T)] = 'name';
+ let x = 6144;
+ e[(e.eof = x)] = 'eof';
+ let w = 7680;
+ e[(e.bracketL = w)] = 'bracketL';
+ let S = 8192;
+ e[(e.bracketR = S)] = 'bracketR';
+ let A = 9728;
+ e[(e.braceL = A)] = 'braceL';
+ let U = 10752;
+ e[(e.braceBarL = U)] = 'braceBarL';
+ let M = 11264;
+ e[(e.braceR = M)] = 'braceR';
+ let c = 12288;
+ e[(e.braceBarR = c)] = 'braceBarR';
+ let R = 13824;
+ e[(e.parenL = R)] = 'parenL';
+ let W = 14336;
+ e[(e.parenR = W)] = 'parenR';
+ let X = 15360;
+ e[(e.comma = X)] = 'comma';
+ let ie = 16384;
+ e[(e.semi = ie)] = 'semi';
+ let pe = 17408;
+ e[(e.colon = pe)] = 'colon';
+ let ae = 18432;
+ e[(e.doubleColon = ae)] = 'doubleColon';
+ let He = 19456;
+ e[(e.dot = He)] = 'dot';
+ let qe = 20480;
+ e[(e.question = qe)] = 'question';
+ let Bt = 21504;
+ e[(e.questionDot = Bt)] = 'questionDot';
+ let mt = 22528;
+ e[(e.arrow = mt)] = 'arrow';
+ let kt = 23552;
+ e[(e.template = kt)] = 'template';
+ let At = 24576;
+ e[(e.ellipsis = At)] = 'ellipsis';
+ let tt = 25600;
+ e[(e.backQuote = tt)] = 'backQuote';
+ let nt = 27136;
+ e[(e.dollarBraceL = nt)] = 'dollarBraceL';
+ let _t = 27648;
+ e[(e.at = _t)] = 'at';
+ let ct = 29184;
+ e[(e.hash = ct)] = 'hash';
+ let wt = 29728;
+ e[(e.eq = wt)] = 'eq';
+ let $t = 30752;
+ e[(e.assign = $t)] = 'assign';
+ let Pt = 32640;
+ e[(e.preIncDec = Pt)] = 'preIncDec';
+ let qt = 33664;
+ e[(e.postIncDec = qt)] = 'postIncDec';
+ let Tn = 34432;
+ e[(e.bang = Tn)] = 'bang';
+ let V = 35456;
+ e[(e.tilde = V)] = 'tilde';
+ let G = 35841;
+ e[(e.pipeline = G)] = 'pipeline';
+ let J = 36866;
+ e[(e.nullishCoalescing = J)] = 'nullishCoalescing';
+ let re = 37890;
+ e[(e.logicalOR = re)] = 'logicalOR';
+ let ve = 38915;
+ e[(e.logicalAND = ve)] = 'logicalAND';
+ let he = 39940;
+ e[(e.bitwiseOR = he)] = 'bitwiseOR';
+ let Ie = 40965;
+ e[(e.bitwiseXOR = Ie)] = 'bitwiseXOR';
+ let Ee = 41990;
+ e[(e.bitwiseAND = Ee)] = 'bitwiseAND';
+ let Le = 43015;
+ e[(e.equality = Le)] = 'equality';
+ let Xe = 44040;
+ e[(e.lessThan = Xe)] = 'lessThan';
+ let We = 45064;
+ e[(e.greaterThan = We)] = 'greaterThan';
+ let Ke = 46088;
+ e[(e.relationalOrEqual = Ke)] = 'relationalOrEqual';
+ let ut = 47113;
+ e[(e.bitShiftL = ut)] = 'bitShiftL';
+ let pt = 48137;
+ e[(e.bitShiftR = pt)] = 'bitShiftR';
+ let bt = 49802;
+ e[(e.plus = bt)] = 'plus';
+ let yt = 50826;
+ e[(e.minus = yt)] = 'minus';
+ let vt = 51723;
+ e[(e.modulo = vt)] = 'modulo';
+ let bn = 52235;
+ e[(e.star = bn)] = 'star';
+ let Dn = 53259;
+ e[(e.slash = Dn)] = 'slash';
+ let Ge = 54348;
+ e[(e.exponent = Ge)] = 'exponent';
+ let St = 55296;
+ e[(e.jsxName = St)] = 'jsxName';
+ let ot = 56320;
+ e[(e.jsxText = ot)] = 'jsxText';
+ let zt = 57344;
+ e[(e.jsxEmptyText = zt)] = 'jsxEmptyText';
+ let Xt = 58880;
+ e[(e.jsxTagStart = Xt)] = 'jsxTagStart';
+ let te = 59392;
+ e[(e.jsxTagEnd = te)] = 'jsxTagEnd';
+ let Cn = 60928;
+ e[(e.typeParameterStart = Cn)] = 'typeParameterStart';
+ let Zn = 61440;
+ e[(e.nonNullAssertion = Zn)] = 'nonNullAssertion';
+ let _i = 62480;
+ e[(e._break = _i)] = '_break';
+ let Mn = 63504;
+ e[(e._case = Mn)] = '_case';
+ let xs = 64528;
+ e[(e._catch = xs)] = '_catch';
+ let Ds = 65552;
+ e[(e._continue = Ds)] = '_continue';
+ let bi = 66576;
+ e[(e._debugger = bi)] = '_debugger';
+ let es = 67600;
+ e[(e._default = es)] = '_default';
+ let Nt = 68624;
+ e[(e._do = Nt)] = '_do';
+ let Rt = 69648;
+ e[(e._else = Rt)] = '_else';
+ let Ue = 70672;
+ e[(e._finally = Ue)] = '_finally';
+ let wn = 71696;
+ e[(e._for = wn)] = '_for';
+ let de = 73232;
+ e[(e._function = de)] = '_function';
+ let Ms = 73744;
+ e[(e._if = Ms)] = '_if';
+ let gs = 74768;
+ e[(e._return = gs)] = '_return';
+ let Ci = 75792;
+ e[(e._switch = Ci)] = '_switch';
+ let ts = 77456;
+ e[(e._throw = ts)] = '_throw';
+ let rn = 77840;
+ e[(e._try = rn)] = '_try';
+ let wi = 78864;
+ e[(e._var = wi)] = '_var';
+ let Fn = 79888;
+ e[(e._let = Fn)] = '_let';
+ let Bn = 80912;
+ e[(e._const = Bn)] = '_const';
+ let Fs = 81936;
+ e[(e._while = Fs)] = '_while';
+ let Si = 82960;
+ e[(e._with = Si)] = '_with';
+ let Bs = 84496;
+ e[(e._new = Bs)] = '_new';
+ let Vs = 85520;
+ e[(e._this = Vs)] = '_this';
+ let js = 86544;
+ e[(e._super = js)] = '_super';
+ let $s = 87568;
+ e[(e._class = $s)] = '_class';
+ let qs = 88080;
+ e[(e._extends = qs)] = '_extends';
+ let Ii = 89104;
+ e[(e._export = Ii)] = '_export';
+ let Ei = 90640;
+ e[(e._import = Ei)] = '_import';
+ let Ai = 91664;
+ e[(e._yield = Ai)] = '_yield';
+ let Pi = 92688;
+ e[(e._null = Pi)] = '_null';
+ let Ks = 93712;
+ e[(e._true = Ks)] = '_true';
+ let Us = 94736;
+ e[(e._false = Us)] = '_false';
+ let Hs = 95256;
+ e[(e._in = Hs)] = '_in';
+ let Ws = 96280;
+ e[(e._instanceof = Ws)] = '_instanceof';
+ let Gs = 97936;
+ e[(e._typeof = Gs)] = '_typeof';
+ let zs = 98960;
+ e[(e._void = zs)] = '_void';
+ let jo = 99984;
+ e[(e._delete = jo)] = '_delete';
+ let $o = 100880;
+ e[(e._async = $o)] = '_async';
+ let mr = 101904;
+ e[(e._get = mr)] = '_get';
+ let qo = 102928;
+ e[(e._set = qo)] = '_set';
+ let Ni = 103952;
+ e[(e._declare = Ni)] = '_declare';
+ let yr = 104976;
+ e[(e._readonly = yr)] = '_readonly';
+ let Ko = 106e3;
+ e[(e._abstract = Ko)] = '_abstract';
+ let le = 107024;
+ e[(e._static = le)] = '_static';
+ let Xs = 107536;
+ e[(e._public = Xs)] = '_public';
+ let on = 108560;
+ e[(e._private = on)] = '_private';
+ let Uo = 109584;
+ e[(e._protected = Uo)] = '_protected';
+ let Ho = 110608;
+ e[(e._override = Ho)] = '_override';
+ let Tr = 112144;
+ e[(e._as = Tr)] = '_as';
+ let Wo = 113168;
+ e[(e._enum = Wo)] = '_enum';
+ let Go = 114192;
+ e[(e._type = Go)] = '_type';
+ let kr = 115216;
+ e[(e._implements = kr)] = '_implements';
+ })(q || (jr.TokenType = q = {}));
+ function Bd(e) {
+ switch (e) {
+ case q.num:
+ return 'num';
+ case q.bigint:
+ return 'bigint';
+ case q.decimal:
+ return 'decimal';
+ case q.regexp:
+ return 'regexp';
+ case q.string:
+ return 'string';
+ case q.name:
+ return 'name';
+ case q.eof:
+ return 'eof';
+ case q.bracketL:
+ return '[';
+ case q.bracketR:
+ return ']';
+ case q.braceL:
+ return '{';
+ case q.braceBarL:
+ return '{|';
+ case q.braceR:
+ return '}';
+ case q.braceBarR:
+ return '|}';
+ case q.parenL:
+ return '(';
+ case q.parenR:
+ return ')';
+ case q.comma:
+ return ',';
+ case q.semi:
+ return ';';
+ case q.colon:
+ return ':';
+ case q.doubleColon:
+ return '::';
+ case q.dot:
+ return '.';
+ case q.question:
+ return '?';
+ case q.questionDot:
+ return '?.';
+ case q.arrow:
+ return '=>';
+ case q.template:
+ return 'template';
+ case q.ellipsis:
+ return '...';
+ case q.backQuote:
+ return '`';
+ case q.dollarBraceL:
+ return '${';
+ case q.at:
+ return '@';
+ case q.hash:
+ return '#';
+ case q.eq:
+ return '=';
+ case q.assign:
+ return '_=';
+ case q.preIncDec:
+ return '++/--';
+ case q.postIncDec:
+ return '++/--';
+ case q.bang:
+ return '!';
+ case q.tilde:
+ return '~';
+ case q.pipeline:
+ return '|>';
+ case q.nullishCoalescing:
+ return '??';
+ case q.logicalOR:
+ return '||';
+ case q.logicalAND:
+ return '&&';
+ case q.bitwiseOR:
+ return '|';
+ case q.bitwiseXOR:
+ return '^';
+ case q.bitwiseAND:
+ return '&';
+ case q.equality:
+ return '==/!=';
+ case q.lessThan:
+ return '<';
+ case q.greaterThan:
+ return '>';
+ case q.relationalOrEqual:
+ return '<=/>=';
+ case q.bitShiftL:
+ return '<<';
+ case q.bitShiftR:
+ return '>>/>>>';
+ case q.plus:
+ return '+';
+ case q.minus:
+ return '-';
+ case q.modulo:
+ return '%';
+ case q.star:
+ return '*';
+ case q.slash:
+ return '/';
+ case q.exponent:
+ return '**';
+ case q.jsxName:
+ return 'jsxName';
+ case q.jsxText:
+ return 'jsxText';
+ case q.jsxEmptyText:
+ return 'jsxEmptyText';
+ case q.jsxTagStart:
+ return 'jsxTagStart';
+ case q.jsxTagEnd:
+ return 'jsxTagEnd';
+ case q.typeParameterStart:
+ return 'typeParameterStart';
+ case q.nonNullAssertion:
+ return 'nonNullAssertion';
+ case q._break:
+ return 'break';
+ case q._case:
+ return 'case';
+ case q._catch:
+ return 'catch';
+ case q._continue:
+ return 'continue';
+ case q._debugger:
+ return 'debugger';
+ case q._default:
+ return 'default';
+ case q._do:
+ return 'do';
+ case q._else:
+ return 'else';
+ case q._finally:
+ return 'finally';
+ case q._for:
+ return 'for';
+ case q._function:
+ return 'function';
+ case q._if:
+ return 'if';
+ case q._return:
+ return 'return';
+ case q._switch:
+ return 'switch';
+ case q._throw:
+ return 'throw';
+ case q._try:
+ return 'try';
+ case q._var:
+ return 'var';
+ case q._let:
+ return 'let';
+ case q._const:
+ return 'const';
+ case q._while:
+ return 'while';
+ case q._with:
+ return 'with';
+ case q._new:
+ return 'new';
+ case q._this:
+ return 'this';
+ case q._super:
+ return 'super';
+ case q._class:
+ return 'class';
+ case q._extends:
+ return 'extends';
+ case q._export:
+ return 'export';
+ case q._import:
+ return 'import';
+ case q._yield:
+ return 'yield';
+ case q._null:
+ return 'null';
+ case q._true:
+ return 'true';
+ case q._false:
+ return 'false';
+ case q._in:
+ return 'in';
+ case q._instanceof:
+ return 'instanceof';
+ case q._typeof:
+ return 'typeof';
+ case q._void:
+ return 'void';
+ case q._delete:
+ return 'delete';
+ case q._async:
+ return 'async';
+ case q._get:
+ return 'get';
+ case q._set:
+ return 'set';
+ case q._declare:
+ return 'declare';
+ case q._readonly:
+ return 'readonly';
+ case q._abstract:
+ return 'abstract';
+ case q._static:
+ return 'static';
+ case q._public:
+ return 'public';
+ case q._private:
+ return 'private';
+ case q._protected:
+ return 'protected';
+ case q._override:
+ return 'override';
+ case q._as:
+ return 'as';
+ case q._enum:
+ return 'enum';
+ case q._type:
+ return 'type';
+ case q._implements:
+ return 'implements';
+ default:
+ return '';
+ }
+ }
+ jr.formatTokenType = Bd;
+ });
+ var qr = Z((Ui) => {
+ 'use strict';
+ Object.defineProperty(Ui, '__esModule', {value: !0});
+ var Vd = It(),
+ jd = be(),
+ Ta = class {
+ constructor(t, s, i) {
+ (this.startTokenIndex = t),
+ (this.endTokenIndex = s),
+ (this.isFunctionScope = i);
+ }
+ };
+ Ui.Scope = Ta;
+ var $r = class {
+ constructor(t, s, i, r, a, u, d, y, g, L, p, h, T) {
+ (this.potentialArrowAt = t),
+ (this.noAnonFunctionType = s),
+ (this.inDisallowConditionalTypesContext = i),
+ (this.tokensLength = r),
+ (this.scopesLength = a),
+ (this.pos = u),
+ (this.type = d),
+ (this.contextualKeyword = y),
+ (this.start = g),
+ (this.end = L),
+ (this.isType = p),
+ (this.scopeDepth = h),
+ (this.error = T);
+ }
+ };
+ Ui.StateSnapshot = $r;
+ var ka = class e {
+ constructor() {
+ e.prototype.__init.call(this),
+ e.prototype.__init2.call(this),
+ e.prototype.__init3.call(this),
+ e.prototype.__init4.call(this),
+ e.prototype.__init5.call(this),
+ e.prototype.__init6.call(this),
+ e.prototype.__init7.call(this),
+ e.prototype.__init8.call(this),
+ e.prototype.__init9.call(this),
+ e.prototype.__init10.call(this),
+ e.prototype.__init11.call(this),
+ e.prototype.__init12.call(this),
+ e.prototype.__init13.call(this);
+ }
+ __init() {
+ this.potentialArrowAt = -1;
+ }
+ __init2() {
+ this.noAnonFunctionType = !1;
+ }
+ __init3() {
+ this.inDisallowConditionalTypesContext = !1;
+ }
+ __init4() {
+ this.tokens = [];
+ }
+ __init5() {
+ this.scopes = [];
+ }
+ __init6() {
+ this.pos = 0;
+ }
+ __init7() {
+ this.type = jd.TokenType.eof;
+ }
+ __init8() {
+ this.contextualKeyword = Vd.ContextualKeyword.NONE;
+ }
+ __init9() {
+ this.start = 0;
+ }
+ __init10() {
+ this.end = 0;
+ }
+ __init11() {
+ this.isType = !1;
+ }
+ __init12() {
+ this.scopeDepth = 0;
+ }
+ __init13() {
+ this.error = null;
+ }
+ snapshot() {
+ return new $r(
+ this.potentialArrowAt,
+ this.noAnonFunctionType,
+ this.inDisallowConditionalTypesContext,
+ this.tokens.length,
+ this.scopes.length,
+ this.pos,
+ this.type,
+ this.contextualKeyword,
+ this.start,
+ this.end,
+ this.isType,
+ this.scopeDepth,
+ this.error
+ );
+ }
+ restoreFromSnapshot(t) {
+ (this.potentialArrowAt = t.potentialArrowAt),
+ (this.noAnonFunctionType = t.noAnonFunctionType),
+ (this.inDisallowConditionalTypesContext =
+ t.inDisallowConditionalTypesContext),
+ (this.tokens.length = t.tokensLength),
+ (this.scopes.length = t.scopesLength),
+ (this.pos = t.pos),
+ (this.type = t.type),
+ (this.contextualKeyword = t.contextualKeyword),
+ (this.start = t.start),
+ (this.end = t.end),
+ (this.isType = t.isType),
+ (this.scopeDepth = t.scopeDepth),
+ (this.error = t.error);
+ }
+ };
+ Ui.default = ka;
+ });
+ var Qt = Z((Kr) => {
+ 'use strict';
+ Object.defineProperty(Kr, '__esModule', {value: !0});
+ var as;
+ (function (e) {
+ e[(e.backSpace = 8)] = 'backSpace';
+ let s = 10;
+ e[(e.lineFeed = s)] = 'lineFeed';
+ let i = 9;
+ e[(e.tab = i)] = 'tab';
+ let r = 13;
+ e[(e.carriageReturn = r)] = 'carriageReturn';
+ let a = 14;
+ e[(e.shiftOut = a)] = 'shiftOut';
+ let u = 32;
+ e[(e.space = u)] = 'space';
+ let d = 33;
+ e[(e.exclamationMark = d)] = 'exclamationMark';
+ let y = 34;
+ e[(e.quotationMark = y)] = 'quotationMark';
+ let g = 35;
+ e[(e.numberSign = g)] = 'numberSign';
+ let L = 36;
+ e[(e.dollarSign = L)] = 'dollarSign';
+ let p = 37;
+ e[(e.percentSign = p)] = 'percentSign';
+ let h = 38;
+ e[(e.ampersand = h)] = 'ampersand';
+ let T = 39;
+ e[(e.apostrophe = T)] = 'apostrophe';
+ let x = 40;
+ e[(e.leftParenthesis = x)] = 'leftParenthesis';
+ let w = 41;
+ e[(e.rightParenthesis = w)] = 'rightParenthesis';
+ let S = 42;
+ e[(e.asterisk = S)] = 'asterisk';
+ let A = 43;
+ e[(e.plusSign = A)] = 'plusSign';
+ let U = 44;
+ e[(e.comma = U)] = 'comma';
+ let M = 45;
+ e[(e.dash = M)] = 'dash';
+ let c = 46;
+ e[(e.dot = c)] = 'dot';
+ let R = 47;
+ e[(e.slash = R)] = 'slash';
+ let W = 48;
+ e[(e.digit0 = W)] = 'digit0';
+ let X = 49;
+ e[(e.digit1 = X)] = 'digit1';
+ let ie = 50;
+ e[(e.digit2 = ie)] = 'digit2';
+ let pe = 51;
+ e[(e.digit3 = pe)] = 'digit3';
+ let ae = 52;
+ e[(e.digit4 = ae)] = 'digit4';
+ let He = 53;
+ e[(e.digit5 = He)] = 'digit5';
+ let qe = 54;
+ e[(e.digit6 = qe)] = 'digit6';
+ let Bt = 55;
+ e[(e.digit7 = Bt)] = 'digit7';
+ let mt = 56;
+ e[(e.digit8 = mt)] = 'digit8';
+ let kt = 57;
+ e[(e.digit9 = kt)] = 'digit9';
+ let At = 58;
+ e[(e.colon = At)] = 'colon';
+ let tt = 59;
+ e[(e.semicolon = tt)] = 'semicolon';
+ let nt = 60;
+ e[(e.lessThan = nt)] = 'lessThan';
+ let _t = 61;
+ e[(e.equalsTo = _t)] = 'equalsTo';
+ let ct = 62;
+ e[(e.greaterThan = ct)] = 'greaterThan';
+ let wt = 63;
+ e[(e.questionMark = wt)] = 'questionMark';
+ let $t = 64;
+ e[(e.atSign = $t)] = 'atSign';
+ let Pt = 65;
+ e[(e.uppercaseA = Pt)] = 'uppercaseA';
+ let qt = 66;
+ e[(e.uppercaseB = qt)] = 'uppercaseB';
+ let Tn = 67;
+ e[(e.uppercaseC = Tn)] = 'uppercaseC';
+ let V = 68;
+ e[(e.uppercaseD = V)] = 'uppercaseD';
+ let G = 69;
+ e[(e.uppercaseE = G)] = 'uppercaseE';
+ let J = 70;
+ e[(e.uppercaseF = J)] = 'uppercaseF';
+ let re = 71;
+ e[(e.uppercaseG = re)] = 'uppercaseG';
+ let ve = 72;
+ e[(e.uppercaseH = ve)] = 'uppercaseH';
+ let he = 73;
+ e[(e.uppercaseI = he)] = 'uppercaseI';
+ let Ie = 74;
+ e[(e.uppercaseJ = Ie)] = 'uppercaseJ';
+ let Ee = 75;
+ e[(e.uppercaseK = Ee)] = 'uppercaseK';
+ let Le = 76;
+ e[(e.uppercaseL = Le)] = 'uppercaseL';
+ let Xe = 77;
+ e[(e.uppercaseM = Xe)] = 'uppercaseM';
+ let We = 78;
+ e[(e.uppercaseN = We)] = 'uppercaseN';
+ let Ke = 79;
+ e[(e.uppercaseO = Ke)] = 'uppercaseO';
+ let ut = 80;
+ e[(e.uppercaseP = ut)] = 'uppercaseP';
+ let pt = 81;
+ e[(e.uppercaseQ = pt)] = 'uppercaseQ';
+ let bt = 82;
+ e[(e.uppercaseR = bt)] = 'uppercaseR';
+ let yt = 83;
+ e[(e.uppercaseS = yt)] = 'uppercaseS';
+ let vt = 84;
+ e[(e.uppercaseT = vt)] = 'uppercaseT';
+ let bn = 85;
+ e[(e.uppercaseU = bn)] = 'uppercaseU';
+ let Dn = 86;
+ e[(e.uppercaseV = Dn)] = 'uppercaseV';
+ let Ge = 87;
+ e[(e.uppercaseW = Ge)] = 'uppercaseW';
+ let St = 88;
+ e[(e.uppercaseX = St)] = 'uppercaseX';
+ let ot = 89;
+ e[(e.uppercaseY = ot)] = 'uppercaseY';
+ let zt = 90;
+ e[(e.uppercaseZ = zt)] = 'uppercaseZ';
+ let Xt = 91;
+ e[(e.leftSquareBracket = Xt)] = 'leftSquareBracket';
+ let te = 92;
+ e[(e.backslash = te)] = 'backslash';
+ let Cn = 93;
+ e[(e.rightSquareBracket = Cn)] = 'rightSquareBracket';
+ let Zn = 94;
+ e[(e.caret = Zn)] = 'caret';
+ let _i = 95;
+ e[(e.underscore = _i)] = 'underscore';
+ let Mn = 96;
+ e[(e.graveAccent = Mn)] = 'graveAccent';
+ let xs = 97;
+ e[(e.lowercaseA = xs)] = 'lowercaseA';
+ let Ds = 98;
+ e[(e.lowercaseB = Ds)] = 'lowercaseB';
+ let bi = 99;
+ e[(e.lowercaseC = bi)] = 'lowercaseC';
+ let es = 100;
+ e[(e.lowercaseD = es)] = 'lowercaseD';
+ let Nt = 101;
+ e[(e.lowercaseE = Nt)] = 'lowercaseE';
+ let Rt = 102;
+ e[(e.lowercaseF = Rt)] = 'lowercaseF';
+ let Ue = 103;
+ e[(e.lowercaseG = Ue)] = 'lowercaseG';
+ let wn = 104;
+ e[(e.lowercaseH = wn)] = 'lowercaseH';
+ let de = 105;
+ e[(e.lowercaseI = de)] = 'lowercaseI';
+ let Ms = 106;
+ e[(e.lowercaseJ = Ms)] = 'lowercaseJ';
+ let gs = 107;
+ e[(e.lowercaseK = gs)] = 'lowercaseK';
+ let Ci = 108;
+ e[(e.lowercaseL = Ci)] = 'lowercaseL';
+ let ts = 109;
+ e[(e.lowercaseM = ts)] = 'lowercaseM';
+ let rn = 110;
+ e[(e.lowercaseN = rn)] = 'lowercaseN';
+ let wi = 111;
+ e[(e.lowercaseO = wi)] = 'lowercaseO';
+ let Fn = 112;
+ e[(e.lowercaseP = Fn)] = 'lowercaseP';
+ let Bn = 113;
+ e[(e.lowercaseQ = Bn)] = 'lowercaseQ';
+ let Fs = 114;
+ e[(e.lowercaseR = Fs)] = 'lowercaseR';
+ let Si = 115;
+ e[(e.lowercaseS = Si)] = 'lowercaseS';
+ let Bs = 116;
+ e[(e.lowercaseT = Bs)] = 'lowercaseT';
+ let Vs = 117;
+ e[(e.lowercaseU = Vs)] = 'lowercaseU';
+ let js = 118;
+ e[(e.lowercaseV = js)] = 'lowercaseV';
+ let $s = 119;
+ e[(e.lowercaseW = $s)] = 'lowercaseW';
+ let qs = 120;
+ e[(e.lowercaseX = qs)] = 'lowercaseX';
+ let Ii = 121;
+ e[(e.lowercaseY = Ii)] = 'lowercaseY';
+ let Ei = 122;
+ e[(e.lowercaseZ = Ei)] = 'lowercaseZ';
+ let Ai = 123;
+ e[(e.leftCurlyBrace = Ai)] = 'leftCurlyBrace';
+ let Pi = 124;
+ e[(e.verticalBar = Pi)] = 'verticalBar';
+ let Ks = 125;
+ e[(e.rightCurlyBrace = Ks)] = 'rightCurlyBrace';
+ let Us = 126;
+ e[(e.tilde = Us)] = 'tilde';
+ let Hs = 160;
+ e[(e.nonBreakingSpace = Hs)] = 'nonBreakingSpace';
+ let Ws = 5760;
+ e[(e.oghamSpaceMark = Ws)] = 'oghamSpaceMark';
+ let Gs = 8232;
+ e[(e.lineSeparator = Gs)] = 'lineSeparator';
+ let zs = 8233;
+ e[(e.paragraphSeparator = zs)] = 'paragraphSeparator';
+ })(as || (Kr.charCodes = as = {}));
+ function $d(e) {
+ return (
+ (e >= as.digit0 && e <= as.digit9) ||
+ (e >= as.lowercaseA && e <= as.lowercaseF) ||
+ (e >= as.uppercaseA && e <= as.uppercaseF)
+ );
+ }
+ Kr.isDigit = $d;
+ });
+ var Zt = Z((ft) => {
+ 'use strict';
+ Object.defineProperty(ft, '__esModule', {value: !0});
+ function qd(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Kd = qr(),
+ Ud = qd(Kd),
+ Hd = Qt();
+ ft.isJSXEnabled;
+ ft.isTypeScriptEnabled;
+ ft.isFlowEnabled;
+ ft.state;
+ ft.input;
+ ft.nextContextId;
+ function Wd() {
+ return ft.nextContextId++;
+ }
+ ft.getNextContextId = Wd;
+ function Gd(e) {
+ if ('pos' in e) {
+ let t = n1(e.pos);
+ (e.message += ` (${t.line}:${t.column})`), (e.loc = t);
+ }
+ return e;
+ }
+ ft.augmentError = Gd;
+ var Ur = class {
+ constructor(t, s) {
+ (this.line = t), (this.column = s);
+ }
+ };
+ ft.Loc = Ur;
+ function n1(e) {
+ let t = 1,
+ s = 1;
+ for (let i = 0; i < e; i++)
+ ft.input.charCodeAt(i) === Hd.charCodes.lineFeed ? (t++, (s = 1)) : s++;
+ return new Ur(t, s);
+ }
+ ft.locationForIndex = n1;
+ function zd(e, t, s, i) {
+ (ft.input = e),
+ (ft.state = new Ud.default()),
+ (ft.nextContextId = 1),
+ (ft.isJSXEnabled = t),
+ (ft.isTypeScriptEnabled = s),
+ (ft.isFlowEnabled = i);
+ }
+ ft.initParser = zd;
+ });
+ var cs = Z((tn) => {
+ 'use strict';
+ Object.defineProperty(tn, '__esModule', {value: !0});
+ var ls = xt(),
+ As = be(),
+ Hr = Qt(),
+ en = Zt();
+ function Xd(e) {
+ return en.state.contextualKeyword === e;
+ }
+ tn.isContextual = Xd;
+ function Yd(e) {
+ let t = ls.lookaheadTypeAndKeyword.call(void 0);
+ return t.type === As.TokenType.name && t.contextualKeyword === e;
+ }
+ tn.isLookaheadContextual = Yd;
+ function s1(e) {
+ return (
+ en.state.contextualKeyword === e &&
+ ls.eat.call(void 0, As.TokenType.name)
+ );
+ }
+ tn.eatContextual = s1;
+ function Jd(e) {
+ s1(e) || Wr();
+ }
+ tn.expectContextual = Jd;
+ function i1() {
+ return (
+ ls.match.call(void 0, As.TokenType.eof) ||
+ ls.match.call(void 0, As.TokenType.braceR) ||
+ r1()
+ );
+ }
+ tn.canInsertSemicolon = i1;
+ function r1() {
+ let e = en.state.tokens[en.state.tokens.length - 1],
+ t = e ? e.end : 0;
+ for (let s = t; s < en.state.start; s++) {
+ let i = en.input.charCodeAt(s);
+ if (
+ i === Hr.charCodes.lineFeed ||
+ i === Hr.charCodes.carriageReturn ||
+ i === 8232 ||
+ i === 8233
+ )
+ return !0;
+ }
+ return !1;
+ }
+ tn.hasPrecedingLineBreak = r1;
+ function Qd() {
+ let e = ls.nextTokenStart.call(void 0);
+ for (let t = en.state.end; t < e; t++) {
+ let s = en.input.charCodeAt(t);
+ if (
+ s === Hr.charCodes.lineFeed ||
+ s === Hr.charCodes.carriageReturn ||
+ s === 8232 ||
+ s === 8233
+ )
+ return !0;
+ }
+ return !1;
+ }
+ tn.hasFollowingLineBreak = Qd;
+ function o1() {
+ return ls.eat.call(void 0, As.TokenType.semi) || i1();
+ }
+ tn.isLineTerminator = o1;
+ function Zd() {
+ o1() || Wr('Unexpected token, expected ";"');
+ }
+ tn.semicolon = Zd;
+ function em(e) {
+ ls.eat.call(void 0, e) ||
+ Wr(
+ `Unexpected token, expected "${As.formatTokenType.call(void 0, e)}"`
+ );
+ }
+ tn.expect = em;
+ function Wr(e = 'Unexpected token', t = en.state.start) {
+ if (en.state.error) return;
+ let s = new SyntaxError(e);
+ (s.pos = t),
+ (en.state.error = s),
+ (en.state.pos = en.input.length),
+ ls.finishToken.call(void 0, As.TokenType.eof);
+ }
+ tn.unexpected = Wr;
+ });
+ var xa = Z((Ps) => {
+ 'use strict';
+ Object.defineProperty(Ps, '__esModule', {value: !0});
+ var va = Qt(),
+ tm = [
+ 9,
+ 11,
+ 12,
+ va.charCodes.space,
+ va.charCodes.nonBreakingSpace,
+ va.charCodes.oghamSpaceMark,
+ 8192,
+ 8193,
+ 8194,
+ 8195,
+ 8196,
+ 8197,
+ 8198,
+ 8199,
+ 8200,
+ 8201,
+ 8202,
+ 8239,
+ 8287,
+ 12288,
+ 65279,
+ ];
+ Ps.WHITESPACE_CHARS = tm;
+ var nm = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
+ Ps.skipWhiteSpace = nm;
+ var sm = new Uint8Array(65536);
+ Ps.IS_WHITESPACE = sm;
+ for (let e of Ps.WHITESPACE_CHARS) Ps.IS_WHITESPACE[e] = 1;
+ });
+ var li = Z((vn) => {
+ 'use strict';
+ Object.defineProperty(vn, '__esModule', {value: !0});
+ var a1 = Qt(),
+ im = xa();
+ function rm(e) {
+ if (e < 48) return e === 36;
+ if (e < 58) return !0;
+ if (e < 65) return !1;
+ if (e < 91) return !0;
+ if (e < 97) return e === 95;
+ if (e < 123) return !0;
+ if (e < 128) return !1;
+ throw new Error('Should not be called with non-ASCII char code.');
+ }
+ var om = new Uint8Array(65536);
+ vn.IS_IDENTIFIER_CHAR = om;
+ for (let e = 0; e < 128; e++) vn.IS_IDENTIFIER_CHAR[e] = rm(e) ? 1 : 0;
+ for (let e = 128; e < 65536; e++) vn.IS_IDENTIFIER_CHAR[e] = 1;
+ for (let e of im.WHITESPACE_CHARS) vn.IS_IDENTIFIER_CHAR[e] = 0;
+ vn.IS_IDENTIFIER_CHAR[8232] = 0;
+ vn.IS_IDENTIFIER_CHAR[8233] = 0;
+ var am = vn.IS_IDENTIFIER_CHAR.slice();
+ vn.IS_IDENTIFIER_START = am;
+ for (let e = a1.charCodes.digit0; e <= a1.charCodes.digit9; e++)
+ vn.IS_IDENTIFIER_START[e] = 0;
+ });
+ var l1 = Z((ga) => {
+ 'use strict';
+ Object.defineProperty(ga, '__esModule', {value: !0});
+ var ge = It(),
+ Ce = be(),
+ lm = new Int32Array([
+ -1,
+ 27,
+ 783,
+ 918,
+ 1755,
+ 2376,
+ 2862,
+ 3483,
+ -1,
+ 3699,
+ -1,
+ 4617,
+ 4752,
+ 4833,
+ 5130,
+ 5508,
+ 5940,
+ -1,
+ 6480,
+ 6939,
+ 7749,
+ 8181,
+ 8451,
+ 8613,
+ -1,
+ 8829,
+ -1,
+ -1,
+ -1,
+ 54,
+ 243,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 432,
+ -1,
+ -1,
+ -1,
+ 675,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 81,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 108,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 135,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 162,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 189,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 216,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._abstract << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 270,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 297,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 324,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 351,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 378,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 405,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._accessor << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._as << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 459,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 594,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 486,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 513,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 540,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._assert << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 567,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._asserts << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 621,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 648,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._async << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 702,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 729,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 756,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._await << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 810,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 837,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 864,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 891,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._break << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 945,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1107,
+ -1,
+ -1,
+ -1,
+ 1242,
+ -1,
+ -1,
+ 1350,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 972,
+ 1026,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 999,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._case << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1053,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1080,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._catch << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1134,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1161,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1188,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1215,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._checks << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1269,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1296,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1323,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._class << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1377,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1404,
+ 1620,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1431,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._const << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1458,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1485,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1512,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1539,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1566,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1593,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._constructor << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1647,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1674,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1701,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1728,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._continue << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1782,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2349,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1809,
+ 1971,
+ -1,
+ -1,
+ 2106,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2241,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1836,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1863,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1890,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1917,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1944,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._debugger << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1998,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2025,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2052,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2079,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._declare << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2133,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2160,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2187,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2214,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._default << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2268,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2295,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2322,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._delete << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._do << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2403,
+ -1,
+ 2484,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2565,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2430,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2457,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._else << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2511,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2538,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._enum << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2592,
+ -1,
+ -1,
+ -1,
+ 2727,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2619,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2646,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2673,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._export << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2700,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._exports << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2754,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2781,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2808,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2835,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._extends << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2889,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2997,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3159,
+ -1,
+ -1,
+ 3213,
+ -1,
+ -1,
+ 3294,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2916,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2943,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2970,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._false << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3024,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3051,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3078,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3105,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3132,
+ -1,
+ (Ce.TokenType._finally << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3186,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._for << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3240,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3267,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._from << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3321,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3348,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3375,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3402,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3429,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3456,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._function << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3510,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3564,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3537,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._get << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3591,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3618,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3645,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3672,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._global << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3726,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3753,
+ 4077,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4590,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._if << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3780,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3807,
+ -1,
+ -1,
+ 3996,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3834,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3861,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3888,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3915,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3942,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3969,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._implements << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4023,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4050,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._import << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._in << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4104,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4185,
+ 4401,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4131,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4158,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._infer << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4212,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4239,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4266,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4293,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4320,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4347,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4374,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._instanceof << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4428,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4455,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4482,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4509,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4536,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4563,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._interface << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._is << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4644,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4671,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4698,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4725,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._keyof << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4779,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4806,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._let << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4860,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4995,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4887,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4914,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4941,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4968,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._mixins << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5022,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5049,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5076,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5103,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._module << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5157,
+ -1,
+ -1,
+ -1,
+ 5373,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5427,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5184,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5211,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5238,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5265,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5292,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5319,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5346,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._namespace << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5400,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._new << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5454,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5481,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._null << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5535,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5562,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5697,
+ 5751,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._of << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5589,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5616,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5643,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5670,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._opaque << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5724,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._out << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5778,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5805,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5832,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5859,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5886,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5913,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._override << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5967,
+ -1,
+ -1,
+ 6345,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 5994,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6129,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6021,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6048,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6075,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6102,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._private << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6156,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6183,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6318,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6210,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6237,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6264,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6291,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._protected << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._proto << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6372,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6399,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6426,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6453,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._public << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6507,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6534,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6696,
+ -1,
+ -1,
+ 6831,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6561,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6588,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6615,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6642,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6669,
+ -1,
+ ge.ContextualKeyword._readonly << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6723,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6750,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6777,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6804,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._require << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6858,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6885,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6912,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._return << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6966,
+ -1,
+ -1,
+ -1,
+ 7182,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7236,
+ 7371,
+ -1,
+ 7479,
+ -1,
+ 7614,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 6993,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7020,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7047,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7074,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7101,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7155,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._satisfies << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7209,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._set << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7263,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7290,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7317,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7344,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._static << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7398,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7425,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7452,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._super << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7506,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7533,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7560,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7587,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._switch << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7641,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7668,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7695,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7722,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._symbol << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7776,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7938,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8046,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7803,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7857,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7830,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._this << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7884,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7911,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._throw << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7965,
+ -1,
+ -1,
+ -1,
+ 8019,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 7992,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._true << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._try << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8073,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8100,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._type << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8127,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8154,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._typeof << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8208,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8343,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8235,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8262,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8289,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8316,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._unique << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8370,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8397,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8424,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ge.ContextualKeyword._using << 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8478,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8532,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8505,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._var << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8559,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8586,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._void << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8640,
+ 8748,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8667,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8694,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8721,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._while << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8775,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8802,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._with << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8856,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8883,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8910,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 8937,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ (Ce.TokenType._yield << 1) + 1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ ]);
+ ga.READ_WORD_TREE = lm;
+ });
+ var h1 = Z((ba) => {
+ 'use strict';
+ Object.defineProperty(ba, '__esModule', {value: !0});
+ var xn = Zt(),
+ us = Qt(),
+ c1 = li(),
+ _a = xt(),
+ u1 = l1(),
+ p1 = be();
+ function cm() {
+ let e = 0,
+ t = 0,
+ s = xn.state.pos;
+ for (
+ ;
+ s < xn.input.length &&
+ ((t = xn.input.charCodeAt(s)),
+ !(t < us.charCodes.lowercaseA || t > us.charCodes.lowercaseZ));
+
+ ) {
+ let r = u1.READ_WORD_TREE[e + (t - us.charCodes.lowercaseA) + 1];
+ if (r === -1) break;
+ (e = r), s++;
+ }
+ let i = u1.READ_WORD_TREE[e];
+ if (i > -1 && !c1.IS_IDENTIFIER_CHAR[t]) {
+ (xn.state.pos = s),
+ i & 1
+ ? _a.finishToken.call(void 0, i >>> 1)
+ : _a.finishToken.call(void 0, p1.TokenType.name, i >>> 1);
+ return;
+ }
+ for (; s < xn.input.length; ) {
+ let r = xn.input.charCodeAt(s);
+ if (c1.IS_IDENTIFIER_CHAR[r]) s++;
+ else if (r === us.charCodes.backslash) {
+ if (
+ ((s += 2), xn.input.charCodeAt(s) === us.charCodes.leftCurlyBrace)
+ ) {
+ for (
+ ;
+ s < xn.input.length &&
+ xn.input.charCodeAt(s) !== us.charCodes.rightCurlyBrace;
+
+ )
+ s++;
+ s++;
+ }
+ } else if (
+ r === us.charCodes.atSign &&
+ xn.input.charCodeAt(s + 1) === us.charCodes.atSign
+ )
+ s += 2;
+ else break;
+ }
+ (xn.state.pos = s), _a.finishToken.call(void 0, p1.TokenType.name);
+ }
+ ba.default = cm;
+ });
+ var xt = Z((Be) => {
+ 'use strict';
+ Object.defineProperty(Be, '__esModule', {value: !0});
+ function um(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var b = Zt(),
+ ci = cs(),
+ F = Qt(),
+ d1 = li(),
+ wa = xa(),
+ pm = It(),
+ hm = h1(),
+ fm = um(hm),
+ ne = be(),
+ it;
+ (function (e) {
+ e[(e.Access = 0)] = 'Access';
+ let s = 1;
+ e[(e.ExportAccess = s)] = 'ExportAccess';
+ let i = s + 1;
+ e[(e.TopLevelDeclaration = i)] = 'TopLevelDeclaration';
+ let r = i + 1;
+ e[(e.FunctionScopedDeclaration = r)] = 'FunctionScopedDeclaration';
+ let a = r + 1;
+ e[(e.BlockScopedDeclaration = a)] = 'BlockScopedDeclaration';
+ let u = a + 1;
+ e[(e.ObjectShorthandTopLevelDeclaration = u)] =
+ 'ObjectShorthandTopLevelDeclaration';
+ let d = u + 1;
+ e[(e.ObjectShorthandFunctionScopedDeclaration = d)] =
+ 'ObjectShorthandFunctionScopedDeclaration';
+ let y = d + 1;
+ e[(e.ObjectShorthandBlockScopedDeclaration = y)] =
+ 'ObjectShorthandBlockScopedDeclaration';
+ let g = y + 1;
+ e[(e.ObjectShorthand = g)] = 'ObjectShorthand';
+ let L = g + 1;
+ e[(e.ImportDeclaration = L)] = 'ImportDeclaration';
+ let p = L + 1;
+ e[(e.ObjectKey = p)] = 'ObjectKey';
+ let h = p + 1;
+ e[(e.ImportAccess = h)] = 'ImportAccess';
+ })(it || (Be.IdentifierRole = it = {}));
+ var f1;
+ (function (e) {
+ e[(e.NoChildren = 0)] = 'NoChildren';
+ let s = 1;
+ e[(e.OneChild = s)] = 'OneChild';
+ let i = s + 1;
+ e[(e.StaticChildren = i)] = 'StaticChildren';
+ let r = i + 1;
+ e[(e.KeyAfterPropSpread = r)] = 'KeyAfterPropSpread';
+ })(f1 || (Be.JSXRole = f1 = {}));
+ function dm(e) {
+ let t = e.identifierRole;
+ return (
+ t === it.TopLevelDeclaration ||
+ t === it.FunctionScopedDeclaration ||
+ t === it.BlockScopedDeclaration ||
+ t === it.ObjectShorthandTopLevelDeclaration ||
+ t === it.ObjectShorthandFunctionScopedDeclaration ||
+ t === it.ObjectShorthandBlockScopedDeclaration
+ );
+ }
+ Be.isDeclaration = dm;
+ function mm(e) {
+ let t = e.identifierRole;
+ return (
+ t === it.FunctionScopedDeclaration ||
+ t === it.BlockScopedDeclaration ||
+ t === it.ObjectShorthandFunctionScopedDeclaration ||
+ t === it.ObjectShorthandBlockScopedDeclaration
+ );
+ }
+ Be.isNonTopLevelDeclaration = mm;
+ function ym(e) {
+ let t = e.identifierRole;
+ return (
+ t === it.TopLevelDeclaration ||
+ t === it.ObjectShorthandTopLevelDeclaration ||
+ t === it.ImportDeclaration
+ );
+ }
+ Be.isTopLevelDeclaration = ym;
+ function Tm(e) {
+ let t = e.identifierRole;
+ return (
+ t === it.TopLevelDeclaration ||
+ t === it.BlockScopedDeclaration ||
+ t === it.ObjectShorthandTopLevelDeclaration ||
+ t === it.ObjectShorthandBlockScopedDeclaration
+ );
+ }
+ Be.isBlockScopedDeclaration = Tm;
+ function km(e) {
+ let t = e.identifierRole;
+ return (
+ t === it.FunctionScopedDeclaration ||
+ t === it.ObjectShorthandFunctionScopedDeclaration
+ );
+ }
+ Be.isFunctionScopedDeclaration = km;
+ function vm(e) {
+ return (
+ e.identifierRole === it.ObjectShorthandTopLevelDeclaration ||
+ e.identifierRole === it.ObjectShorthandBlockScopedDeclaration ||
+ e.identifierRole === it.ObjectShorthandFunctionScopedDeclaration
+ );
+ }
+ Be.isObjectShorthandDeclaration = vm;
+ var Hi = class {
+ constructor() {
+ (this.type = b.state.type),
+ (this.contextualKeyword = b.state.contextualKeyword),
+ (this.start = b.state.start),
+ (this.end = b.state.end),
+ (this.scopeDepth = b.state.scopeDepth),
+ (this.isType = b.state.isType),
+ (this.identifierRole = null),
+ (this.jsxRole = null),
+ (this.shadowsGlobal = !1),
+ (this.isAsyncOperation = !1),
+ (this.contextId = null),
+ (this.rhsEndIndex = null),
+ (this.isExpression = !1),
+ (this.numNullishCoalesceStarts = 0),
+ (this.numNullishCoalesceEnds = 0),
+ (this.isOptionalChainStart = !1),
+ (this.isOptionalChainEnd = !1),
+ (this.subscriptStartIndex = null),
+ (this.nullishStartIndex = null);
+ }
+ };
+ Be.Token = Hi;
+ function zr() {
+ b.state.tokens.push(new Hi()), k1();
+ }
+ Be.next = zr;
+ function xm() {
+ b.state.tokens.push(new Hi()), (b.state.start = b.state.pos), Km();
+ }
+ Be.nextTemplateToken = xm;
+ function gm() {
+ b.state.type === ne.TokenType.assign && --b.state.pos, jm();
+ }
+ Be.retokenizeSlashAsRegex = gm;
+ function _m(e) {
+ for (let s = b.state.tokens.length - e; s < b.state.tokens.length; s++)
+ b.state.tokens[s].isType = !0;
+ let t = b.state.isType;
+ return (b.state.isType = !0), t;
+ }
+ Be.pushTypeContext = _m;
+ function bm(e) {
+ b.state.isType = e;
+ }
+ Be.popTypeContext = bm;
+ function m1(e) {
+ return Sa(e) ? (zr(), !0) : !1;
+ }
+ Be.eat = m1;
+ function Cm(e) {
+ let t = b.state.isType;
+ (b.state.isType = !0), m1(e), (b.state.isType = t);
+ }
+ Be.eatTypeToken = Cm;
+ function Sa(e) {
+ return b.state.type === e;
+ }
+ Be.match = Sa;
+ function wm() {
+ let e = b.state.snapshot();
+ zr();
+ let t = b.state.type;
+ return b.state.restoreFromSnapshot(e), t;
+ }
+ Be.lookaheadType = wm;
+ var Gr = class {
+ constructor(t, s) {
+ (this.type = t), (this.contextualKeyword = s);
+ }
+ };
+ Be.TypeAndKeyword = Gr;
+ function Sm() {
+ let e = b.state.snapshot();
+ zr();
+ let t = b.state.type,
+ s = b.state.contextualKeyword;
+ return b.state.restoreFromSnapshot(e), new Gr(t, s);
+ }
+ Be.lookaheadTypeAndKeyword = Sm;
+ function y1() {
+ return T1(b.state.pos);
+ }
+ Be.nextTokenStart = y1;
+ function T1(e) {
+ wa.skipWhiteSpace.lastIndex = e;
+ let t = wa.skipWhiteSpace.exec(b.input);
+ return e + t[0].length;
+ }
+ Be.nextTokenStartSince = T1;
+ function Im() {
+ return b.input.charCodeAt(y1());
+ }
+ Be.lookaheadCharCode = Im;
+ function k1() {
+ if (
+ (x1(), (b.state.start = b.state.pos), b.state.pos >= b.input.length)
+ ) {
+ let e = b.state.tokens;
+ e.length >= 2 &&
+ e[e.length - 1].start >= b.input.length &&
+ e[e.length - 2].start >= b.input.length &&
+ ci.unexpected.call(void 0, 'Unexpectedly reached the end of input.'),
+ Ve(ne.TokenType.eof);
+ return;
+ }
+ Em(b.input.charCodeAt(b.state.pos));
+ }
+ Be.nextToken = k1;
+ function Em(e) {
+ d1.IS_IDENTIFIER_START[e] ||
+ e === F.charCodes.backslash ||
+ (e === F.charCodes.atSign &&
+ b.input.charCodeAt(b.state.pos + 1) === F.charCodes.atSign)
+ ? fm.default.call(void 0)
+ : _1(e);
+ }
+ function Am() {
+ for (
+ ;
+ b.input.charCodeAt(b.state.pos) !== F.charCodes.asterisk ||
+ b.input.charCodeAt(b.state.pos + 1) !== F.charCodes.slash;
+
+ )
+ if ((b.state.pos++, b.state.pos > b.input.length)) {
+ ci.unexpected.call(void 0, 'Unterminated comment', b.state.pos - 2);
+ return;
+ }
+ b.state.pos += 2;
+ }
+ function v1(e) {
+ let t = b.input.charCodeAt((b.state.pos += e));
+ if (b.state.pos < b.input.length)
+ for (
+ ;
+ t !== F.charCodes.lineFeed &&
+ t !== F.charCodes.carriageReturn &&
+ t !== F.charCodes.lineSeparator &&
+ t !== F.charCodes.paragraphSeparator &&
+ ++b.state.pos < b.input.length;
+
+ )
+ t = b.input.charCodeAt(b.state.pos);
+ }
+ Be.skipLineComment = v1;
+ function x1() {
+ for (; b.state.pos < b.input.length; ) {
+ let e = b.input.charCodeAt(b.state.pos);
+ switch (e) {
+ case F.charCodes.carriageReturn:
+ b.input.charCodeAt(b.state.pos + 1) === F.charCodes.lineFeed &&
+ ++b.state.pos;
+ case F.charCodes.lineFeed:
+ case F.charCodes.lineSeparator:
+ case F.charCodes.paragraphSeparator:
+ ++b.state.pos;
+ break;
+ case F.charCodes.slash:
+ switch (b.input.charCodeAt(b.state.pos + 1)) {
+ case F.charCodes.asterisk:
+ (b.state.pos += 2), Am();
+ break;
+ case F.charCodes.slash:
+ v1(2);
+ break;
+ default:
+ return;
+ }
+ break;
+ default:
+ if (wa.IS_WHITESPACE[e]) ++b.state.pos;
+ else return;
+ }
+ }
+ }
+ Be.skipSpace = x1;
+ function Ve(e, t = pm.ContextualKeyword.NONE) {
+ (b.state.end = b.state.pos),
+ (b.state.type = e),
+ (b.state.contextualKeyword = t);
+ }
+ Be.finishToken = Ve;
+ function Pm() {
+ let e = b.input.charCodeAt(b.state.pos + 1);
+ if (e >= F.charCodes.digit0 && e <= F.charCodes.digit9) {
+ b1(!0);
+ return;
+ }
+ e === F.charCodes.dot &&
+ b.input.charCodeAt(b.state.pos + 2) === F.charCodes.dot
+ ? ((b.state.pos += 3), Ve(ne.TokenType.ellipsis))
+ : (++b.state.pos, Ve(ne.TokenType.dot));
+ }
+ function Nm() {
+ b.input.charCodeAt(b.state.pos + 1) === F.charCodes.equalsTo
+ ? Fe(ne.TokenType.assign, 2)
+ : Fe(ne.TokenType.slash, 1);
+ }
+ function Rm(e) {
+ let t =
+ e === F.charCodes.asterisk ? ne.TokenType.star : ne.TokenType.modulo,
+ s = 1,
+ i = b.input.charCodeAt(b.state.pos + 1);
+ e === F.charCodes.asterisk &&
+ i === F.charCodes.asterisk &&
+ (s++,
+ (i = b.input.charCodeAt(b.state.pos + 2)),
+ (t = ne.TokenType.exponent)),
+ i === F.charCodes.equalsTo &&
+ b.input.charCodeAt(b.state.pos + 2) !== F.charCodes.greaterThan &&
+ (s++, (t = ne.TokenType.assign)),
+ Fe(t, s);
+ }
+ function Lm(e) {
+ let t = b.input.charCodeAt(b.state.pos + 1);
+ if (t === e) {
+ b.input.charCodeAt(b.state.pos + 2) === F.charCodes.equalsTo
+ ? Fe(ne.TokenType.assign, 3)
+ : Fe(
+ e === F.charCodes.verticalBar
+ ? ne.TokenType.logicalOR
+ : ne.TokenType.logicalAND,
+ 2
+ );
+ return;
+ }
+ if (e === F.charCodes.verticalBar) {
+ if (t === F.charCodes.greaterThan) {
+ Fe(ne.TokenType.pipeline, 2);
+ return;
+ } else if (t === F.charCodes.rightCurlyBrace && b.isFlowEnabled) {
+ Fe(ne.TokenType.braceBarR, 2);
+ return;
+ }
+ }
+ if (t === F.charCodes.equalsTo) {
+ Fe(ne.TokenType.assign, 2);
+ return;
+ }
+ Fe(
+ e === F.charCodes.verticalBar
+ ? ne.TokenType.bitwiseOR
+ : ne.TokenType.bitwiseAND,
+ 1
+ );
+ }
+ function Om() {
+ b.input.charCodeAt(b.state.pos + 1) === F.charCodes.equalsTo
+ ? Fe(ne.TokenType.assign, 2)
+ : Fe(ne.TokenType.bitwiseXOR, 1);
+ }
+ function Dm(e) {
+ let t = b.input.charCodeAt(b.state.pos + 1);
+ if (t === e) {
+ Fe(ne.TokenType.preIncDec, 2);
+ return;
+ }
+ t === F.charCodes.equalsTo
+ ? Fe(ne.TokenType.assign, 2)
+ : e === F.charCodes.plusSign
+ ? Fe(ne.TokenType.plus, 1)
+ : Fe(ne.TokenType.minus, 1);
+ }
+ function Mm() {
+ let e = b.input.charCodeAt(b.state.pos + 1);
+ if (e === F.charCodes.lessThan) {
+ if (b.input.charCodeAt(b.state.pos + 2) === F.charCodes.equalsTo) {
+ Fe(ne.TokenType.assign, 3);
+ return;
+ }
+ b.state.isType
+ ? Fe(ne.TokenType.lessThan, 1)
+ : Fe(ne.TokenType.bitShiftL, 2);
+ return;
+ }
+ e === F.charCodes.equalsTo
+ ? Fe(ne.TokenType.relationalOrEqual, 2)
+ : Fe(ne.TokenType.lessThan, 1);
+ }
+ function g1() {
+ if (b.state.isType) {
+ Fe(ne.TokenType.greaterThan, 1);
+ return;
+ }
+ let e = b.input.charCodeAt(b.state.pos + 1);
+ if (e === F.charCodes.greaterThan) {
+ let t =
+ b.input.charCodeAt(b.state.pos + 2) === F.charCodes.greaterThan
+ ? 3
+ : 2;
+ if (b.input.charCodeAt(b.state.pos + t) === F.charCodes.equalsTo) {
+ Fe(ne.TokenType.assign, t + 1);
+ return;
+ }
+ Fe(ne.TokenType.bitShiftR, t);
+ return;
+ }
+ e === F.charCodes.equalsTo
+ ? Fe(ne.TokenType.relationalOrEqual, 2)
+ : Fe(ne.TokenType.greaterThan, 1);
+ }
+ function Fm() {
+ b.state.type === ne.TokenType.greaterThan && ((b.state.pos -= 1), g1());
+ }
+ Be.rescan_gt = Fm;
+ function Bm(e) {
+ let t = b.input.charCodeAt(b.state.pos + 1);
+ if (t === F.charCodes.equalsTo) {
+ Fe(
+ ne.TokenType.equality,
+ b.input.charCodeAt(b.state.pos + 2) === F.charCodes.equalsTo ? 3 : 2
+ );
+ return;
+ }
+ if (e === F.charCodes.equalsTo && t === F.charCodes.greaterThan) {
+ (b.state.pos += 2), Ve(ne.TokenType.arrow);
+ return;
+ }
+ Fe(e === F.charCodes.equalsTo ? ne.TokenType.eq : ne.TokenType.bang, 1);
+ }
+ function Vm() {
+ let e = b.input.charCodeAt(b.state.pos + 1),
+ t = b.input.charCodeAt(b.state.pos + 2);
+ e === F.charCodes.questionMark && !(b.isFlowEnabled && b.state.isType)
+ ? t === F.charCodes.equalsTo
+ ? Fe(ne.TokenType.assign, 3)
+ : Fe(ne.TokenType.nullishCoalescing, 2)
+ : e === F.charCodes.dot &&
+ !(t >= F.charCodes.digit0 && t <= F.charCodes.digit9)
+ ? ((b.state.pos += 2), Ve(ne.TokenType.questionDot))
+ : (++b.state.pos, Ve(ne.TokenType.question));
+ }
+ function _1(e) {
+ switch (e) {
+ case F.charCodes.numberSign:
+ ++b.state.pos, Ve(ne.TokenType.hash);
+ return;
+ case F.charCodes.dot:
+ Pm();
+ return;
+ case F.charCodes.leftParenthesis:
+ ++b.state.pos, Ve(ne.TokenType.parenL);
+ return;
+ case F.charCodes.rightParenthesis:
+ ++b.state.pos, Ve(ne.TokenType.parenR);
+ return;
+ case F.charCodes.semicolon:
+ ++b.state.pos, Ve(ne.TokenType.semi);
+ return;
+ case F.charCodes.comma:
+ ++b.state.pos, Ve(ne.TokenType.comma);
+ return;
+ case F.charCodes.leftSquareBracket:
+ ++b.state.pos, Ve(ne.TokenType.bracketL);
+ return;
+ case F.charCodes.rightSquareBracket:
+ ++b.state.pos, Ve(ne.TokenType.bracketR);
+ return;
+ case F.charCodes.leftCurlyBrace:
+ b.isFlowEnabled &&
+ b.input.charCodeAt(b.state.pos + 1) === F.charCodes.verticalBar
+ ? Fe(ne.TokenType.braceBarL, 2)
+ : (++b.state.pos, Ve(ne.TokenType.braceL));
+ return;
+ case F.charCodes.rightCurlyBrace:
+ ++b.state.pos, Ve(ne.TokenType.braceR);
+ return;
+ case F.charCodes.colon:
+ b.input.charCodeAt(b.state.pos + 1) === F.charCodes.colon
+ ? Fe(ne.TokenType.doubleColon, 2)
+ : (++b.state.pos, Ve(ne.TokenType.colon));
+ return;
+ case F.charCodes.questionMark:
+ Vm();
+ return;
+ case F.charCodes.atSign:
+ ++b.state.pos, Ve(ne.TokenType.at);
+ return;
+ case F.charCodes.graveAccent:
+ ++b.state.pos, Ve(ne.TokenType.backQuote);
+ return;
+ case F.charCodes.digit0: {
+ let t = b.input.charCodeAt(b.state.pos + 1);
+ if (
+ t === F.charCodes.lowercaseX ||
+ t === F.charCodes.uppercaseX ||
+ t === F.charCodes.lowercaseO ||
+ t === F.charCodes.uppercaseO ||
+ t === F.charCodes.lowercaseB ||
+ t === F.charCodes.uppercaseB
+ ) {
+ $m();
+ return;
+ }
+ }
+ case F.charCodes.digit1:
+ case F.charCodes.digit2:
+ case F.charCodes.digit3:
+ case F.charCodes.digit4:
+ case F.charCodes.digit5:
+ case F.charCodes.digit6:
+ case F.charCodes.digit7:
+ case F.charCodes.digit8:
+ case F.charCodes.digit9:
+ b1(!1);
+ return;
+ case F.charCodes.quotationMark:
+ case F.charCodes.apostrophe:
+ qm(e);
+ return;
+ case F.charCodes.slash:
+ Nm();
+ return;
+ case F.charCodes.percentSign:
+ case F.charCodes.asterisk:
+ Rm(e);
+ return;
+ case F.charCodes.verticalBar:
+ case F.charCodes.ampersand:
+ Lm(e);
+ return;
+ case F.charCodes.caret:
+ Om();
+ return;
+ case F.charCodes.plusSign:
+ case F.charCodes.dash:
+ Dm(e);
+ return;
+ case F.charCodes.lessThan:
+ Mm();
+ return;
+ case F.charCodes.greaterThan:
+ g1();
+ return;
+ case F.charCodes.equalsTo:
+ case F.charCodes.exclamationMark:
+ Bm(e);
+ return;
+ case F.charCodes.tilde:
+ Fe(ne.TokenType.tilde, 1);
+ return;
+ default:
+ break;
+ }
+ ci.unexpected.call(
+ void 0,
+ `Unexpected character '${String.fromCharCode(e)}'`,
+ b.state.pos
+ );
+ }
+ Be.getTokenFromCode = _1;
+ function Fe(e, t) {
+ (b.state.pos += t), Ve(e);
+ }
+ function jm() {
+ let e = b.state.pos,
+ t = !1,
+ s = !1;
+ for (;;) {
+ if (b.state.pos >= b.input.length) {
+ ci.unexpected.call(void 0, 'Unterminated regular expression', e);
+ return;
+ }
+ let i = b.input.charCodeAt(b.state.pos);
+ if (t) t = !1;
+ else {
+ if (i === F.charCodes.leftSquareBracket) s = !0;
+ else if (i === F.charCodes.rightSquareBracket && s) s = !1;
+ else if (i === F.charCodes.slash && !s) break;
+ t = i === F.charCodes.backslash;
+ }
+ ++b.state.pos;
+ }
+ ++b.state.pos, C1(), Ve(ne.TokenType.regexp);
+ }
+ function Ca() {
+ for (;;) {
+ let e = b.input.charCodeAt(b.state.pos);
+ if (
+ (e >= F.charCodes.digit0 && e <= F.charCodes.digit9) ||
+ e === F.charCodes.underscore
+ )
+ b.state.pos++;
+ else break;
+ }
+ }
+ function $m() {
+ for (b.state.pos += 2; ; ) {
+ let t = b.input.charCodeAt(b.state.pos);
+ if (
+ (t >= F.charCodes.digit0 && t <= F.charCodes.digit9) ||
+ (t >= F.charCodes.lowercaseA && t <= F.charCodes.lowercaseF) ||
+ (t >= F.charCodes.uppercaseA && t <= F.charCodes.uppercaseF) ||
+ t === F.charCodes.underscore
+ )
+ b.state.pos++;
+ else break;
+ }
+ b.input.charCodeAt(b.state.pos) === F.charCodes.lowercaseN
+ ? (++b.state.pos, Ve(ne.TokenType.bigint))
+ : Ve(ne.TokenType.num);
+ }
+ function b1(e) {
+ let t = !1,
+ s = !1;
+ e || Ca();
+ let i = b.input.charCodeAt(b.state.pos);
+ if (
+ (i === F.charCodes.dot &&
+ (++b.state.pos, Ca(), (i = b.input.charCodeAt(b.state.pos))),
+ (i === F.charCodes.uppercaseE || i === F.charCodes.lowercaseE) &&
+ ((i = b.input.charCodeAt(++b.state.pos)),
+ (i === F.charCodes.plusSign || i === F.charCodes.dash) &&
+ ++b.state.pos,
+ Ca(),
+ (i = b.input.charCodeAt(b.state.pos))),
+ i === F.charCodes.lowercaseN
+ ? (++b.state.pos, (t = !0))
+ : i === F.charCodes.lowercaseM && (++b.state.pos, (s = !0)),
+ t)
+ ) {
+ Ve(ne.TokenType.bigint);
+ return;
+ }
+ if (s) {
+ Ve(ne.TokenType.decimal);
+ return;
+ }
+ Ve(ne.TokenType.num);
+ }
+ function qm(e) {
+ for (b.state.pos++; ; ) {
+ if (b.state.pos >= b.input.length) {
+ ci.unexpected.call(void 0, 'Unterminated string constant');
+ return;
+ }
+ let t = b.input.charCodeAt(b.state.pos);
+ if (t === F.charCodes.backslash) b.state.pos++;
+ else if (t === e) break;
+ b.state.pos++;
+ }
+ b.state.pos++, Ve(ne.TokenType.string);
+ }
+ function Km() {
+ for (;;) {
+ if (b.state.pos >= b.input.length) {
+ ci.unexpected.call(void 0, 'Unterminated template');
+ return;
+ }
+ let e = b.input.charCodeAt(b.state.pos);
+ if (
+ e === F.charCodes.graveAccent ||
+ (e === F.charCodes.dollarSign &&
+ b.input.charCodeAt(b.state.pos + 1) === F.charCodes.leftCurlyBrace)
+ ) {
+ if (b.state.pos === b.state.start && Sa(ne.TokenType.template))
+ if (e === F.charCodes.dollarSign) {
+ (b.state.pos += 2), Ve(ne.TokenType.dollarBraceL);
+ return;
+ } else {
+ ++b.state.pos, Ve(ne.TokenType.backQuote);
+ return;
+ }
+ Ve(ne.TokenType.template);
+ return;
+ }
+ e === F.charCodes.backslash && b.state.pos++, b.state.pos++;
+ }
+ }
+ function C1() {
+ for (; b.state.pos < b.input.length; ) {
+ let e = b.input.charCodeAt(b.state.pos);
+ if (d1.IS_IDENTIFIER_CHAR[e]) b.state.pos++;
+ else if (e === F.charCodes.backslash) {
+ if (
+ ((b.state.pos += 2),
+ b.input.charCodeAt(b.state.pos) === F.charCodes.leftCurlyBrace)
+ ) {
+ for (
+ ;
+ b.state.pos < b.input.length &&
+ b.input.charCodeAt(b.state.pos) !== F.charCodes.rightCurlyBrace;
+
+ )
+ b.state.pos++;
+ b.state.pos++;
+ }
+ } else break;
+ }
+ }
+ Be.skipWord = C1;
+ });
+ var Wi = Z((Ia) => {
+ 'use strict';
+ Object.defineProperty(Ia, '__esModule', {value: !0});
+ var w1 = be();
+ function Um(e, t = e.currentIndex()) {
+ let s = t + 1;
+ if (Xr(e, s)) {
+ let i = e.identifierNameAtIndex(t);
+ return {isType: !1, leftName: i, rightName: i, endIndex: s};
+ }
+ if ((s++, Xr(e, s)))
+ return {isType: !0, leftName: null, rightName: null, endIndex: s};
+ if ((s++, Xr(e, s)))
+ return {
+ isType: !1,
+ leftName: e.identifierNameAtIndex(t),
+ rightName: e.identifierNameAtIndex(t + 2),
+ endIndex: s,
+ };
+ if ((s++, Xr(e, s)))
+ return {isType: !0, leftName: null, rightName: null, endIndex: s};
+ throw new Error(`Unexpected import/export specifier at ${t}`);
+ }
+ Ia.default = Um;
+ function Xr(e, t) {
+ let s = e.tokens[t];
+ return s.type === w1.TokenType.braceR || s.type === w1.TokenType.comma;
+ }
+ });
+ var S1 = Z((Ea) => {
+ 'use strict';
+ Object.defineProperty(Ea, '__esModule', {value: !0});
+ Ea.default = new Map([
+ ['quot', '"'],
+ ['amp', '&'],
+ ['apos', "'"],
+ ['lt', '<'],
+ ['gt', '>'],
+ ['nbsp', '\xA0'],
+ ['iexcl', '\xA1'],
+ ['cent', '\xA2'],
+ ['pound', '\xA3'],
+ ['curren', '\xA4'],
+ ['yen', '\xA5'],
+ ['brvbar', '\xA6'],
+ ['sect', '\xA7'],
+ ['uml', '\xA8'],
+ ['copy', '\xA9'],
+ ['ordf', '\xAA'],
+ ['laquo', '\xAB'],
+ ['not', '\xAC'],
+ ['shy', '\xAD'],
+ ['reg', '\xAE'],
+ ['macr', '\xAF'],
+ ['deg', '\xB0'],
+ ['plusmn', '\xB1'],
+ ['sup2', '\xB2'],
+ ['sup3', '\xB3'],
+ ['acute', '\xB4'],
+ ['micro', '\xB5'],
+ ['para', '\xB6'],
+ ['middot', '\xB7'],
+ ['cedil', '\xB8'],
+ ['sup1', '\xB9'],
+ ['ordm', '\xBA'],
+ ['raquo', '\xBB'],
+ ['frac14', '\xBC'],
+ ['frac12', '\xBD'],
+ ['frac34', '\xBE'],
+ ['iquest', '\xBF'],
+ ['Agrave', '\xC0'],
+ ['Aacute', '\xC1'],
+ ['Acirc', '\xC2'],
+ ['Atilde', '\xC3'],
+ ['Auml', '\xC4'],
+ ['Aring', '\xC5'],
+ ['AElig', '\xC6'],
+ ['Ccedil', '\xC7'],
+ ['Egrave', '\xC8'],
+ ['Eacute', '\xC9'],
+ ['Ecirc', '\xCA'],
+ ['Euml', '\xCB'],
+ ['Igrave', '\xCC'],
+ ['Iacute', '\xCD'],
+ ['Icirc', '\xCE'],
+ ['Iuml', '\xCF'],
+ ['ETH', '\xD0'],
+ ['Ntilde', '\xD1'],
+ ['Ograve', '\xD2'],
+ ['Oacute', '\xD3'],
+ ['Ocirc', '\xD4'],
+ ['Otilde', '\xD5'],
+ ['Ouml', '\xD6'],
+ ['times', '\xD7'],
+ ['Oslash', '\xD8'],
+ ['Ugrave', '\xD9'],
+ ['Uacute', '\xDA'],
+ ['Ucirc', '\xDB'],
+ ['Uuml', '\xDC'],
+ ['Yacute', '\xDD'],
+ ['THORN', '\xDE'],
+ ['szlig', '\xDF'],
+ ['agrave', '\xE0'],
+ ['aacute', '\xE1'],
+ ['acirc', '\xE2'],
+ ['atilde', '\xE3'],
+ ['auml', '\xE4'],
+ ['aring', '\xE5'],
+ ['aelig', '\xE6'],
+ ['ccedil', '\xE7'],
+ ['egrave', '\xE8'],
+ ['eacute', '\xE9'],
+ ['ecirc', '\xEA'],
+ ['euml', '\xEB'],
+ ['igrave', '\xEC'],
+ ['iacute', '\xED'],
+ ['icirc', '\xEE'],
+ ['iuml', '\xEF'],
+ ['eth', '\xF0'],
+ ['ntilde', '\xF1'],
+ ['ograve', '\xF2'],
+ ['oacute', '\xF3'],
+ ['ocirc', '\xF4'],
+ ['otilde', '\xF5'],
+ ['ouml', '\xF6'],
+ ['divide', '\xF7'],
+ ['oslash', '\xF8'],
+ ['ugrave', '\xF9'],
+ ['uacute', '\xFA'],
+ ['ucirc', '\xFB'],
+ ['uuml', '\xFC'],
+ ['yacute', '\xFD'],
+ ['thorn', '\xFE'],
+ ['yuml', '\xFF'],
+ ['OElig', '\u0152'],
+ ['oelig', '\u0153'],
+ ['Scaron', '\u0160'],
+ ['scaron', '\u0161'],
+ ['Yuml', '\u0178'],
+ ['fnof', '\u0192'],
+ ['circ', '\u02C6'],
+ ['tilde', '\u02DC'],
+ ['Alpha', '\u0391'],
+ ['Beta', '\u0392'],
+ ['Gamma', '\u0393'],
+ ['Delta', '\u0394'],
+ ['Epsilon', '\u0395'],
+ ['Zeta', '\u0396'],
+ ['Eta', '\u0397'],
+ ['Theta', '\u0398'],
+ ['Iota', '\u0399'],
+ ['Kappa', '\u039A'],
+ ['Lambda', '\u039B'],
+ ['Mu', '\u039C'],
+ ['Nu', '\u039D'],
+ ['Xi', '\u039E'],
+ ['Omicron', '\u039F'],
+ ['Pi', '\u03A0'],
+ ['Rho', '\u03A1'],
+ ['Sigma', '\u03A3'],
+ ['Tau', '\u03A4'],
+ ['Upsilon', '\u03A5'],
+ ['Phi', '\u03A6'],
+ ['Chi', '\u03A7'],
+ ['Psi', '\u03A8'],
+ ['Omega', '\u03A9'],
+ ['alpha', '\u03B1'],
+ ['beta', '\u03B2'],
+ ['gamma', '\u03B3'],
+ ['delta', '\u03B4'],
+ ['epsilon', '\u03B5'],
+ ['zeta', '\u03B6'],
+ ['eta', '\u03B7'],
+ ['theta', '\u03B8'],
+ ['iota', '\u03B9'],
+ ['kappa', '\u03BA'],
+ ['lambda', '\u03BB'],
+ ['mu', '\u03BC'],
+ ['nu', '\u03BD'],
+ ['xi', '\u03BE'],
+ ['omicron', '\u03BF'],
+ ['pi', '\u03C0'],
+ ['rho', '\u03C1'],
+ ['sigmaf', '\u03C2'],
+ ['sigma', '\u03C3'],
+ ['tau', '\u03C4'],
+ ['upsilon', '\u03C5'],
+ ['phi', '\u03C6'],
+ ['chi', '\u03C7'],
+ ['psi', '\u03C8'],
+ ['omega', '\u03C9'],
+ ['thetasym', '\u03D1'],
+ ['upsih', '\u03D2'],
+ ['piv', '\u03D6'],
+ ['ensp', '\u2002'],
+ ['emsp', '\u2003'],
+ ['thinsp', '\u2009'],
+ ['zwnj', '\u200C'],
+ ['zwj', '\u200D'],
+ ['lrm', '\u200E'],
+ ['rlm', '\u200F'],
+ ['ndash', '\u2013'],
+ ['mdash', '\u2014'],
+ ['lsquo', '\u2018'],
+ ['rsquo', '\u2019'],
+ ['sbquo', '\u201A'],
+ ['ldquo', '\u201C'],
+ ['rdquo', '\u201D'],
+ ['bdquo', '\u201E'],
+ ['dagger', '\u2020'],
+ ['Dagger', '\u2021'],
+ ['bull', '\u2022'],
+ ['hellip', '\u2026'],
+ ['permil', '\u2030'],
+ ['prime', '\u2032'],
+ ['Prime', '\u2033'],
+ ['lsaquo', '\u2039'],
+ ['rsaquo', '\u203A'],
+ ['oline', '\u203E'],
+ ['frasl', '\u2044'],
+ ['euro', '\u20AC'],
+ ['image', '\u2111'],
+ ['weierp', '\u2118'],
+ ['real', '\u211C'],
+ ['trade', '\u2122'],
+ ['alefsym', '\u2135'],
+ ['larr', '\u2190'],
+ ['uarr', '\u2191'],
+ ['rarr', '\u2192'],
+ ['darr', '\u2193'],
+ ['harr', '\u2194'],
+ ['crarr', '\u21B5'],
+ ['lArr', '\u21D0'],
+ ['uArr', '\u21D1'],
+ ['rArr', '\u21D2'],
+ ['dArr', '\u21D3'],
+ ['hArr', '\u21D4'],
+ ['forall', '\u2200'],
+ ['part', '\u2202'],
+ ['exist', '\u2203'],
+ ['empty', '\u2205'],
+ ['nabla', '\u2207'],
+ ['isin', '\u2208'],
+ ['notin', '\u2209'],
+ ['ni', '\u220B'],
+ ['prod', '\u220F'],
+ ['sum', '\u2211'],
+ ['minus', '\u2212'],
+ ['lowast', '\u2217'],
+ ['radic', '\u221A'],
+ ['prop', '\u221D'],
+ ['infin', '\u221E'],
+ ['ang', '\u2220'],
+ ['and', '\u2227'],
+ ['or', '\u2228'],
+ ['cap', '\u2229'],
+ ['cup', '\u222A'],
+ ['int', '\u222B'],
+ ['there4', '\u2234'],
+ ['sim', '\u223C'],
+ ['cong', '\u2245'],
+ ['asymp', '\u2248'],
+ ['ne', '\u2260'],
+ ['equiv', '\u2261'],
+ ['le', '\u2264'],
+ ['ge', '\u2265'],
+ ['sub', '\u2282'],
+ ['sup', '\u2283'],
+ ['nsub', '\u2284'],
+ ['sube', '\u2286'],
+ ['supe', '\u2287'],
+ ['oplus', '\u2295'],
+ ['otimes', '\u2297'],
+ ['perp', '\u22A5'],
+ ['sdot', '\u22C5'],
+ ['lceil', '\u2308'],
+ ['rceil', '\u2309'],
+ ['lfloor', '\u230A'],
+ ['rfloor', '\u230B'],
+ ['lang', '\u2329'],
+ ['rang', '\u232A'],
+ ['loz', '\u25CA'],
+ ['spades', '\u2660'],
+ ['clubs', '\u2663'],
+ ['hearts', '\u2665'],
+ ['diams', '\u2666'],
+ ]);
+ });
+ var Pa = Z((Aa) => {
+ 'use strict';
+ Object.defineProperty(Aa, '__esModule', {value: !0});
+ function Hm(e) {
+ let [t, s] = I1(e.jsxPragma || 'React.createElement'),
+ [i, r] = I1(e.jsxFragmentPragma || 'React.Fragment');
+ return {base: t, suffix: s, fragmentBase: i, fragmentSuffix: r};
+ }
+ Aa.default = Hm;
+ function I1(e) {
+ let t = e.indexOf('.');
+ return t === -1 && (t = e.length), [e.slice(0, t), e.slice(t)];
+ }
+ });
+ var hn = Z((Ra) => {
+ 'use strict';
+ Object.defineProperty(Ra, '__esModule', {value: !0});
+ var Na = class {
+ getPrefixCode() {
+ return '';
+ }
+ getHoistedCode() {
+ return '';
+ }
+ getSuffixCode() {
+ return '';
+ }
+ };
+ Ra.default = Na;
+ });
+ var Da = Z((Jr) => {
+ 'use strict';
+ Object.defineProperty(Jr, '__esModule', {value: !0});
+ function Oa(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Wm = S1(),
+ Gm = Oa(Wm),
+ Yr = xt(),
+ Re = be(),
+ An = Qt(),
+ zm = Pa(),
+ Xm = Oa(zm),
+ Ym = hn(),
+ Jm = Oa(Ym),
+ La = class e extends Jm.default {
+ __init() {
+ this.lastLineNumber = 1;
+ }
+ __init2() {
+ this.lastIndex = 0;
+ }
+ __init3() {
+ this.filenameVarName = null;
+ }
+ __init4() {
+ this.esmAutomaticImportNameResolutions = {};
+ }
+ __init5() {
+ this.cjsAutomaticModuleNameResolutions = {};
+ }
+ constructor(t, s, i, r, a) {
+ super(),
+ (this.rootTransformer = t),
+ (this.tokens = s),
+ (this.importProcessor = i),
+ (this.nameManager = r),
+ (this.options = a),
+ e.prototype.__init.call(this),
+ e.prototype.__init2.call(this),
+ e.prototype.__init3.call(this),
+ e.prototype.__init4.call(this),
+ e.prototype.__init5.call(this),
+ (this.jsxPragmaInfo = Xm.default.call(void 0, a)),
+ (this.isAutomaticRuntime = a.jsxRuntime === 'automatic'),
+ (this.jsxImportSource = a.jsxImportSource || 'react');
+ }
+ process() {
+ return this.tokens.matches1(Re.TokenType.jsxTagStart)
+ ? (this.processJSXTag(), !0)
+ : !1;
+ }
+ getPrefixCode() {
+ let t = '';
+ if (
+ (this.filenameVarName &&
+ (t += `const ${this.filenameVarName} = ${JSON.stringify(
+ this.options.filePath || ''
+ )};`),
+ this.isAutomaticRuntime)
+ )
+ if (this.importProcessor)
+ for (let [s, i] of Object.entries(
+ this.cjsAutomaticModuleNameResolutions
+ ))
+ t += `var ${i} = require("${s}");`;
+ else {
+ let {createElement: s, ...i} =
+ this.esmAutomaticImportNameResolutions;
+ s &&
+ (t += `import {createElement as ${s}} from "${this.jsxImportSource}";`);
+ let r = Object.entries(i)
+ .map(([a, u]) => `${a} as ${u}`)
+ .join(', ');
+ if (r) {
+ let a =
+ this.jsxImportSource +
+ (this.options.production
+ ? '/jsx-runtime'
+ : '/jsx-dev-runtime');
+ t += `import {${r}} from "${a}";`;
+ }
+ }
+ return t;
+ }
+ processJSXTag() {
+ let {jsxRole: t, start: s} = this.tokens.currentToken(),
+ i = this.options.production ? null : this.getElementLocationCode(s);
+ this.isAutomaticRuntime && t !== Yr.JSXRole.KeyAfterPropSpread
+ ? this.transformTagToJSXFunc(i, t)
+ : this.transformTagToCreateElement(i);
+ }
+ getElementLocationCode(t) {
+ return `lineNumber: ${this.getLineNumberForIndex(t)}`;
+ }
+ getLineNumberForIndex(t) {
+ let s = this.tokens.code;
+ for (; this.lastIndex < t && this.lastIndex < s.length; )
+ s[this.lastIndex] ===
+ `
+` && this.lastLineNumber++,
+ this.lastIndex++;
+ return this.lastLineNumber;
+ }
+ transformTagToJSXFunc(t, s) {
+ let i = s === Yr.JSXRole.StaticChildren;
+ this.tokens.replaceToken(this.getJSXFuncInvocationCode(i));
+ let r = null;
+ if (this.tokens.matches1(Re.TokenType.jsxTagEnd))
+ this.tokens.replaceToken(`${this.getFragmentCode()}, {`),
+ this.processAutomaticChildrenAndEndProps(s);
+ else {
+ if (
+ (this.processTagIntro(),
+ this.tokens.appendCode(', {'),
+ (r = this.processProps(!0)),
+ this.tokens.matches2(Re.TokenType.slash, Re.TokenType.jsxTagEnd))
+ )
+ this.tokens.appendCode('}');
+ else if (this.tokens.matches1(Re.TokenType.jsxTagEnd))
+ this.tokens.removeToken(),
+ this.processAutomaticChildrenAndEndProps(s);
+ else
+ throw new Error('Expected either /> or > at the end of the tag.');
+ r && this.tokens.appendCode(`, ${r}`);
+ }
+ for (
+ this.options.production ||
+ (r === null && this.tokens.appendCode(', void 0'),
+ this.tokens.appendCode(`, ${i}, ${this.getDevSource(t)}, this`)),
+ this.tokens.removeInitialToken();
+ !this.tokens.matches1(Re.TokenType.jsxTagEnd);
+
+ )
+ this.tokens.removeToken();
+ this.tokens.replaceToken(')');
+ }
+ transformTagToCreateElement(t) {
+ if (
+ (this.tokens.replaceToken(this.getCreateElementInvocationCode()),
+ this.tokens.matches1(Re.TokenType.jsxTagEnd))
+ )
+ this.tokens.replaceToken(`${this.getFragmentCode()}, null`),
+ this.processChildren(!0);
+ else if (
+ (this.processTagIntro(),
+ this.processPropsObjectWithDevInfo(t),
+ !this.tokens.matches2(Re.TokenType.slash, Re.TokenType.jsxTagEnd))
+ )
+ if (this.tokens.matches1(Re.TokenType.jsxTagEnd))
+ this.tokens.removeToken(), this.processChildren(!0);
+ else
+ throw new Error('Expected either /> or > at the end of the tag.');
+ for (
+ this.tokens.removeInitialToken();
+ !this.tokens.matches1(Re.TokenType.jsxTagEnd);
+
+ )
+ this.tokens.removeToken();
+ this.tokens.replaceToken(')');
+ }
+ getJSXFuncInvocationCode(t) {
+ return this.options.production
+ ? t
+ ? this.claimAutoImportedFuncInvocation('jsxs', '/jsx-runtime')
+ : this.claimAutoImportedFuncInvocation('jsx', '/jsx-runtime')
+ : this.claimAutoImportedFuncInvocation(
+ 'jsxDEV',
+ '/jsx-dev-runtime'
+ );
+ }
+ getCreateElementInvocationCode() {
+ if (this.isAutomaticRuntime)
+ return this.claimAutoImportedFuncInvocation('createElement', '');
+ {
+ let {jsxPragmaInfo: t} = this;
+ return `${
+ (this.importProcessor &&
+ this.importProcessor.getIdentifierReplacement(t.base)) ||
+ t.base
+ }${t.suffix}(`;
+ }
+ }
+ getFragmentCode() {
+ if (this.isAutomaticRuntime)
+ return this.claimAutoImportedName(
+ 'Fragment',
+ this.options.production ? '/jsx-runtime' : '/jsx-dev-runtime'
+ );
+ {
+ let {jsxPragmaInfo: t} = this;
+ return (
+ ((this.importProcessor &&
+ this.importProcessor.getIdentifierReplacement(
+ t.fragmentBase
+ )) ||
+ t.fragmentBase) + t.fragmentSuffix
+ );
+ }
+ }
+ claimAutoImportedFuncInvocation(t, s) {
+ let i = this.claimAutoImportedName(t, s);
+ return this.importProcessor ? `${i}.call(void 0, ` : `${i}(`;
+ }
+ claimAutoImportedName(t, s) {
+ if (this.importProcessor) {
+ let i = this.jsxImportSource + s;
+ return (
+ this.cjsAutomaticModuleNameResolutions[i] ||
+ (this.cjsAutomaticModuleNameResolutions[i] =
+ this.importProcessor.getFreeIdentifierForPath(i)),
+ `${this.cjsAutomaticModuleNameResolutions[i]}.${t}`
+ );
+ } else
+ return (
+ this.esmAutomaticImportNameResolutions[t] ||
+ (this.esmAutomaticImportNameResolutions[t] =
+ this.nameManager.claimFreeName(`_${t}`)),
+ this.esmAutomaticImportNameResolutions[t]
+ );
+ }
+ processTagIntro() {
+ let t = this.tokens.currentIndex() + 1;
+ for (
+ ;
+ this.tokens.tokens[t].isType ||
+ (!this.tokens.matches2AtIndex(
+ t - 1,
+ Re.TokenType.jsxName,
+ Re.TokenType.jsxName
+ ) &&
+ !this.tokens.matches2AtIndex(
+ t - 1,
+ Re.TokenType.greaterThan,
+ Re.TokenType.jsxName
+ ) &&
+ !this.tokens.matches1AtIndex(t, Re.TokenType.braceL) &&
+ !this.tokens.matches1AtIndex(t, Re.TokenType.jsxTagEnd) &&
+ !this.tokens.matches2AtIndex(
+ t,
+ Re.TokenType.slash,
+ Re.TokenType.jsxTagEnd
+ ));
+
+ )
+ t++;
+ if (t === this.tokens.currentIndex() + 1) {
+ let s = this.tokens.identifierName();
+ A1(s) && this.tokens.replaceToken(`'${s}'`);
+ }
+ for (; this.tokens.currentIndex() < t; )
+ this.rootTransformer.processToken();
+ }
+ processPropsObjectWithDevInfo(t) {
+ let s = this.options.production
+ ? ''
+ : `__self: this, __source: ${this.getDevSource(t)}`;
+ if (
+ !this.tokens.matches1(Re.TokenType.jsxName) &&
+ !this.tokens.matches1(Re.TokenType.braceL)
+ ) {
+ s
+ ? this.tokens.appendCode(`, {${s}}`)
+ : this.tokens.appendCode(', null');
+ return;
+ }
+ this.tokens.appendCode(', {'),
+ this.processProps(!1),
+ s ? this.tokens.appendCode(` ${s}}`) : this.tokens.appendCode('}');
+ }
+ processProps(t) {
+ let s = null;
+ for (;;) {
+ if (this.tokens.matches2(Re.TokenType.jsxName, Re.TokenType.eq)) {
+ let i = this.tokens.identifierName();
+ if (t && i === 'key') {
+ s !== null && this.tokens.appendCode(s.replace(/[^\n]/g, '')),
+ this.tokens.removeToken(),
+ this.tokens.removeToken();
+ let r = this.tokens.snapshot();
+ this.processPropValue(),
+ (s = this.tokens.dangerouslyGetAndRemoveCodeSinceSnapshot(r));
+ continue;
+ } else
+ this.processPropName(i),
+ this.tokens.replaceToken(': '),
+ this.processPropValue();
+ } else if (this.tokens.matches1(Re.TokenType.jsxName)) {
+ let i = this.tokens.identifierName();
+ this.processPropName(i), this.tokens.appendCode(': true');
+ } else if (this.tokens.matches1(Re.TokenType.braceL))
+ this.tokens.replaceToken(''),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.replaceToken('');
+ else break;
+ this.tokens.appendCode(',');
+ }
+ return s;
+ }
+ processPropName(t) {
+ t.includes('-')
+ ? this.tokens.replaceToken(`'${t}'`)
+ : this.tokens.copyToken();
+ }
+ processPropValue() {
+ this.tokens.matches1(Re.TokenType.braceL)
+ ? (this.tokens.replaceToken(''),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.replaceToken(''))
+ : this.tokens.matches1(Re.TokenType.jsxTagStart)
+ ? this.processJSXTag()
+ : this.processStringPropValue();
+ }
+ processStringPropValue() {
+ let t = this.tokens.currentToken(),
+ s = this.tokens.code.slice(t.start + 1, t.end - 1),
+ i = E1(s),
+ r = Zm(s);
+ this.tokens.replaceToken(r + i);
+ }
+ processAutomaticChildrenAndEndProps(t) {
+ t === Yr.JSXRole.StaticChildren
+ ? (this.tokens.appendCode(' children: ['),
+ this.processChildren(!1),
+ this.tokens.appendCode(']}'))
+ : (t === Yr.JSXRole.OneChild &&
+ this.tokens.appendCode(' children: '),
+ this.processChildren(!1),
+ this.tokens.appendCode('}'));
+ }
+ processChildren(t) {
+ let s = t;
+ for (;;) {
+ if (
+ this.tokens.matches2(Re.TokenType.jsxTagStart, Re.TokenType.slash)
+ )
+ return;
+ let i = !1;
+ if (this.tokens.matches1(Re.TokenType.braceL))
+ this.tokens.matches2(Re.TokenType.braceL, Re.TokenType.braceR)
+ ? (this.tokens.replaceToken(''), this.tokens.replaceToken(''))
+ : (this.tokens.replaceToken(s ? ', ' : ''),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.replaceToken(''),
+ (i = !0));
+ else if (this.tokens.matches1(Re.TokenType.jsxTagStart))
+ this.tokens.appendCode(s ? ', ' : ''),
+ this.processJSXTag(),
+ (i = !0);
+ else if (
+ this.tokens.matches1(Re.TokenType.jsxText) ||
+ this.tokens.matches1(Re.TokenType.jsxEmptyText)
+ )
+ i = this.processChildTextElement(s);
+ else
+ throw new Error('Unexpected token when processing JSX children.');
+ i && (s = !0);
+ }
+ }
+ processChildTextElement(t) {
+ let s = this.tokens.currentToken(),
+ i = this.tokens.code.slice(s.start, s.end),
+ r = E1(i),
+ a = Qm(i);
+ return a === '""'
+ ? (this.tokens.replaceToken(r), !1)
+ : (this.tokens.replaceToken(`${t ? ', ' : ''}${a}${r}`), !0);
+ }
+ getDevSource(t) {
+ return `{fileName: ${this.getFilenameVarName()}, ${t}}`;
+ }
+ getFilenameVarName() {
+ return (
+ this.filenameVarName ||
+ (this.filenameVarName =
+ this.nameManager.claimFreeName('_jsxFileName')),
+ this.filenameVarName
+ );
+ }
+ };
+ Jr.default = La;
+ function A1(e) {
+ let t = e.charCodeAt(0);
+ return t >= An.charCodes.lowercaseA && t <= An.charCodes.lowercaseZ;
+ }
+ Jr.startsWithLowerCase = A1;
+ function Qm(e) {
+ let t = '',
+ s = '',
+ i = !1,
+ r = !1;
+ for (let a = 0; a < e.length; a++) {
+ let u = e[a];
+ if (u === ' ' || u === ' ' || u === '\r') i || (s += u);
+ else if (
+ u ===
+ `
+`
+ )
+ (s = ''), (i = !0);
+ else {
+ if ((r && i && (t += ' '), (t += s), (s = ''), u === '&')) {
+ let {entity: d, newI: y} = P1(e, a + 1);
+ (a = y - 1), (t += d);
+ } else t += u;
+ (r = !0), (i = !1);
+ }
+ }
+ return i || (t += s), JSON.stringify(t);
+ }
+ function E1(e) {
+ let t = 0,
+ s = 0;
+ for (let i of e)
+ i ===
+ `
+`
+ ? (t++, (s = 0))
+ : i === ' ' && s++;
+ return (
+ `
+`.repeat(t) + ' '.repeat(s)
+ );
+ }
+ function Zm(e) {
+ let t = '';
+ for (let s = 0; s < e.length; s++) {
+ let i = e[s];
+ if (
+ i ===
+ `
+`
+ )
+ if (/\s/.test(e[s + 1]))
+ for (t += ' '; s < e.length && /\s/.test(e[s + 1]); ) s++;
+ else
+ t += `
+`;
+ else if (i === '&') {
+ let {entity: r, newI: a} = P1(e, s + 1);
+ (t += r), (s = a - 1);
+ } else t += i;
+ }
+ return JSON.stringify(t);
+ }
+ function P1(e, t) {
+ let s = '',
+ i = 0,
+ r,
+ a = t;
+ if (e[a] === '#') {
+ let u = 10;
+ a++;
+ let d;
+ if (e[a] === 'x')
+ for (u = 16, a++, d = a; a < e.length && ty(e.charCodeAt(a)); ) a++;
+ else for (d = a; a < e.length && ey(e.charCodeAt(a)); ) a++;
+ if (e[a] === ';') {
+ let y = e.slice(d, a);
+ y && (a++, (r = String.fromCodePoint(parseInt(y, u))));
+ }
+ } else
+ for (; a < e.length && i++ < 10; ) {
+ let u = e[a];
+ if ((a++, u === ';')) {
+ r = Gm.default.get(s);
+ break;
+ }
+ s += u;
+ }
+ return r ? {entity: r, newI: a} : {entity: '&', newI: t};
+ }
+ function ey(e) {
+ return e >= An.charCodes.digit0 && e <= An.charCodes.digit9;
+ }
+ function ty(e) {
+ return (
+ (e >= An.charCodes.digit0 && e <= An.charCodes.digit9) ||
+ (e >= An.charCodes.lowercaseA && e <= An.charCodes.lowercaseF) ||
+ (e >= An.charCodes.uppercaseA && e <= An.charCodes.uppercaseF)
+ );
+ }
+ });
+ var Fa = Z((Ma) => {
+ 'use strict';
+ Object.defineProperty(Ma, '__esModule', {value: !0});
+ function ny(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Qr = xt(),
+ ui = be(),
+ sy = Da(),
+ iy = Pa(),
+ ry = ny(iy);
+ function oy(e, t) {
+ let s = ry.default.call(void 0, t),
+ i = new Set();
+ for (let r = 0; r < e.tokens.length; r++) {
+ let a = e.tokens[r];
+ if (
+ (a.type === ui.TokenType.name &&
+ !a.isType &&
+ (a.identifierRole === Qr.IdentifierRole.Access ||
+ a.identifierRole === Qr.IdentifierRole.ObjectShorthand ||
+ a.identifierRole === Qr.IdentifierRole.ExportAccess) &&
+ !a.shadowsGlobal &&
+ i.add(e.identifierNameForToken(a)),
+ a.type === ui.TokenType.jsxTagStart && i.add(s.base),
+ a.type === ui.TokenType.jsxTagStart &&
+ r + 1 < e.tokens.length &&
+ e.tokens[r + 1].type === ui.TokenType.jsxTagEnd &&
+ (i.add(s.base), i.add(s.fragmentBase)),
+ a.type === ui.TokenType.jsxName &&
+ a.identifierRole === Qr.IdentifierRole.Access)
+ ) {
+ let u = e.identifierNameForToken(a);
+ (!sy.startsWithLowerCase.call(void 0, u) ||
+ e.tokens[r + 1].type === ui.TokenType.dot) &&
+ i.add(e.identifierNameForToken(a));
+ }
+ }
+ return i;
+ }
+ Ma.getNonTypeIdentifiers = oy;
+ });
+ var N1 = Z((Va) => {
+ 'use strict';
+ Object.defineProperty(Va, '__esModule', {value: !0});
+ function ay(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var ly = xt(),
+ Zr = It(),
+ me = be(),
+ cy = Wi(),
+ uy = ay(cy),
+ py = Fa(),
+ Ba = class e {
+ __init() {
+ this.nonTypeIdentifiers = new Set();
+ }
+ __init2() {
+ this.importInfoByPath = new Map();
+ }
+ __init3() {
+ this.importsToReplace = new Map();
+ }
+ __init4() {
+ this.identifierReplacements = new Map();
+ }
+ __init5() {
+ this.exportBindingsByLocalName = new Map();
+ }
+ constructor(t, s, i, r, a, u) {
+ (this.nameManager = t),
+ (this.tokens = s),
+ (this.enableLegacyTypeScriptModuleInterop = i),
+ (this.options = r),
+ (this.isTypeScriptTransformEnabled = a),
+ (this.helperManager = u),
+ e.prototype.__init.call(this),
+ e.prototype.__init2.call(this),
+ e.prototype.__init3.call(this),
+ e.prototype.__init4.call(this),
+ e.prototype.__init5.call(this);
+ }
+ preprocessTokens() {
+ for (let t = 0; t < this.tokens.tokens.length; t++)
+ this.tokens.matches1AtIndex(t, me.TokenType._import) &&
+ !this.tokens.matches3AtIndex(
+ t,
+ me.TokenType._import,
+ me.TokenType.name,
+ me.TokenType.eq
+ ) &&
+ this.preprocessImportAtIndex(t),
+ this.tokens.matches1AtIndex(t, me.TokenType._export) &&
+ !this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType.eq
+ ) &&
+ this.preprocessExportAtIndex(t);
+ this.generateImportReplacements();
+ }
+ pruneTypeOnlyImports() {
+ this.nonTypeIdentifiers = py.getNonTypeIdentifiers.call(
+ void 0,
+ this.tokens,
+ this.options
+ );
+ for (let [t, s] of this.importInfoByPath.entries()) {
+ if (
+ s.hasBareImport ||
+ s.hasStarExport ||
+ s.exportStarNames.length > 0 ||
+ s.namedExports.length > 0
+ )
+ continue;
+ [
+ ...s.defaultNames,
+ ...s.wildcardNames,
+ ...s.namedImports.map(({localName: r}) => r),
+ ].every((r) => this.isTypeName(r)) &&
+ this.importsToReplace.set(t, '');
+ }
+ }
+ isTypeName(t) {
+ return (
+ this.isTypeScriptTransformEnabled && !this.nonTypeIdentifiers.has(t)
+ );
+ }
+ generateImportReplacements() {
+ for (let [t, s] of this.importInfoByPath.entries()) {
+ let {
+ defaultNames: i,
+ wildcardNames: r,
+ namedImports: a,
+ namedExports: u,
+ exportStarNames: d,
+ hasStarExport: y,
+ } = s;
+ if (
+ i.length === 0 &&
+ r.length === 0 &&
+ a.length === 0 &&
+ u.length === 0 &&
+ d.length === 0 &&
+ !y
+ ) {
+ this.importsToReplace.set(t, `require('${t}');`);
+ continue;
+ }
+ let g = this.getFreeIdentifierForPath(t),
+ L;
+ this.enableLegacyTypeScriptModuleInterop
+ ? (L = g)
+ : (L = r.length > 0 ? r[0] : this.getFreeIdentifierForPath(t));
+ let p = `var ${g} = require('${t}');`;
+ if (r.length > 0)
+ for (let h of r) {
+ let T = this.enableLegacyTypeScriptModuleInterop
+ ? g
+ : `${this.helperManager.getHelperName(
+ 'interopRequireWildcard'
+ )}(${g})`;
+ p += ` var ${h} = ${T};`;
+ }
+ else
+ d.length > 0 && L !== g
+ ? (p += ` var ${L} = ${this.helperManager.getHelperName(
+ 'interopRequireWildcard'
+ )}(${g});`)
+ : i.length > 0 &&
+ L !== g &&
+ (p += ` var ${L} = ${this.helperManager.getHelperName(
+ 'interopRequireDefault'
+ )}(${g});`);
+ for (let {importedName: h, localName: T} of u)
+ p += ` ${this.helperManager.getHelperName(
+ 'createNamedExportFrom'
+ )}(${g}, '${T}', '${h}');`;
+ for (let h of d) p += ` exports.${h} = ${L};`;
+ y &&
+ (p += ` ${this.helperManager.getHelperName(
+ 'createStarExport'
+ )}(${g});`),
+ this.importsToReplace.set(t, p);
+ for (let h of i) this.identifierReplacements.set(h, `${L}.default`);
+ for (let {importedName: h, localName: T} of a)
+ this.identifierReplacements.set(T, `${g}.${h}`);
+ }
+ }
+ getFreeIdentifierForPath(t) {
+ let s = t.split('/'),
+ r = s[s.length - 1].replace(/\W/g, '');
+ return this.nameManager.claimFreeName(`_${r}`);
+ }
+ preprocessImportAtIndex(t) {
+ let s = [],
+ i = [],
+ r = [];
+ if (
+ (t++,
+ ((this.tokens.matchesContextualAtIndex(
+ t,
+ Zr.ContextualKeyword._type
+ ) ||
+ this.tokens.matches1AtIndex(t, me.TokenType._typeof)) &&
+ !this.tokens.matches1AtIndex(t + 1, me.TokenType.comma) &&
+ !this.tokens.matchesContextualAtIndex(
+ t + 1,
+ Zr.ContextualKeyword._from
+ )) ||
+ this.tokens.matches1AtIndex(t, me.TokenType.parenL))
+ )
+ return;
+ if (
+ (this.tokens.matches1AtIndex(t, me.TokenType.name) &&
+ (s.push(this.tokens.identifierNameAtIndex(t)),
+ t++,
+ this.tokens.matches1AtIndex(t, me.TokenType.comma) && t++),
+ this.tokens.matches1AtIndex(t, me.TokenType.star) &&
+ ((t += 2), i.push(this.tokens.identifierNameAtIndex(t)), t++),
+ this.tokens.matches1AtIndex(t, me.TokenType.braceL))
+ ) {
+ let d = this.getNamedImports(t + 1);
+ t = d.newIndex;
+ for (let y of d.namedImports)
+ y.importedName === 'default' ? s.push(y.localName) : r.push(y);
+ }
+ if (
+ (this.tokens.matchesContextualAtIndex(
+ t,
+ Zr.ContextualKeyword._from
+ ) && t++,
+ !this.tokens.matches1AtIndex(t, me.TokenType.string))
+ )
+ throw new Error(
+ 'Expected string token at the end of import statement.'
+ );
+ let a = this.tokens.stringValueAtIndex(t),
+ u = this.getImportInfo(a);
+ u.defaultNames.push(...s),
+ u.wildcardNames.push(...i),
+ u.namedImports.push(...r),
+ s.length === 0 &&
+ i.length === 0 &&
+ r.length === 0 &&
+ (u.hasBareImport = !0);
+ }
+ preprocessExportAtIndex(t) {
+ if (
+ this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType._var
+ ) ||
+ this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType._let
+ ) ||
+ this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType._const
+ )
+ )
+ this.preprocessVarExportAtIndex(t);
+ else if (
+ this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType._function
+ ) ||
+ this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType._class
+ )
+ ) {
+ let s = this.tokens.identifierNameAtIndex(t + 2);
+ this.addExportBinding(s, s);
+ } else if (
+ this.tokens.matches3AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType.name,
+ me.TokenType._function
+ )
+ ) {
+ let s = this.tokens.identifierNameAtIndex(t + 3);
+ this.addExportBinding(s, s);
+ } else
+ this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType.braceL
+ )
+ ? this.preprocessNamedExportAtIndex(t)
+ : this.tokens.matches2AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType.star
+ ) && this.preprocessExportStarAtIndex(t);
+ }
+ preprocessVarExportAtIndex(t) {
+ let s = 0;
+ for (let i = t + 2; ; i++)
+ if (
+ this.tokens.matches1AtIndex(i, me.TokenType.braceL) ||
+ this.tokens.matches1AtIndex(i, me.TokenType.dollarBraceL) ||
+ this.tokens.matches1AtIndex(i, me.TokenType.bracketL)
+ )
+ s++;
+ else if (
+ this.tokens.matches1AtIndex(i, me.TokenType.braceR) ||
+ this.tokens.matches1AtIndex(i, me.TokenType.bracketR)
+ )
+ s--;
+ else {
+ if (s === 0 && !this.tokens.matches1AtIndex(i, me.TokenType.name))
+ break;
+ if (this.tokens.matches1AtIndex(1, me.TokenType.eq)) {
+ let r = this.tokens.currentToken().rhsEndIndex;
+ if (r == null)
+ throw new Error('Expected = token with an end index.');
+ i = r - 1;
+ } else {
+ let r = this.tokens.tokens[i];
+ if (ly.isDeclaration.call(void 0, r)) {
+ let a = this.tokens.identifierNameAtIndex(i);
+ this.identifierReplacements.set(a, `exports.${a}`);
+ }
+ }
+ }
+ }
+ preprocessNamedExportAtIndex(t) {
+ t += 2;
+ let {newIndex: s, namedImports: i} = this.getNamedImports(t);
+ if (
+ ((t = s),
+ this.tokens.matchesContextualAtIndex(t, Zr.ContextualKeyword._from))
+ )
+ t++;
+ else {
+ for (let {importedName: u, localName: d} of i)
+ this.addExportBinding(u, d);
+ return;
+ }
+ if (!this.tokens.matches1AtIndex(t, me.TokenType.string))
+ throw new Error(
+ 'Expected string token at the end of import statement.'
+ );
+ let r = this.tokens.stringValueAtIndex(t);
+ this.getImportInfo(r).namedExports.push(...i);
+ }
+ preprocessExportStarAtIndex(t) {
+ let s = null;
+ if (
+ (this.tokens.matches3AtIndex(
+ t,
+ me.TokenType._export,
+ me.TokenType.star,
+ me.TokenType._as
+ )
+ ? ((t += 3), (s = this.tokens.identifierNameAtIndex(t)), (t += 2))
+ : (t += 3),
+ !this.tokens.matches1AtIndex(t, me.TokenType.string))
+ )
+ throw new Error(
+ 'Expected string token at the end of star export statement.'
+ );
+ let i = this.tokens.stringValueAtIndex(t),
+ r = this.getImportInfo(i);
+ s !== null ? r.exportStarNames.push(s) : (r.hasStarExport = !0);
+ }
+ getNamedImports(t) {
+ let s = [];
+ for (;;) {
+ if (this.tokens.matches1AtIndex(t, me.TokenType.braceR)) {
+ t++;
+ break;
+ }
+ let i = uy.default.call(void 0, this.tokens, t);
+ if (
+ ((t = i.endIndex),
+ i.isType ||
+ s.push({importedName: i.leftName, localName: i.rightName}),
+ this.tokens.matches2AtIndex(
+ t,
+ me.TokenType.comma,
+ me.TokenType.braceR
+ ))
+ ) {
+ t += 2;
+ break;
+ } else if (this.tokens.matches1AtIndex(t, me.TokenType.braceR)) {
+ t++;
+ break;
+ } else if (this.tokens.matches1AtIndex(t, me.TokenType.comma)) t++;
+ else
+ throw new Error(
+ `Unexpected token: ${JSON.stringify(this.tokens.tokens[t])}`
+ );
+ }
+ return {newIndex: t, namedImports: s};
+ }
+ getImportInfo(t) {
+ let s = this.importInfoByPath.get(t);
+ if (s) return s;
+ let i = {
+ defaultNames: [],
+ wildcardNames: [],
+ namedImports: [],
+ namedExports: [],
+ hasBareImport: !1,
+ exportStarNames: [],
+ hasStarExport: !1,
+ };
+ return this.importInfoByPath.set(t, i), i;
+ }
+ addExportBinding(t, s) {
+ this.exportBindingsByLocalName.has(t) ||
+ this.exportBindingsByLocalName.set(t, []),
+ this.exportBindingsByLocalName.get(t).push(s);
+ }
+ claimImportCode(t) {
+ let s = this.importsToReplace.get(t);
+ return this.importsToReplace.set(t, ''), s || '';
+ }
+ getIdentifierReplacement(t) {
+ return this.identifierReplacements.get(t) || null;
+ }
+ resolveExportBinding(t) {
+ let s = this.exportBindingsByLocalName.get(t);
+ return !s || s.length === 0
+ ? null
+ : s.map((i) => `exports.${i}`).join(' = ');
+ }
+ getGlobalNames() {
+ return new Set([
+ ...this.identifierReplacements.keys(),
+ ...this.exportBindingsByLocalName.keys(),
+ ]);
+ }
+ };
+ Va.default = Ba;
+ });
+ var L1 = Z((eo, R1) => {
+ (function (e, t) {
+ typeof eo == 'object' && typeof R1 < 'u'
+ ? t(eo)
+ : typeof define == 'function' && define.amd
+ ? define(['exports'], t)
+ : ((e = typeof globalThis < 'u' ? globalThis : e || self),
+ t((e.setArray = {})));
+ })(eo, function (e) {
+ 'use strict';
+ (e.get = void 0), (e.put = void 0), (e.pop = void 0);
+ class t {
+ constructor() {
+ (this._indexes = {__proto__: null}), (this.array = []);
+ }
+ }
+ (e.get = (s, i) => s._indexes[i]),
+ (e.put = (s, i) => {
+ let r = e.get(s, i);
+ if (r !== void 0) return r;
+ let {array: a, _indexes: u} = s;
+ return (u[i] = a.push(i) - 1);
+ }),
+ (e.pop = (s) => {
+ let {array: i, _indexes: r} = s;
+ if (i.length === 0) return;
+ let a = i.pop();
+ r[a] = void 0;
+ }),
+ (e.SetArray = t),
+ Object.defineProperty(e, '__esModule', {value: !0});
+ });
+ });
+ var ja = Z((to, O1) => {
+ (function (e, t) {
+ typeof to == 'object' && typeof O1 < 'u'
+ ? t(to)
+ : typeof define == 'function' && define.amd
+ ? define(['exports'], t)
+ : ((e = typeof globalThis < 'u' ? globalThis : e || self),
+ t((e.sourcemapCodec = {})));
+ })(to, function (e) {
+ 'use strict';
+ let i =
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
+ r = new Uint8Array(64),
+ a = new Uint8Array(128);
+ for (let w = 0; w < i.length; w++) {
+ let S = i.charCodeAt(w);
+ (r[w] = S), (a[S] = w);
+ }
+ let u =
+ typeof TextDecoder < 'u'
+ ? new TextDecoder()
+ : typeof Buffer < 'u'
+ ? {
+ decode(w) {
+ return Buffer.from(
+ w.buffer,
+ w.byteOffset,
+ w.byteLength
+ ).toString();
+ },
+ }
+ : {
+ decode(w) {
+ let S = '';
+ for (let A = 0; A < w.length; A++)
+ S += String.fromCharCode(w[A]);
+ return S;
+ },
+ };
+ function d(w) {
+ let S = new Int32Array(5),
+ A = [],
+ U = 0;
+ do {
+ let M = y(w, U),
+ c = [],
+ R = !0,
+ W = 0;
+ S[0] = 0;
+ for (let X = U; X < M; X++) {
+ let ie;
+ X = g(w, X, S, 0);
+ let pe = S[0];
+ pe < W && (R = !1),
+ (W = pe),
+ L(w, X, M)
+ ? ((X = g(w, X, S, 1)),
+ (X = g(w, X, S, 2)),
+ (X = g(w, X, S, 3)),
+ L(w, X, M)
+ ? ((X = g(w, X, S, 4)), (ie = [pe, S[1], S[2], S[3], S[4]]))
+ : (ie = [pe, S[1], S[2], S[3]]))
+ : (ie = [pe]),
+ c.push(ie);
+ }
+ R || p(c), A.push(c), (U = M + 1);
+ } while (U <= w.length);
+ return A;
+ }
+ function y(w, S) {
+ let A = w.indexOf(';', S);
+ return A === -1 ? w.length : A;
+ }
+ function g(w, S, A, U) {
+ let M = 0,
+ c = 0,
+ R = 0;
+ do {
+ let X = w.charCodeAt(S++);
+ (R = a[X]), (M |= (R & 31) << c), (c += 5);
+ } while (R & 32);
+ let W = M & 1;
+ return (M >>>= 1), W && (M = -2147483648 | -M), (A[U] += M), S;
+ }
+ function L(w, S, A) {
+ return S >= A ? !1 : w.charCodeAt(S) !== 44;
+ }
+ function p(w) {
+ w.sort(h);
+ }
+ function h(w, S) {
+ return w[0] - S[0];
+ }
+ function T(w) {
+ let S = new Int32Array(5),
+ A = 1024 * 16,
+ U = A - 36,
+ M = new Uint8Array(A),
+ c = M.subarray(0, U),
+ R = 0,
+ W = '';
+ for (let X = 0; X < w.length; X++) {
+ let ie = w[X];
+ if (
+ (X > 0 && (R === A && ((W += u.decode(M)), (R = 0)), (M[R++] = 59)),
+ ie.length !== 0)
+ ) {
+ S[0] = 0;
+ for (let pe = 0; pe < ie.length; pe++) {
+ let ae = ie[pe];
+ R > U && ((W += u.decode(c)), M.copyWithin(0, U, R), (R -= U)),
+ pe > 0 && (M[R++] = 44),
+ (R = x(M, R, S, ae, 0)),
+ ae.length !== 1 &&
+ ((R = x(M, R, S, ae, 1)),
+ (R = x(M, R, S, ae, 2)),
+ (R = x(M, R, S, ae, 3)),
+ ae.length !== 4 && (R = x(M, R, S, ae, 4)));
+ }
+ }
+ }
+ return W + u.decode(M.subarray(0, R));
+ }
+ function x(w, S, A, U, M) {
+ let c = U[M],
+ R = c - A[M];
+ (A[M] = c), (R = R < 0 ? (-R << 1) | 1 : R << 1);
+ do {
+ let W = R & 31;
+ (R >>>= 5), R > 0 && (W |= 32), (w[S++] = r[W]);
+ } while (R > 0);
+ return S;
+ }
+ (e.decode = d),
+ (e.encode = T),
+ Object.defineProperty(e, '__esModule', {value: !0});
+ });
+ });
+ var D1 = Z(($a, qa) => {
+ (function (e, t) {
+ typeof $a == 'object' && typeof qa < 'u'
+ ? (qa.exports = t())
+ : typeof define == 'function' && define.amd
+ ? define(t)
+ : ((e = typeof globalThis < 'u' ? globalThis : e || self),
+ (e.resolveURI = t()));
+ })($a, function () {
+ 'use strict';
+ let e = /^[\w+.-]+:\/\//,
+ t =
+ /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,
+ s = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
+ var i;
+ (function (A) {
+ (A[(A.Empty = 1)] = 'Empty'),
+ (A[(A.Hash = 2)] = 'Hash'),
+ (A[(A.Query = 3)] = 'Query'),
+ (A[(A.RelativePath = 4)] = 'RelativePath'),
+ (A[(A.AbsolutePath = 5)] = 'AbsolutePath'),
+ (A[(A.SchemeRelative = 6)] = 'SchemeRelative'),
+ (A[(A.Absolute = 7)] = 'Absolute');
+ })(i || (i = {}));
+ function r(A) {
+ return e.test(A);
+ }
+ function a(A) {
+ return A.startsWith('//');
+ }
+ function u(A) {
+ return A.startsWith('/');
+ }
+ function d(A) {
+ return A.startsWith('file:');
+ }
+ function y(A) {
+ return /^[.?#]/.test(A);
+ }
+ function g(A) {
+ let U = t.exec(A);
+ return p(
+ U[1],
+ U[2] || '',
+ U[3],
+ U[4] || '',
+ U[5] || '/',
+ U[6] || '',
+ U[7] || ''
+ );
+ }
+ function L(A) {
+ let U = s.exec(A),
+ M = U[2];
+ return p(
+ 'file:',
+ '',
+ U[1] || '',
+ '',
+ u(M) ? M : '/' + M,
+ U[3] || '',
+ U[4] || ''
+ );
+ }
+ function p(A, U, M, c, R, W, X) {
+ return {
+ scheme: A,
+ user: U,
+ host: M,
+ port: c,
+ path: R,
+ query: W,
+ hash: X,
+ type: i.Absolute,
+ };
+ }
+ function h(A) {
+ if (a(A)) {
+ let M = g('http:' + A);
+ return (M.scheme = ''), (M.type = i.SchemeRelative), M;
+ }
+ if (u(A)) {
+ let M = g('http://foo.com' + A);
+ return (M.scheme = ''), (M.host = ''), (M.type = i.AbsolutePath), M;
+ }
+ if (d(A)) return L(A);
+ if (r(A)) return g(A);
+ let U = g('http://foo.com/' + A);
+ return (
+ (U.scheme = ''),
+ (U.host = ''),
+ (U.type = A
+ ? A.startsWith('?')
+ ? i.Query
+ : A.startsWith('#')
+ ? i.Hash
+ : i.RelativePath
+ : i.Empty),
+ U
+ );
+ }
+ function T(A) {
+ if (A.endsWith('/..')) return A;
+ let U = A.lastIndexOf('/');
+ return A.slice(0, U + 1);
+ }
+ function x(A, U) {
+ w(U, U.type),
+ A.path === '/' ? (A.path = U.path) : (A.path = T(U.path) + A.path);
+ }
+ function w(A, U) {
+ let M = U <= i.RelativePath,
+ c = A.path.split('/'),
+ R = 1,
+ W = 0,
+ X = !1;
+ for (let pe = 1; pe < c.length; pe++) {
+ let ae = c[pe];
+ if (!ae) {
+ X = !0;
+ continue;
+ }
+ if (((X = !1), ae !== '.')) {
+ if (ae === '..') {
+ W ? ((X = !0), W--, R--) : M && (c[R++] = ae);
+ continue;
+ }
+ (c[R++] = ae), W++;
+ }
+ }
+ let ie = '';
+ for (let pe = 1; pe < R; pe++) ie += '/' + c[pe];
+ (!ie || (X && !ie.endsWith('/..'))) && (ie += '/'), (A.path = ie);
+ }
+ function S(A, U) {
+ if (!A && !U) return '';
+ let M = h(A),
+ c = M.type;
+ if (U && c !== i.Absolute) {
+ let W = h(U),
+ X = W.type;
+ switch (c) {
+ case i.Empty:
+ M.hash = W.hash;
+ case i.Hash:
+ M.query = W.query;
+ case i.Query:
+ case i.RelativePath:
+ x(M, W);
+ case i.AbsolutePath:
+ (M.user = W.user), (M.host = W.host), (M.port = W.port);
+ case i.SchemeRelative:
+ M.scheme = W.scheme;
+ }
+ X > c && (c = X);
+ }
+ w(M, c);
+ let R = M.query + M.hash;
+ switch (c) {
+ case i.Hash:
+ case i.Query:
+ return R;
+ case i.RelativePath: {
+ let W = M.path.slice(1);
+ return W ? (y(U || A) && !y(W) ? './' + W + R : W + R) : R || '.';
+ }
+ case i.AbsolutePath:
+ return M.path + R;
+ default:
+ return M.scheme + '//' + M.user + M.host + M.port + M.path + R;
+ }
+ }
+ return S;
+ });
+ });
+ var F1 = Z((no, M1) => {
+ (function (e, t) {
+ typeof no == 'object' && typeof M1 < 'u'
+ ? t(no, ja(), D1())
+ : typeof define == 'function' && define.amd
+ ? define(
+ [
+ 'exports',
+ '@jridgewell/sourcemap-codec',
+ '@jridgewell/resolve-uri',
+ ],
+ t
+ )
+ : ((e = typeof globalThis < 'u' ? globalThis : e || self),
+ t((e.traceMapping = {}), e.sourcemapCodec, e.resolveURI));
+ })(no, function (e, t, s) {
+ 'use strict';
+ function i(V) {
+ return V && typeof V == 'object' && 'default' in V ? V : {default: V};
+ }
+ var r = i(s);
+ function a(V, G) {
+ return G && !G.endsWith('/') && (G += '/'), r.default(V, G);
+ }
+ function u(V) {
+ if (!V) return '';
+ let G = V.lastIndexOf('/');
+ return V.slice(0, G + 1);
+ }
+ let d = 0,
+ y = 1,
+ g = 2,
+ L = 3,
+ p = 4,
+ h = 1,
+ T = 2;
+ function x(V, G) {
+ let J = w(V, 0);
+ if (J === V.length) return V;
+ G || (V = V.slice());
+ for (let re = J; re < V.length; re = w(V, re + 1)) V[re] = A(V[re], G);
+ return V;
+ }
+ function w(V, G) {
+ for (let J = G; J < V.length; J++) if (!S(V[J])) return J;
+ return V.length;
+ }
+ function S(V) {
+ for (let G = 1; G < V.length; G++) if (V[G][d] < V[G - 1][d]) return !1;
+ return !0;
+ }
+ function A(V, G) {
+ return G || (V = V.slice()), V.sort(U);
+ }
+ function U(V, G) {
+ return V[d] - G[d];
+ }
+ let M = !1;
+ function c(V, G, J, re) {
+ for (; J <= re; ) {
+ let ve = J + ((re - J) >> 1),
+ he = V[ve][d] - G;
+ if (he === 0) return (M = !0), ve;
+ he < 0 ? (J = ve + 1) : (re = ve - 1);
+ }
+ return (M = !1), J - 1;
+ }
+ function R(V, G, J) {
+ for (let re = J + 1; re < V.length && V[re][d] === G; J = re++);
+ return J;
+ }
+ function W(V, G, J) {
+ for (let re = J - 1; re >= 0 && V[re][d] === G; J = re--);
+ return J;
+ }
+ function X() {
+ return {lastKey: -1, lastNeedle: -1, lastIndex: -1};
+ }
+ function ie(V, G, J, re) {
+ let {lastKey: ve, lastNeedle: he, lastIndex: Ie} = J,
+ Ee = 0,
+ Le = V.length - 1;
+ if (re === ve) {
+ if (G === he) return (M = Ie !== -1 && V[Ie][d] === G), Ie;
+ G >= he ? (Ee = Ie === -1 ? 0 : Ie) : (Le = Ie);
+ }
+ return (
+ (J.lastKey = re), (J.lastNeedle = G), (J.lastIndex = c(V, G, Ee, Le))
+ );
+ }
+ function pe(V, G) {
+ let J = G.map(He);
+ for (let re = 0; re < V.length; re++) {
+ let ve = V[re];
+ for (let he = 0; he < ve.length; he++) {
+ let Ie = ve[he];
+ if (Ie.length === 1) continue;
+ let Ee = Ie[y],
+ Le = Ie[g],
+ Xe = Ie[L],
+ We = J[Ee],
+ Ke = We[Le] || (We[Le] = []),
+ ut = G[Ee],
+ pt = R(Ke, Xe, ie(Ke, Xe, ut, Le));
+ ae(Ke, (ut.lastIndex = pt + 1), [Xe, re, Ie[d]]);
+ }
+ }
+ return J;
+ }
+ function ae(V, G, J) {
+ for (let re = V.length; re > G; re--) V[re] = V[re - 1];
+ V[G] = J;
+ }
+ function He() {
+ return {__proto__: null};
+ }
+ let qe = function (V, G) {
+ let J = typeof V == 'string' ? JSON.parse(V) : V;
+ if (!('sections' in J)) return new wt(J, G);
+ let re = [],
+ ve = [],
+ he = [],
+ Ie = [];
+ Bt(J, G, re, ve, he, Ie, 0, 0, 1 / 0, 1 / 0);
+ let Ee = {
+ version: 3,
+ file: J.file,
+ names: Ie,
+ sources: ve,
+ sourcesContent: he,
+ mappings: re,
+ };
+ return e.presortedDecodedMap(Ee);
+ };
+ function Bt(V, G, J, re, ve, he, Ie, Ee, Le, Xe) {
+ let {sections: We} = V;
+ for (let Ke = 0; Ke < We.length; Ke++) {
+ let {map: ut, offset: pt} = We[Ke],
+ bt = Le,
+ yt = Xe;
+ if (Ke + 1 < We.length) {
+ let vt = We[Ke + 1].offset;
+ (bt = Math.min(Le, Ie + vt.line)),
+ bt === Le
+ ? (yt = Math.min(Xe, Ee + vt.column))
+ : bt < Le && (yt = Ee + vt.column);
+ }
+ mt(ut, G, J, re, ve, he, Ie + pt.line, Ee + pt.column, bt, yt);
+ }
+ }
+ function mt(V, G, J, re, ve, he, Ie, Ee, Le, Xe) {
+ if ('sections' in V) return Bt(...arguments);
+ let We = new wt(V, G),
+ Ke = re.length,
+ ut = he.length,
+ pt = e.decodedMappings(We),
+ {resolvedSources: bt, sourcesContent: yt} = We;
+ if ((kt(re, bt), kt(he, We.names), yt)) kt(ve, yt);
+ else for (let vt = 0; vt < bt.length; vt++) ve.push(null);
+ for (let vt = 0; vt < pt.length; vt++) {
+ let bn = Ie + vt;
+ if (bn > Le) return;
+ let Dn = At(J, bn),
+ Ge = vt === 0 ? Ee : 0,
+ St = pt[vt];
+ for (let ot = 0; ot < St.length; ot++) {
+ let zt = St[ot],
+ Xt = Ge + zt[d];
+ if (bn === Le && Xt >= Xe) return;
+ if (zt.length === 1) {
+ Dn.push([Xt]);
+ continue;
+ }
+ let te = Ke + zt[y],
+ Cn = zt[g],
+ Zn = zt[L];
+ Dn.push(
+ zt.length === 4 ? [Xt, te, Cn, Zn] : [Xt, te, Cn, Zn, ut + zt[p]]
+ );
+ }
+ }
+ }
+ function kt(V, G) {
+ for (let J = 0; J < G.length; J++) V.push(G[J]);
+ }
+ function At(V, G) {
+ for (let J = V.length; J <= G; J++) V[J] = [];
+ return V[G];
+ }
+ let tt = '`line` must be greater than 0 (lines start at line 1)',
+ nt =
+ '`column` must be greater than or equal to 0 (columns start at column 0)',
+ _t = -1,
+ ct = 1;
+ (e.encodedMappings = void 0),
+ (e.decodedMappings = void 0),
+ (e.traceSegment = void 0),
+ (e.originalPositionFor = void 0),
+ (e.generatedPositionFor = void 0),
+ (e.eachMapping = void 0),
+ (e.sourceContentFor = void 0),
+ (e.presortedDecodedMap = void 0),
+ (e.decodedMap = void 0),
+ (e.encodedMap = void 0);
+ class wt {
+ constructor(G, J) {
+ let re = typeof G == 'string';
+ if (!re && G._decodedMemo) return G;
+ let ve = re ? JSON.parse(G) : G,
+ {
+ version: he,
+ file: Ie,
+ names: Ee,
+ sourceRoot: Le,
+ sources: Xe,
+ sourcesContent: We,
+ } = ve;
+ (this.version = he),
+ (this.file = Ie),
+ (this.names = Ee),
+ (this.sourceRoot = Le),
+ (this.sources = Xe),
+ (this.sourcesContent = We);
+ let Ke = a(Le || '', u(J));
+ this.resolvedSources = Xe.map((pt) => a(pt || '', Ke));
+ let {mappings: ut} = ve;
+ typeof ut == 'string'
+ ? ((this._encoded = ut), (this._decoded = void 0))
+ : ((this._encoded = void 0), (this._decoded = x(ut, re))),
+ (this._decodedMemo = X()),
+ (this._bySources = void 0),
+ (this._bySourceMemos = void 0);
+ }
+ }
+ (e.encodedMappings = (V) => {
+ var G;
+ return (G = V._encoded) !== null && G !== void 0
+ ? G
+ : (V._encoded = t.encode(V._decoded));
+ }),
+ (e.decodedMappings = (V) =>
+ V._decoded || (V._decoded = t.decode(V._encoded))),
+ (e.traceSegment = (V, G, J) => {
+ let re = e.decodedMappings(V);
+ return G >= re.length ? null : Tn(re[G], V._decodedMemo, G, J, ct);
+ }),
+ (e.originalPositionFor = (V, {line: G, column: J, bias: re}) => {
+ if ((G--, G < 0)) throw new Error(tt);
+ if (J < 0) throw new Error(nt);
+ let ve = e.decodedMappings(V);
+ if (G >= ve.length) return Pt(null, null, null, null);
+ let he = Tn(ve[G], V._decodedMemo, G, J, re || ct);
+ if (he == null || he.length == 1) return Pt(null, null, null, null);
+ let {names: Ie, resolvedSources: Ee} = V;
+ return Pt(
+ Ee[he[y]],
+ he[g] + 1,
+ he[L],
+ he.length === 5 ? Ie[he[p]] : null
+ );
+ }),
+ (e.generatedPositionFor = (
+ V,
+ {source: G, line: J, column: re, bias: ve}
+ ) => {
+ if ((J--, J < 0)) throw new Error(tt);
+ if (re < 0) throw new Error(nt);
+ let {sources: he, resolvedSources: Ie} = V,
+ Ee = he.indexOf(G);
+ if ((Ee === -1 && (Ee = Ie.indexOf(G)), Ee === -1))
+ return qt(null, null);
+ let Le =
+ V._bySources ||
+ (V._bySources = pe(
+ e.decodedMappings(V),
+ (V._bySourceMemos = he.map(X))
+ )),
+ Xe = V._bySourceMemos,
+ We = Le[Ee][J];
+ if (We == null) return qt(null, null);
+ let Ke = Tn(We, Xe[Ee], J, re, ve || ct);
+ return Ke == null ? qt(null, null) : qt(Ke[h] + 1, Ke[T]);
+ }),
+ (e.eachMapping = (V, G) => {
+ let J = e.decodedMappings(V),
+ {names: re, resolvedSources: ve} = V;
+ for (let he = 0; he < J.length; he++) {
+ let Ie = J[he];
+ for (let Ee = 0; Ee < Ie.length; Ee++) {
+ let Le = Ie[Ee],
+ Xe = he + 1,
+ We = Le[0],
+ Ke = null,
+ ut = null,
+ pt = null,
+ bt = null;
+ Le.length !== 1 &&
+ ((Ke = ve[Le[1]]), (ut = Le[2] + 1), (pt = Le[3])),
+ Le.length === 5 && (bt = re[Le[4]]),
+ G({
+ generatedLine: Xe,
+ generatedColumn: We,
+ source: Ke,
+ originalLine: ut,
+ originalColumn: pt,
+ name: bt,
+ });
+ }
+ }
+ }),
+ (e.sourceContentFor = (V, G) => {
+ let {sources: J, resolvedSources: re, sourcesContent: ve} = V;
+ if (ve == null) return null;
+ let he = J.indexOf(G);
+ return he === -1 && (he = re.indexOf(G)), he === -1 ? null : ve[he];
+ }),
+ (e.presortedDecodedMap = (V, G) => {
+ let J = new wt($t(V, []), G);
+ return (J._decoded = V.mappings), J;
+ }),
+ (e.decodedMap = (V) => $t(V, e.decodedMappings(V))),
+ (e.encodedMap = (V) => $t(V, e.encodedMappings(V)));
+ function $t(V, G) {
+ return {
+ version: V.version,
+ file: V.file,
+ names: V.names,
+ sourceRoot: V.sourceRoot,
+ sources: V.sources,
+ sourcesContent: V.sourcesContent,
+ mappings: G,
+ };
+ }
+ function Pt(V, G, J, re) {
+ return {source: V, line: G, column: J, name: re};
+ }
+ function qt(V, G) {
+ return {line: V, column: G};
+ }
+ function Tn(V, G, J, re, ve) {
+ let he = ie(V, re, G, J);
+ return (
+ M ? (he = (ve === _t ? R : W)(V, re, he)) : ve === _t && he++,
+ he === -1 || he === V.length ? null : V[he]
+ );
+ }
+ (e.AnyMap = qe),
+ (e.GREATEST_LOWER_BOUND = ct),
+ (e.LEAST_UPPER_BOUND = _t),
+ (e.TraceMap = wt),
+ Object.defineProperty(e, '__esModule', {value: !0});
+ });
+ });
+ var V1 = Z((so, B1) => {
+ (function (e, t) {
+ typeof so == 'object' && typeof B1 < 'u'
+ ? t(so, L1(), ja(), F1())
+ : typeof define == 'function' && define.amd
+ ? define(
+ [
+ 'exports',
+ '@jridgewell/set-array',
+ '@jridgewell/sourcemap-codec',
+ '@jridgewell/trace-mapping',
+ ],
+ t
+ )
+ : ((e = typeof globalThis < 'u' ? globalThis : e || self),
+ t((e.genMapping = {}), e.setArray, e.sourcemapCodec, e.traceMapping));
+ })(so, function (e, t, s, i) {
+ 'use strict';
+ (e.addSegment = void 0),
+ (e.addMapping = void 0),
+ (e.maybeAddSegment = void 0),
+ (e.maybeAddMapping = void 0),
+ (e.setSourceContent = void 0),
+ (e.toDecodedMap = void 0),
+ (e.toEncodedMap = void 0),
+ (e.fromMap = void 0),
+ (e.allMappings = void 0);
+ let L;
+ class p {
+ constructor({file: R, sourceRoot: W} = {}) {
+ (this._names = new t.SetArray()),
+ (this._sources = new t.SetArray()),
+ (this._sourcesContent = []),
+ (this._mappings = []),
+ (this.file = R),
+ (this.sourceRoot = W);
+ }
+ }
+ (e.addSegment = (c, R, W, X, ie, pe, ae, He) =>
+ L(!1, c, R, W, X, ie, pe, ae, He)),
+ (e.maybeAddSegment = (c, R, W, X, ie, pe, ae, He) =>
+ L(!0, c, R, W, X, ie, pe, ae, He)),
+ (e.addMapping = (c, R) => M(!1, c, R)),
+ (e.maybeAddMapping = (c, R) => M(!0, c, R)),
+ (e.setSourceContent = (c, R, W) => {
+ let {_sources: X, _sourcesContent: ie} = c;
+ ie[t.put(X, R)] = W;
+ }),
+ (e.toDecodedMap = (c) => {
+ let {
+ file: R,
+ sourceRoot: W,
+ _mappings: X,
+ _sources: ie,
+ _sourcesContent: pe,
+ _names: ae,
+ } = c;
+ return (
+ w(X),
+ {
+ version: 3,
+ file: R || void 0,
+ names: ae.array,
+ sourceRoot: W || void 0,
+ sources: ie.array,
+ sourcesContent: pe,
+ mappings: X,
+ }
+ );
+ }),
+ (e.toEncodedMap = (c) => {
+ let R = e.toDecodedMap(c);
+ return Object.assign(Object.assign({}, R), {
+ mappings: s.encode(R.mappings),
+ });
+ }),
+ (e.allMappings = (c) => {
+ let R = [],
+ {_mappings: W, _sources: X, _names: ie} = c;
+ for (let pe = 0; pe < W.length; pe++) {
+ let ae = W[pe];
+ for (let He = 0; He < ae.length; He++) {
+ let qe = ae[He],
+ Bt = {line: pe + 1, column: qe[0]},
+ mt,
+ kt,
+ At;
+ qe.length !== 1 &&
+ ((mt = X.array[qe[1]]),
+ (kt = {line: qe[2] + 1, column: qe[3]}),
+ qe.length === 5 && (At = ie.array[qe[4]])),
+ R.push({generated: Bt, source: mt, original: kt, name: At});
+ }
+ }
+ return R;
+ }),
+ (e.fromMap = (c) => {
+ let R = new i.TraceMap(c),
+ W = new p({file: R.file, sourceRoot: R.sourceRoot});
+ return (
+ S(W._names, R.names),
+ S(W._sources, R.sources),
+ (W._sourcesContent = R.sourcesContent || R.sources.map(() => null)),
+ (W._mappings = i.decodedMappings(R)),
+ W
+ );
+ }),
+ (L = (c, R, W, X, ie, pe, ae, He, qe) => {
+ let {
+ _mappings: Bt,
+ _sources: mt,
+ _sourcesContent: kt,
+ _names: At,
+ } = R,
+ tt = h(Bt, W),
+ nt = T(tt, X);
+ if (!ie) return c && A(tt, nt) ? void 0 : x(tt, nt, [X]);
+ let _t = t.put(mt, ie),
+ ct = He ? t.put(At, He) : -1;
+ if (
+ (_t === kt.length && (kt[_t] = qe ?? null),
+ !(c && U(tt, nt, _t, pe, ae, ct)))
+ )
+ return x(tt, nt, He ? [X, _t, pe, ae, ct] : [X, _t, pe, ae]);
+ });
+ function h(c, R) {
+ for (let W = c.length; W <= R; W++) c[W] = [];
+ return c[R];
+ }
+ function T(c, R) {
+ let W = c.length;
+ for (let X = W - 1; X >= 0; W = X--) {
+ let ie = c[X];
+ if (R >= ie[0]) break;
+ }
+ return W;
+ }
+ function x(c, R, W) {
+ for (let X = c.length; X > R; X--) c[X] = c[X - 1];
+ c[R] = W;
+ }
+ function w(c) {
+ let {length: R} = c,
+ W = R;
+ for (let X = W - 1; X >= 0 && !(c[X].length > 0); W = X, X--);
+ W < R && (c.length = W);
+ }
+ function S(c, R) {
+ for (let W = 0; W < R.length; W++) t.put(c, R[W]);
+ }
+ function A(c, R) {
+ return R === 0 ? !0 : c[R - 1].length === 1;
+ }
+ function U(c, R, W, X, ie, pe) {
+ if (R === 0) return !1;
+ let ae = c[R - 1];
+ return ae.length === 1
+ ? !1
+ : W === ae[1] &&
+ X === ae[2] &&
+ ie === ae[3] &&
+ pe === (ae.length === 5 ? ae[4] : -1);
+ }
+ function M(c, R, W) {
+ let {generated: X, source: ie, original: pe, name: ae, content: He} = W;
+ if (!ie)
+ return L(c, R, X.line - 1, X.column, null, null, null, null, null);
+ let qe = ie;
+ return L(
+ c,
+ R,
+ X.line - 1,
+ X.column,
+ qe,
+ pe.line - 1,
+ pe.column,
+ ae,
+ He
+ );
+ }
+ (e.GenMapping = p), Object.defineProperty(e, '__esModule', {value: !0});
+ });
+ });
+ var $1 = Z((Ka) => {
+ 'use strict';
+ Object.defineProperty(Ka, '__esModule', {value: !0});
+ var Gi = V1(),
+ j1 = Qt();
+ function hy({code: e, mappings: t}, s, i, r, a) {
+ let u = fy(r, a),
+ d = new Gi.GenMapping({file: i.compiledFilename}),
+ y = 0,
+ g = t[0];
+ for (; g === void 0 && y < t.length - 1; ) y++, (g = t[y]);
+ let L = 0,
+ p = 0;
+ g !== p && Gi.maybeAddSegment.call(void 0, d, L, 0, s, L, 0);
+ for (let w = 0; w < e.length; w++) {
+ if (w === g) {
+ let S = g - p,
+ A = u[y];
+ for (
+ Gi.maybeAddSegment.call(void 0, d, L, S, s, L, A);
+ (g === w || g === void 0) && y < t.length - 1;
+
+ )
+ y++, (g = t[y]);
+ }
+ e.charCodeAt(w) === j1.charCodes.lineFeed &&
+ (L++,
+ (p = w + 1),
+ g !== p && Gi.maybeAddSegment.call(void 0, d, L, 0, s, L, 0));
+ }
+ let {
+ sourceRoot: h,
+ sourcesContent: T,
+ ...x
+ } = Gi.toEncodedMap.call(void 0, d);
+ return x;
+ }
+ Ka.default = hy;
+ function fy(e, t) {
+ let s = new Array(t.length),
+ i = 0,
+ r = t[i].start,
+ a = 0;
+ for (let u = 0; u < e.length; u++)
+ u === r && ((s[i] = r - a), i++, (r = t[i].start)),
+ e.charCodeAt(u) === j1.charCodes.lineFeed && (a = u + 1);
+ return s;
+ }
+ });
+ var q1 = Z((Ha) => {
+ 'use strict';
+ Object.defineProperty(Ha, '__esModule', {value: !0});
+ var dy = {
+ require: `
+ import {createRequire as CREATE_REQUIRE_NAME} from "module";
+ const require = CREATE_REQUIRE_NAME(import.meta.url);
+ `,
+ interopRequireWildcard: `
+ function interopRequireWildcard(obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ newObj.default = obj;
+ return newObj;
+ }
+ }
+ `,
+ interopRequireDefault: `
+ function interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+ `,
+ createNamedExportFrom: `
+ function createNamedExportFrom(obj, localName, importedName) {
+ Object.defineProperty(exports, localName, {enumerable: true, configurable: true, get: () => obj[importedName]});
+ }
+ `,
+ createStarExport: `
+ function createStarExport(obj) {
+ Object.keys(obj)
+ .filter((key) => key !== "default" && key !== "__esModule")
+ .forEach((key) => {
+ if (exports.hasOwnProperty(key)) {
+ return;
+ }
+ Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]});
+ });
+ }
+ `,
+ nullishCoalesce: `
+ function nullishCoalesce(lhs, rhsFn) {
+ if (lhs != null) {
+ return lhs;
+ } else {
+ return rhsFn();
+ }
+ }
+ `,
+ asyncNullishCoalesce: `
+ async function asyncNullishCoalesce(lhs, rhsFn) {
+ if (lhs != null) {
+ return lhs;
+ } else {
+ return await rhsFn();
+ }
+ }
+ `,
+ optionalChain: `
+ function optionalChain(ops) {
+ let lastAccessLHS = undefined;
+ let value = ops[0];
+ let i = 1;
+ while (i < ops.length) {
+ const op = ops[i];
+ const fn = ops[i + 1];
+ i += 2;
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
+ return undefined;
+ }
+ if (op === 'access' || op === 'optionalAccess') {
+ lastAccessLHS = value;
+ value = fn(value);
+ } else if (op === 'call' || op === 'optionalCall') {
+ value = fn((...args) => value.call(lastAccessLHS, ...args));
+ lastAccessLHS = undefined;
+ }
+ }
+ return value;
+ }
+ `,
+ asyncOptionalChain: `
+ async function asyncOptionalChain(ops) {
+ let lastAccessLHS = undefined;
+ let value = ops[0];
+ let i = 1;
+ while (i < ops.length) {
+ const op = ops[i];
+ const fn = ops[i + 1];
+ i += 2;
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
+ return undefined;
+ }
+ if (op === 'access' || op === 'optionalAccess') {
+ lastAccessLHS = value;
+ value = await fn(value);
+ } else if (op === 'call' || op === 'optionalCall') {
+ value = await fn((...args) => value.call(lastAccessLHS, ...args));
+ lastAccessLHS = undefined;
+ }
+ }
+ return value;
+ }
+ `,
+ optionalChainDelete: `
+ function optionalChainDelete(ops) {
+ const result = OPTIONAL_CHAIN_NAME(ops);
+ return result == null ? true : result;
+ }
+ `,
+ asyncOptionalChainDelete: `
+ async function asyncOptionalChainDelete(ops) {
+ const result = await ASYNC_OPTIONAL_CHAIN_NAME(ops);
+ return result == null ? true : result;
+ }
+ `,
+ },
+ Ua = class e {
+ __init() {
+ this.helperNames = {};
+ }
+ __init2() {
+ this.createRequireName = null;
+ }
+ constructor(t) {
+ (this.nameManager = t),
+ e.prototype.__init.call(this),
+ e.prototype.__init2.call(this);
+ }
+ getHelperName(t) {
+ let s = this.helperNames[t];
+ return (
+ s ||
+ ((s = this.nameManager.claimFreeName(`_${t}`)),
+ (this.helperNames[t] = s),
+ s)
+ );
+ }
+ emitHelpers() {
+ let t = '';
+ this.helperNames.optionalChainDelete &&
+ this.getHelperName('optionalChain'),
+ this.helperNames.asyncOptionalChainDelete &&
+ this.getHelperName('asyncOptionalChain');
+ for (let [s, i] of Object.entries(dy)) {
+ let r = this.helperNames[s],
+ a = i;
+ s === 'optionalChainDelete'
+ ? (a = a.replace(
+ 'OPTIONAL_CHAIN_NAME',
+ this.helperNames.optionalChain
+ ))
+ : s === 'asyncOptionalChainDelete'
+ ? (a = a.replace(
+ 'ASYNC_OPTIONAL_CHAIN_NAME',
+ this.helperNames.asyncOptionalChain
+ ))
+ : s === 'require' &&
+ (this.createRequireName === null &&
+ (this.createRequireName =
+ this.nameManager.claimFreeName('_createRequire')),
+ (a = a.replace(
+ /CREATE_REQUIRE_NAME/g,
+ this.createRequireName
+ ))),
+ r &&
+ ((t += ' '),
+ (t += a.replace(s, r).replace(/\s+/g, ' ').trim()));
+ }
+ return t;
+ }
+ };
+ Ha.HelperManager = Ua;
+ });
+ var H1 = Z((ro) => {
+ 'use strict';
+ Object.defineProperty(ro, '__esModule', {value: !0});
+ var Wa = xt(),
+ io = be();
+ function my(e, t, s) {
+ U1(e, s) && yy(e, t, s);
+ }
+ ro.default = my;
+ function U1(e, t) {
+ for (let s of e.tokens)
+ if (
+ s.type === io.TokenType.name &&
+ Wa.isNonTopLevelDeclaration.call(void 0, s) &&
+ t.has(e.identifierNameForToken(s))
+ )
+ return !0;
+ return !1;
+ }
+ ro.hasShadowedGlobals = U1;
+ function yy(e, t, s) {
+ let i = [],
+ r = t.length - 1;
+ for (let a = e.tokens.length - 1; ; a--) {
+ for (; i.length > 0 && i[i.length - 1].startTokenIndex === a + 1; )
+ i.pop();
+ for (; r >= 0 && t[r].endTokenIndex === a + 1; ) i.push(t[r]), r--;
+ if (a < 0) break;
+ let u = e.tokens[a],
+ d = e.identifierNameForToken(u);
+ if (i.length > 1 && u.type === io.TokenType.name && s.has(d)) {
+ if (Wa.isBlockScopedDeclaration.call(void 0, u))
+ K1(i[i.length - 1], e, d);
+ else if (Wa.isFunctionScopedDeclaration.call(void 0, u)) {
+ let y = i.length - 1;
+ for (; y > 0 && !i[y].isFunctionScope; ) y--;
+ if (y < 0) throw new Error('Did not find parent function scope.');
+ K1(i[y], e, d);
+ }
+ }
+ }
+ if (i.length > 0)
+ throw new Error('Expected empty scope stack after processing file.');
+ }
+ function K1(e, t, s) {
+ for (let i = e.startTokenIndex; i < e.endTokenIndex; i++) {
+ let r = t.tokens[i];
+ (r.type === io.TokenType.name || r.type === io.TokenType.jsxName) &&
+ t.identifierNameForToken(r) === s &&
+ (r.shadowsGlobal = !0);
+ }
+ }
+ });
+ var W1 = Z((Ga) => {
+ 'use strict';
+ Object.defineProperty(Ga, '__esModule', {value: !0});
+ var Ty = be();
+ function ky(e, t) {
+ let s = [];
+ for (let i of t)
+ i.type === Ty.TokenType.name && s.push(e.slice(i.start, i.end));
+ return s;
+ }
+ Ga.default = ky;
+ });
+ var G1 = Z((Xa) => {
+ 'use strict';
+ Object.defineProperty(Xa, '__esModule', {value: !0});
+ function vy(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var xy = W1(),
+ gy = vy(xy),
+ za = class e {
+ __init() {
+ this.usedNames = new Set();
+ }
+ constructor(t, s) {
+ e.prototype.__init.call(this),
+ (this.usedNames = new Set(gy.default.call(void 0, t, s)));
+ }
+ claimFreeName(t) {
+ let s = this.findFreeName(t);
+ return this.usedNames.add(s), s;
+ }
+ findFreeName(t) {
+ if (!this.usedNames.has(t)) return t;
+ let s = 2;
+ for (; this.usedNames.has(t + String(s)); ) s++;
+ return t + String(s);
+ }
+ };
+ Xa.default = za;
+ });
+ var oo = Z((Pn) => {
+ 'use strict';
+ var _y =
+ (Pn && Pn.__extends) ||
+ (function () {
+ var e = function (t, s) {
+ return (
+ (e =
+ Object.setPrototypeOf ||
+ ({__proto__: []} instanceof Array &&
+ function (i, r) {
+ i.__proto__ = r;
+ }) ||
+ function (i, r) {
+ for (var a in r) r.hasOwnProperty(a) && (i[a] = r[a]);
+ }),
+ e(t, s)
+ );
+ };
+ return function (t, s) {
+ e(t, s);
+ function i() {
+ this.constructor = t;
+ }
+ t.prototype =
+ s === null
+ ? Object.create(s)
+ : ((i.prototype = s.prototype), new i());
+ };
+ })();
+ Object.defineProperty(Pn, '__esModule', {value: !0});
+ Pn.DetailContext = Pn.NoopContext = Pn.VError = void 0;
+ var z1 = (function (e) {
+ _y(t, e);
+ function t(s, i) {
+ var r = e.call(this, i) || this;
+ return (r.path = s), Object.setPrototypeOf(r, t.prototype), r;
+ }
+ return t;
+ })(Error);
+ Pn.VError = z1;
+ var by = (function () {
+ function e() {}
+ return (
+ (e.prototype.fail = function (t, s, i) {
+ return !1;
+ }),
+ (e.prototype.unionResolver = function () {
+ return this;
+ }),
+ (e.prototype.createContext = function () {
+ return this;
+ }),
+ (e.prototype.resolveUnion = function (t) {}),
+ e
+ );
+ })();
+ Pn.NoopContext = by;
+ var X1 = (function () {
+ function e() {
+ (this._propNames = ['']), (this._messages = [null]), (this._score = 0);
+ }
+ return (
+ (e.prototype.fail = function (t, s, i) {
+ return (
+ this._propNames.push(t),
+ this._messages.push(s),
+ (this._score += i),
+ !1
+ );
+ }),
+ (e.prototype.unionResolver = function () {
+ return new Cy();
+ }),
+ (e.prototype.resolveUnion = function (t) {
+ for (
+ var s, i, r = t, a = null, u = 0, d = r.contexts;
+ u < d.length;
+ u++
+ ) {
+ var y = d[u];
+ (!a || y._score >= a._score) && (a = y);
+ }
+ a &&
+ a._score > 0 &&
+ ((s = this._propNames).push.apply(s, a._propNames),
+ (i = this._messages).push.apply(i, a._messages));
+ }),
+ (e.prototype.getError = function (t) {
+ for (var s = [], i = this._propNames.length - 1; i >= 0; i--) {
+ var r = this._propNames[i];
+ t += typeof r == 'number' ? '[' + r + ']' : r ? '.' + r : '';
+ var a = this._messages[i];
+ a && s.push(t + ' ' + a);
+ }
+ return new z1(t, s.join('; '));
+ }),
+ (e.prototype.getErrorDetail = function (t) {
+ for (var s = [], i = this._propNames.length - 1; i >= 0; i--) {
+ var r = this._propNames[i];
+ t += typeof r == 'number' ? '[' + r + ']' : r ? '.' + r : '';
+ var a = this._messages[i];
+ a && s.push({path: t, message: a});
+ }
+ for (var u = null, i = s.length - 1; i >= 0; i--)
+ u && (s[i].nested = [u]), (u = s[i]);
+ return u;
+ }),
+ e
+ );
+ })();
+ Pn.DetailContext = X1;
+ var Cy = (function () {
+ function e() {
+ this.contexts = [];
+ }
+ return (
+ (e.prototype.createContext = function () {
+ var t = new X1();
+ return this.contexts.push(t), t;
+ }),
+ e
+ );
+ })();
+ });
+ var sl = Z((ce) => {
+ 'use strict';
+ var nn =
+ (ce && ce.__extends) ||
+ (function () {
+ var e = function (t, s) {
+ return (
+ (e =
+ Object.setPrototypeOf ||
+ ({__proto__: []} instanceof Array &&
+ function (i, r) {
+ i.__proto__ = r;
+ }) ||
+ function (i, r) {
+ for (var a in r) r.hasOwnProperty(a) && (i[a] = r[a]);
+ }),
+ e(t, s)
+ );
+ };
+ return function (t, s) {
+ e(t, s);
+ function i() {
+ this.constructor = t;
+ }
+ t.prototype =
+ s === null
+ ? Object.create(s)
+ : ((i.prototype = s.prototype), new i());
+ };
+ })();
+ Object.defineProperty(ce, '__esModule', {value: !0});
+ ce.basicTypes =
+ ce.BasicType =
+ ce.TParamList =
+ ce.TParam =
+ ce.param =
+ ce.TFunc =
+ ce.func =
+ ce.TProp =
+ ce.TOptional =
+ ce.opt =
+ ce.TIface =
+ ce.iface =
+ ce.TEnumLiteral =
+ ce.enumlit =
+ ce.TEnumType =
+ ce.enumtype =
+ ce.TIntersection =
+ ce.intersection =
+ ce.TUnion =
+ ce.union =
+ ce.TTuple =
+ ce.tuple =
+ ce.TArray =
+ ce.array =
+ ce.TLiteral =
+ ce.lit =
+ ce.TName =
+ ce.name =
+ ce.TType =
+ void 0;
+ var Q1 = oo(),
+ Ht = (function () {
+ function e() {}
+ return e;
+ })();
+ ce.TType = Ht;
+ function ps(e) {
+ return typeof e == 'string' ? Z1(e) : e;
+ }
+ function Qa(e, t) {
+ var s = e[t];
+ if (!s) throw new Error('Unknown type ' + t);
+ return s;
+ }
+ function Z1(e) {
+ return new Za(e);
+ }
+ ce.name = Z1;
+ var Za = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (i.name = s), (i._failMsg = 'is not a ' + s), i;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i, r) {
+ var a = this,
+ u = Qa(s, this.name),
+ d = u.getChecker(s, i, r);
+ return u instanceof Dt || u instanceof t
+ ? d
+ : function (y, g) {
+ return d(y, g) ? !0 : g.fail(null, a._failMsg, 0);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TName = Za;
+ function wy(e) {
+ return new el(e);
+ }
+ ce.lit = wy;
+ var el = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (
+ (i.value = s),
+ (i.name = JSON.stringify(s)),
+ (i._failMsg = 'is not ' + i.name),
+ i
+ );
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this;
+ return function (a, u) {
+ return a === r.value ? !0 : u.fail(null, r._failMsg, -1);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TLiteral = el;
+ function Sy(e) {
+ return new ep(ps(e));
+ }
+ ce.array = Sy;
+ var ep = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (i.ttype = s), i;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this.ttype.getChecker(s, i);
+ return function (a, u) {
+ if (!Array.isArray(a)) return u.fail(null, 'is not an array', 0);
+ for (var d = 0; d < a.length; d++) {
+ var y = r(a[d], u);
+ if (!y) return u.fail(d, null, 1);
+ }
+ return !0;
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TArray = ep;
+ function Iy() {
+ for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
+ return new tp(
+ e.map(function (s) {
+ return ps(s);
+ })
+ );
+ }
+ ce.tuple = Iy;
+ var tp = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (i.ttypes = s), i;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this.ttypes.map(function (u) {
+ return u.getChecker(s, i);
+ }),
+ a = function (u, d) {
+ if (!Array.isArray(u)) return d.fail(null, 'is not an array', 0);
+ for (var y = 0; y < r.length; y++) {
+ var g = r[y](u[y], d);
+ if (!g) return d.fail(y, null, 1);
+ }
+ return !0;
+ };
+ return i
+ ? function (u, d) {
+ return a(u, d)
+ ? u.length <= r.length
+ ? !0
+ : d.fail(r.length, 'is extraneous', 2)
+ : !1;
+ }
+ : a;
+ }),
+ t
+ );
+ })(Ht);
+ ce.TTuple = tp;
+ function Ey() {
+ for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
+ return new np(
+ e.map(function (s) {
+ return ps(s);
+ })
+ );
+ }
+ ce.union = Ey;
+ var np = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ i.ttypes = s;
+ var r = s
+ .map(function (u) {
+ return u instanceof Za || u instanceof el ? u.name : null;
+ })
+ .filter(function (u) {
+ return u;
+ }),
+ a = s.length - r.length;
+ return (
+ r.length
+ ? (a > 0 && r.push(a + ' more'),
+ (i._failMsg = 'is none of ' + r.join(', ')))
+ : (i._failMsg = 'is none of ' + a + ' types'),
+ i
+ );
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this,
+ a = this.ttypes.map(function (u) {
+ return u.getChecker(s, i);
+ });
+ return function (u, d) {
+ for (var y = d.unionResolver(), g = 0; g < a.length; g++) {
+ var L = a[g](u, y.createContext());
+ if (L) return !0;
+ }
+ return d.resolveUnion(y), d.fail(null, r._failMsg, 0);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TUnion = np;
+ function Ay() {
+ for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
+ return new sp(
+ e.map(function (s) {
+ return ps(s);
+ })
+ );
+ }
+ ce.intersection = Ay;
+ var sp = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (i.ttypes = s), i;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = new Set(),
+ a = this.ttypes.map(function (u) {
+ return u.getChecker(s, i, r);
+ });
+ return function (u, d) {
+ var y = a.every(function (g) {
+ return g(u, d);
+ });
+ return y ? !0 : d.fail(null, null, 0);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TIntersection = sp;
+ function Py(e) {
+ return new tl(e);
+ }
+ ce.enumtype = Py;
+ var tl = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (
+ (i.members = s),
+ (i.validValues = new Set()),
+ (i._failMsg = 'is not a valid enum value'),
+ (i.validValues = new Set(
+ Object.keys(s).map(function (r) {
+ return s[r];
+ })
+ )),
+ i
+ );
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this;
+ return function (a, u) {
+ return r.validValues.has(a) ? !0 : u.fail(null, r._failMsg, 0);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TEnumType = tl;
+ function Ny(e, t) {
+ return new ip(e, t);
+ }
+ ce.enumlit = Ny;
+ var ip = (function (e) {
+ nn(t, e);
+ function t(s, i) {
+ var r = e.call(this) || this;
+ return (
+ (r.enumName = s),
+ (r.prop = i),
+ (r._failMsg = 'is not ' + s + '.' + i),
+ r
+ );
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this,
+ a = Qa(s, this.enumName);
+ if (!(a instanceof tl))
+ throw new Error(
+ 'Type ' + this.enumName + ' used in enumlit is not an enum type'
+ );
+ var u = a.members[this.prop];
+ if (!a.members.hasOwnProperty(this.prop))
+ throw new Error(
+ 'Unknown value ' +
+ this.enumName +
+ '.' +
+ this.prop +
+ ' used in enumlit'
+ );
+ return function (d, y) {
+ return d === u ? !0 : y.fail(null, r._failMsg, -1);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TEnumLiteral = ip;
+ function Ry(e) {
+ return Object.keys(e).map(function (t) {
+ return Ly(t, e[t]);
+ });
+ }
+ function Ly(e, t) {
+ return t instanceof nl ? new Ja(e, t.ttype, !0) : new Ja(e, ps(t), !1);
+ }
+ function Oy(e, t) {
+ return new rp(e, Ry(t));
+ }
+ ce.iface = Oy;
+ var rp = (function (e) {
+ nn(t, e);
+ function t(s, i) {
+ var r = e.call(this) || this;
+ return (
+ (r.bases = s),
+ (r.props = i),
+ (r.propSet = new Set(
+ i.map(function (a) {
+ return a.name;
+ })
+ )),
+ r
+ );
+ }
+ return (
+ (t.prototype.getChecker = function (s, i, r) {
+ var a = this,
+ u = this.bases.map(function (h) {
+ return Qa(s, h).getChecker(s, i);
+ }),
+ d = this.props.map(function (h) {
+ return h.ttype.getChecker(s, i);
+ }),
+ y = new Q1.NoopContext(),
+ g = this.props.map(function (h, T) {
+ return !h.isOpt && !d[T](void 0, y);
+ }),
+ L = function (h, T) {
+ if (typeof h != 'object' || h === null)
+ return T.fail(null, 'is not an object', 0);
+ for (var x = 0; x < u.length; x++) if (!u[x](h, T)) return !1;
+ for (var x = 0; x < d.length; x++) {
+ var w = a.props[x].name,
+ S = h[w];
+ if (S === void 0) {
+ if (g[x]) return T.fail(w, 'is missing', 1);
+ } else {
+ var A = d[x](S, T);
+ if (!A) return T.fail(w, null, 1);
+ }
+ }
+ return !0;
+ };
+ if (!i) return L;
+ var p = this.propSet;
+ return (
+ r &&
+ (this.propSet.forEach(function (h) {
+ return r.add(h);
+ }),
+ (p = r)),
+ function (h, T) {
+ if (!L(h, T)) return !1;
+ for (var x in h)
+ if (!p.has(x)) return T.fail(x, 'is extraneous', 2);
+ return !0;
+ }
+ );
+ }),
+ t
+ );
+ })(Ht);
+ ce.TIface = rp;
+ function Dy(e) {
+ return new nl(ps(e));
+ }
+ ce.opt = Dy;
+ var nl = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (i.ttype = s), i;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this.ttype.getChecker(s, i);
+ return function (a, u) {
+ return a === void 0 || r(a, u);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TOptional = nl;
+ var Ja = (function () {
+ function e(t, s, i) {
+ (this.name = t), (this.ttype = s), (this.isOpt = i);
+ }
+ return e;
+ })();
+ ce.TProp = Ja;
+ function My(e) {
+ for (var t = [], s = 1; s < arguments.length; s++)
+ t[s - 1] = arguments[s];
+ return new op(new lp(t), ps(e));
+ }
+ ce.func = My;
+ var op = (function (e) {
+ nn(t, e);
+ function t(s, i) {
+ var r = e.call(this) || this;
+ return (r.paramList = s), (r.result = i), r;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ return function (r, a) {
+ return typeof r == 'function'
+ ? !0
+ : a.fail(null, 'is not a function', 0);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.TFunc = op;
+ function Fy(e, t, s) {
+ return new ap(e, ps(t), !!s);
+ }
+ ce.param = Fy;
+ var ap = (function () {
+ function e(t, s, i) {
+ (this.name = t), (this.ttype = s), (this.isOpt = i);
+ }
+ return e;
+ })();
+ ce.TParam = ap;
+ var lp = (function (e) {
+ nn(t, e);
+ function t(s) {
+ var i = e.call(this) || this;
+ return (i.params = s), i;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this,
+ a = this.params.map(function (g) {
+ return g.ttype.getChecker(s, i);
+ }),
+ u = new Q1.NoopContext(),
+ d = this.params.map(function (g, L) {
+ return !g.isOpt && !a[L](void 0, u);
+ }),
+ y = function (g, L) {
+ if (!Array.isArray(g)) return L.fail(null, 'is not an array', 0);
+ for (var p = 0; p < a.length; p++) {
+ var h = r.params[p];
+ if (g[p] === void 0) {
+ if (d[p]) return L.fail(h.name, 'is missing', 1);
+ } else {
+ var T = a[p](g[p], L);
+ if (!T) return L.fail(h.name, null, 1);
+ }
+ }
+ return !0;
+ };
+ return i
+ ? function (g, L) {
+ return y(g, L)
+ ? g.length <= a.length
+ ? !0
+ : L.fail(a.length, 'is extraneous', 2)
+ : !1;
+ }
+ : y;
+ }),
+ t
+ );
+ })(Ht);
+ ce.TParamList = lp;
+ var Dt = (function (e) {
+ nn(t, e);
+ function t(s, i) {
+ var r = e.call(this) || this;
+ return (r.validator = s), (r.message = i), r;
+ }
+ return (
+ (t.prototype.getChecker = function (s, i) {
+ var r = this;
+ return function (a, u) {
+ return r.validator(a) ? !0 : u.fail(null, r.message, 0);
+ };
+ }),
+ t
+ );
+ })(Ht);
+ ce.BasicType = Dt;
+ ce.basicTypes = {
+ any: new Dt(function (e) {
+ return !0;
+ }, 'is invalid'),
+ number: new Dt(function (e) {
+ return typeof e == 'number';
+ }, 'is not a number'),
+ object: new Dt(function (e) {
+ return typeof e == 'object' && e;
+ }, 'is not an object'),
+ boolean: new Dt(function (e) {
+ return typeof e == 'boolean';
+ }, 'is not a boolean'),
+ string: new Dt(function (e) {
+ return typeof e == 'string';
+ }, 'is not a string'),
+ symbol: new Dt(function (e) {
+ return typeof e == 'symbol';
+ }, 'is not a symbol'),
+ void: new Dt(function (e) {
+ return e == null;
+ }, 'is not void'),
+ undefined: new Dt(function (e) {
+ return e === void 0;
+ }, 'is not undefined'),
+ null: new Dt(function (e) {
+ return e === null;
+ }, 'is not null'),
+ never: new Dt(function (e) {
+ return !1;
+ }, 'is unexpected'),
+ Date: new Dt(Y1('[object Date]'), 'is not a Date'),
+ RegExp: new Dt(Y1('[object RegExp]'), 'is not a RegExp'),
+ };
+ var By = Object.prototype.toString;
+ function Y1(e) {
+ return function (t) {
+ return typeof t == 'object' && t && By.call(t) === e;
+ };
+ }
+ typeof Buffer < 'u' &&
+ (ce.basicTypes.Buffer = new Dt(function (e) {
+ return Buffer.isBuffer(e);
+ }, 'is not a Buffer'));
+ var Vy = function (e) {
+ ce.basicTypes[e.name] = new Dt(function (t) {
+ return t instanceof e;
+ }, 'is not a ' + e.name);
+ };
+ for (
+ ao = 0,
+ Ya = [
+ Int8Array,
+ Uint8Array,
+ Uint8ClampedArray,
+ Int16Array,
+ Uint16Array,
+ Int32Array,
+ Uint32Array,
+ Float32Array,
+ Float64Array,
+ ArrayBuffer,
+ ];
+ ao < Ya.length;
+ ao++
+ )
+ (J1 = Ya[ao]), Vy(J1);
+ var J1, ao, Ya;
+ });
+ var il = Z((we) => {
+ 'use strict';
+ var jy =
+ (we && we.__spreadArrays) ||
+ function () {
+ for (var e = 0, t = 0, s = arguments.length; t < s; t++)
+ e += arguments[t].length;
+ for (var i = Array(e), r = 0, t = 0; t < s; t++)
+ for (var a = arguments[t], u = 0, d = a.length; u < d; u++, r++)
+ i[r] = a[u];
+ return i;
+ };
+ Object.defineProperty(we, '__esModule', {value: !0});
+ we.Checker = we.createCheckers = void 0;
+ var zi = sl(),
+ pi = oo(),
+ ze = sl();
+ Object.defineProperty(we, 'TArray', {
+ enumerable: !0,
+ get: function () {
+ return ze.TArray;
+ },
+ });
+ Object.defineProperty(we, 'TEnumType', {
+ enumerable: !0,
+ get: function () {
+ return ze.TEnumType;
+ },
+ });
+ Object.defineProperty(we, 'TEnumLiteral', {
+ enumerable: !0,
+ get: function () {
+ return ze.TEnumLiteral;
+ },
+ });
+ Object.defineProperty(we, 'TFunc', {
+ enumerable: !0,
+ get: function () {
+ return ze.TFunc;
+ },
+ });
+ Object.defineProperty(we, 'TIface', {
+ enumerable: !0,
+ get: function () {
+ return ze.TIface;
+ },
+ });
+ Object.defineProperty(we, 'TLiteral', {
+ enumerable: !0,
+ get: function () {
+ return ze.TLiteral;
+ },
+ });
+ Object.defineProperty(we, 'TName', {
+ enumerable: !0,
+ get: function () {
+ return ze.TName;
+ },
+ });
+ Object.defineProperty(we, 'TOptional', {
+ enumerable: !0,
+ get: function () {
+ return ze.TOptional;
+ },
+ });
+ Object.defineProperty(we, 'TParam', {
+ enumerable: !0,
+ get: function () {
+ return ze.TParam;
+ },
+ });
+ Object.defineProperty(we, 'TParamList', {
+ enumerable: !0,
+ get: function () {
+ return ze.TParamList;
+ },
+ });
+ Object.defineProperty(we, 'TProp', {
+ enumerable: !0,
+ get: function () {
+ return ze.TProp;
+ },
+ });
+ Object.defineProperty(we, 'TTuple', {
+ enumerable: !0,
+ get: function () {
+ return ze.TTuple;
+ },
+ });
+ Object.defineProperty(we, 'TType', {
+ enumerable: !0,
+ get: function () {
+ return ze.TType;
+ },
+ });
+ Object.defineProperty(we, 'TUnion', {
+ enumerable: !0,
+ get: function () {
+ return ze.TUnion;
+ },
+ });
+ Object.defineProperty(we, 'TIntersection', {
+ enumerable: !0,
+ get: function () {
+ return ze.TIntersection;
+ },
+ });
+ Object.defineProperty(we, 'array', {
+ enumerable: !0,
+ get: function () {
+ return ze.array;
+ },
+ });
+ Object.defineProperty(we, 'enumlit', {
+ enumerable: !0,
+ get: function () {
+ return ze.enumlit;
+ },
+ });
+ Object.defineProperty(we, 'enumtype', {
+ enumerable: !0,
+ get: function () {
+ return ze.enumtype;
+ },
+ });
+ Object.defineProperty(we, 'func', {
+ enumerable: !0,
+ get: function () {
+ return ze.func;
+ },
+ });
+ Object.defineProperty(we, 'iface', {
+ enumerable: !0,
+ get: function () {
+ return ze.iface;
+ },
+ });
+ Object.defineProperty(we, 'lit', {
+ enumerable: !0,
+ get: function () {
+ return ze.lit;
+ },
+ });
+ Object.defineProperty(we, 'name', {
+ enumerable: !0,
+ get: function () {
+ return ze.name;
+ },
+ });
+ Object.defineProperty(we, 'opt', {
+ enumerable: !0,
+ get: function () {
+ return ze.opt;
+ },
+ });
+ Object.defineProperty(we, 'param', {
+ enumerable: !0,
+ get: function () {
+ return ze.param;
+ },
+ });
+ Object.defineProperty(we, 'tuple', {
+ enumerable: !0,
+ get: function () {
+ return ze.tuple;
+ },
+ });
+ Object.defineProperty(we, 'union', {
+ enumerable: !0,
+ get: function () {
+ return ze.union;
+ },
+ });
+ Object.defineProperty(we, 'intersection', {
+ enumerable: !0,
+ get: function () {
+ return ze.intersection;
+ },
+ });
+ Object.defineProperty(we, 'BasicType', {
+ enumerable: !0,
+ get: function () {
+ return ze.BasicType;
+ },
+ });
+ var $y = oo();
+ Object.defineProperty(we, 'VError', {
+ enumerable: !0,
+ get: function () {
+ return $y.VError;
+ },
+ });
+ function qy() {
+ for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
+ for (
+ var s = Object.assign.apply(Object, jy([{}, zi.basicTypes], e)),
+ i = {},
+ r = 0,
+ a = e;
+ r < a.length;
+ r++
+ )
+ for (var u = a[r], d = 0, y = Object.keys(u); d < y.length; d++) {
+ var g = y[d];
+ i[g] = new cp(s, u[g]);
+ }
+ return i;
+ }
+ we.createCheckers = qy;
+ var cp = (function () {
+ function e(t, s, i) {
+ if (
+ (i === void 0 && (i = 'value'),
+ (this.suite = t),
+ (this.ttype = s),
+ (this._path = i),
+ (this.props = new Map()),
+ s instanceof zi.TIface)
+ )
+ for (var r = 0, a = s.props; r < a.length; r++) {
+ var u = a[r];
+ this.props.set(u.name, u.ttype);
+ }
+ (this.checkerPlain = this.ttype.getChecker(t, !1)),
+ (this.checkerStrict = this.ttype.getChecker(t, !0));
+ }
+ return (
+ (e.prototype.setReportedPath = function (t) {
+ this._path = t;
+ }),
+ (e.prototype.check = function (t) {
+ return this._doCheck(this.checkerPlain, t);
+ }),
+ (e.prototype.test = function (t) {
+ return this.checkerPlain(t, new pi.NoopContext());
+ }),
+ (e.prototype.validate = function (t) {
+ return this._doValidate(this.checkerPlain, t);
+ }),
+ (e.prototype.strictCheck = function (t) {
+ return this._doCheck(this.checkerStrict, t);
+ }),
+ (e.prototype.strictTest = function (t) {
+ return this.checkerStrict(t, new pi.NoopContext());
+ }),
+ (e.prototype.strictValidate = function (t) {
+ return this._doValidate(this.checkerStrict, t);
+ }),
+ (e.prototype.getProp = function (t) {
+ var s = this.props.get(t);
+ if (!s) throw new Error('Type has no property ' + t);
+ return new e(this.suite, s, this._path + '.' + t);
+ }),
+ (e.prototype.methodArgs = function (t) {
+ var s = this._getMethod(t);
+ return new e(this.suite, s.paramList);
+ }),
+ (e.prototype.methodResult = function (t) {
+ var s = this._getMethod(t);
+ return new e(this.suite, s.result);
+ }),
+ (e.prototype.getArgs = function () {
+ if (!(this.ttype instanceof zi.TFunc))
+ throw new Error('getArgs() applied to non-function');
+ return new e(this.suite, this.ttype.paramList);
+ }),
+ (e.prototype.getResult = function () {
+ if (!(this.ttype instanceof zi.TFunc))
+ throw new Error('getResult() applied to non-function');
+ return new e(this.suite, this.ttype.result);
+ }),
+ (e.prototype.getType = function () {
+ return this.ttype;
+ }),
+ (e.prototype._doCheck = function (t, s) {
+ var i = new pi.NoopContext();
+ if (!t(s, i)) {
+ var r = new pi.DetailContext();
+ throw (t(s, r), r.getError(this._path));
+ }
+ }),
+ (e.prototype._doValidate = function (t, s) {
+ var i = new pi.NoopContext();
+ if (t(s, i)) return null;
+ var r = new pi.DetailContext();
+ return t(s, r), r.getErrorDetail(this._path);
+ }),
+ (e.prototype._getMethod = function (t) {
+ var s = this.props.get(t);
+ if (!s) throw new Error('Type has no property ' + t);
+ if (!(s instanceof zi.TFunc))
+ throw new Error('Property ' + t + ' is not a method');
+ return s;
+ }),
+ e
+ );
+ })();
+ we.Checker = cp;
+ });
+ var up = Z((Gn) => {
+ 'use strict';
+ Object.defineProperty(Gn, '__esModule', {value: !0});
+ function Ky(e) {
+ if (e && e.__esModule) return e;
+ var t = {};
+ if (e != null)
+ for (var s in e)
+ Object.prototype.hasOwnProperty.call(e, s) && (t[s] = e[s]);
+ return (t.default = e), t;
+ }
+ var Uy = il(),
+ Qe = Ky(Uy),
+ Hy = Qe.union(
+ Qe.lit('jsx'),
+ Qe.lit('typescript'),
+ Qe.lit('flow'),
+ Qe.lit('imports'),
+ Qe.lit('react-hot-loader'),
+ Qe.lit('jest')
+ );
+ Gn.Transform = Hy;
+ var Wy = Qe.iface([], {compiledFilename: 'string'});
+ Gn.SourceMapOptions = Wy;
+ var Gy = Qe.iface([], {
+ transforms: Qe.array('Transform'),
+ disableESTransforms: Qe.opt('boolean'),
+ jsxRuntime: Qe.opt(
+ Qe.union(Qe.lit('classic'), Qe.lit('automatic'), Qe.lit('preserve'))
+ ),
+ production: Qe.opt('boolean'),
+ jsxImportSource: Qe.opt('string'),
+ jsxPragma: Qe.opt('string'),
+ jsxFragmentPragma: Qe.opt('string'),
+ preserveDynamicImport: Qe.opt('boolean'),
+ injectCreateRequireForImportRequire: Qe.opt('boolean'),
+ enableLegacyTypeScriptModuleInterop: Qe.opt('boolean'),
+ enableLegacyBabel5ModuleInterop: Qe.opt('boolean'),
+ sourceMapOptions: Qe.opt('SourceMapOptions'),
+ filePath: Qe.opt('string'),
+ });
+ Gn.Options = Gy;
+ var zy = {
+ Transform: Gn.Transform,
+ SourceMapOptions: Gn.SourceMapOptions,
+ Options: Gn.Options,
+ };
+ Gn.default = zy;
+ });
+ var pp = Z((rl) => {
+ 'use strict';
+ Object.defineProperty(rl, '__esModule', {value: !0});
+ function Xy(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Yy = il(),
+ Jy = up(),
+ Qy = Xy(Jy),
+ {Options: Zy} = Yy.createCheckers.call(void 0, Qy.default);
+ function eT(e) {
+ Zy.strictCheck(e);
+ }
+ rl.validateOptions = eT;
+ });
+ var lo = Z((Nn) => {
+ 'use strict';
+ Object.defineProperty(Nn, '__esModule', {value: !0});
+ var tT = Ji(),
+ hp = hi(),
+ Mt = xt(),
+ Xi = It(),
+ fn = be(),
+ gt = Zt(),
+ Yi = Ns(),
+ ol = cs();
+ function nT() {
+ Mt.next.call(void 0), Yi.parseMaybeAssign.call(void 0, !1);
+ }
+ Nn.parseSpread = nT;
+ function fp(e) {
+ Mt.next.call(void 0), ll(e);
+ }
+ Nn.parseRest = fp;
+ function dp(e) {
+ Yi.parseIdentifier.call(void 0), mp(e);
+ }
+ Nn.parseBindingIdentifier = dp;
+ function sT() {
+ Yi.parseIdentifier.call(void 0),
+ (gt.state.tokens[gt.state.tokens.length - 1].identifierRole =
+ Mt.IdentifierRole.ImportDeclaration);
+ }
+ Nn.parseImportedIdentifier = sT;
+ function mp(e) {
+ let t;
+ gt.state.scopeDepth === 0
+ ? (t = Mt.IdentifierRole.TopLevelDeclaration)
+ : e
+ ? (t = Mt.IdentifierRole.BlockScopedDeclaration)
+ : (t = Mt.IdentifierRole.FunctionScopedDeclaration),
+ (gt.state.tokens[gt.state.tokens.length - 1].identifierRole = t);
+ }
+ Nn.markPriorBindingIdentifier = mp;
+ function ll(e) {
+ switch (gt.state.type) {
+ case fn.TokenType._this: {
+ let t = Mt.pushTypeContext.call(void 0, 0);
+ Mt.next.call(void 0), Mt.popTypeContext.call(void 0, t);
+ return;
+ }
+ case fn.TokenType._yield:
+ case fn.TokenType.name: {
+ (gt.state.type = fn.TokenType.name), dp(e);
+ return;
+ }
+ case fn.TokenType.bracketL: {
+ Mt.next.call(void 0), yp(fn.TokenType.bracketR, e, !0);
+ return;
+ }
+ case fn.TokenType.braceL:
+ Yi.parseObj.call(void 0, !0, e);
+ return;
+ default:
+ ol.unexpected.call(void 0);
+ }
+ }
+ Nn.parseBindingAtom = ll;
+ function yp(e, t, s = !1, i = !1, r = 0) {
+ let a = !0,
+ u = !1,
+ d = gt.state.tokens.length;
+ for (; !Mt.eat.call(void 0, e) && !gt.state.error; )
+ if (
+ (a
+ ? (a = !1)
+ : (ol.expect.call(void 0, fn.TokenType.comma),
+ (gt.state.tokens[gt.state.tokens.length - 1].contextId = r),
+ !u &&
+ gt.state.tokens[d].isType &&
+ ((gt.state.tokens[gt.state.tokens.length - 1].isType = !0),
+ (u = !0))),
+ !(s && Mt.match.call(void 0, fn.TokenType.comma)))
+ ) {
+ if (Mt.eat.call(void 0, e)) break;
+ if (Mt.match.call(void 0, fn.TokenType.ellipsis)) {
+ fp(t),
+ Tp(),
+ Mt.eat.call(void 0, fn.TokenType.comma),
+ ol.expect.call(void 0, e);
+ break;
+ } else iT(i, t);
+ }
+ }
+ Nn.parseBindingList = yp;
+ function iT(e, t) {
+ e &&
+ hp.tsParseModifiers.call(void 0, [
+ Xi.ContextualKeyword._public,
+ Xi.ContextualKeyword._protected,
+ Xi.ContextualKeyword._private,
+ Xi.ContextualKeyword._readonly,
+ Xi.ContextualKeyword._override,
+ ]),
+ al(t),
+ Tp(),
+ al(t, !0);
+ }
+ function Tp() {
+ gt.isFlowEnabled
+ ? tT.flowParseAssignableListItemTypes.call(void 0)
+ : gt.isTypeScriptEnabled &&
+ hp.tsParseAssignableListItemTypes.call(void 0);
+ }
+ function al(e, t = !1) {
+ if ((t || ll(e), !Mt.eat.call(void 0, fn.TokenType.eq))) return;
+ let s = gt.state.tokens.length - 1;
+ Yi.parseMaybeAssign.call(void 0),
+ (gt.state.tokens[s].rhsEndIndex = gt.state.tokens.length);
+ }
+ Nn.parseMaybeDefault = al;
+ });
+ var hi = Z((Oe) => {
+ 'use strict';
+ Object.defineProperty(Oe, '__esModule', {value: !0});
+ var v = xt(),
+ oe = It(),
+ k = be(),
+ I = Zt(),
+ _e = Ns(),
+ di = lo(),
+ Rn = nr(),
+ H = cs(),
+ rT = vl();
+ function ul() {
+ return v.match.call(void 0, k.TokenType.name);
+ }
+ function oT() {
+ return (
+ v.match.call(void 0, k.TokenType.name) ||
+ !!(I.state.type & k.TokenType.IS_KEYWORD) ||
+ v.match.call(void 0, k.TokenType.string) ||
+ v.match.call(void 0, k.TokenType.num) ||
+ v.match.call(void 0, k.TokenType.bigint) ||
+ v.match.call(void 0, k.TokenType.decimal)
+ );
+ }
+ function _p() {
+ let e = I.state.snapshot();
+ return (
+ v.next.call(void 0),
+ (v.match.call(void 0, k.TokenType.bracketL) ||
+ v.match.call(void 0, k.TokenType.braceL) ||
+ v.match.call(void 0, k.TokenType.star) ||
+ v.match.call(void 0, k.TokenType.ellipsis) ||
+ v.match.call(void 0, k.TokenType.hash) ||
+ oT()) &&
+ !H.hasPrecedingLineBreak.call(void 0)
+ ? !0
+ : (I.state.restoreFromSnapshot(e), !1)
+ );
+ }
+ function bp(e) {
+ for (; dl(e) !== null; );
+ }
+ Oe.tsParseModifiers = bp;
+ function dl(e) {
+ if (!v.match.call(void 0, k.TokenType.name)) return null;
+ let t = I.state.contextualKeyword;
+ if (e.indexOf(t) !== -1 && _p()) {
+ switch (t) {
+ case oe.ContextualKeyword._readonly:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._readonly;
+ break;
+ case oe.ContextualKeyword._abstract:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._abstract;
+ break;
+ case oe.ContextualKeyword._static:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._static;
+ break;
+ case oe.ContextualKeyword._public:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._public;
+ break;
+ case oe.ContextualKeyword._private:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._private;
+ break;
+ case oe.ContextualKeyword._protected:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._protected;
+ break;
+ case oe.ContextualKeyword._override:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._override;
+ break;
+ case oe.ContextualKeyword._declare:
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._declare;
+ break;
+ default:
+ break;
+ }
+ return t;
+ }
+ return null;
+ }
+ Oe.tsParseModifier = dl;
+ function Zi() {
+ for (
+ _e.parseIdentifier.call(void 0);
+ v.eat.call(void 0, k.TokenType.dot);
+
+ )
+ _e.parseIdentifier.call(void 0);
+ }
+ function aT() {
+ Zi(),
+ !H.hasPrecedingLineBreak.call(void 0) &&
+ v.match.call(void 0, k.TokenType.lessThan) &&
+ yi();
+ }
+ function lT() {
+ v.next.call(void 0), tr();
+ }
+ function cT() {
+ v.next.call(void 0);
+ }
+ function uT() {
+ H.expect.call(void 0, k.TokenType._typeof),
+ v.match.call(void 0, k.TokenType._import) ? Cp() : Zi(),
+ !H.hasPrecedingLineBreak.call(void 0) &&
+ v.match.call(void 0, k.TokenType.lessThan) &&
+ yi();
+ }
+ function Cp() {
+ H.expect.call(void 0, k.TokenType._import),
+ H.expect.call(void 0, k.TokenType.parenL),
+ H.expect.call(void 0, k.TokenType.string),
+ H.expect.call(void 0, k.TokenType.parenR),
+ v.eat.call(void 0, k.TokenType.dot) && Zi(),
+ v.match.call(void 0, k.TokenType.lessThan) && yi();
+ }
+ function pT() {
+ v.eat.call(void 0, k.TokenType._const);
+ let e = v.eat.call(void 0, k.TokenType._in),
+ t = H.eatContextual.call(void 0, oe.ContextualKeyword._out);
+ v.eat.call(void 0, k.TokenType._const),
+ (e || t) && !v.match.call(void 0, k.TokenType.name)
+ ? (I.state.tokens[I.state.tokens.length - 1].type = k.TokenType.name)
+ : _e.parseIdentifier.call(void 0),
+ v.eat.call(void 0, k.TokenType._extends) && rt(),
+ v.eat.call(void 0, k.TokenType.eq) && rt();
+ }
+ function mi() {
+ v.match.call(void 0, k.TokenType.lessThan) && uo();
+ }
+ Oe.tsTryParseTypeParameters = mi;
+ function uo() {
+ let e = v.pushTypeContext.call(void 0, 0);
+ for (
+ v.match.call(void 0, k.TokenType.lessThan) ||
+ v.match.call(void 0, k.TokenType.typeParameterStart)
+ ? v.next.call(void 0)
+ : H.unexpected.call(void 0);
+ !v.eat.call(void 0, k.TokenType.greaterThan) && !I.state.error;
+
+ )
+ pT(), v.eat.call(void 0, k.TokenType.comma);
+ v.popTypeContext.call(void 0, e);
+ }
+ function ml(e) {
+ let t = e === k.TokenType.arrow;
+ mi(),
+ H.expect.call(void 0, k.TokenType.parenL),
+ I.state.scopeDepth++,
+ hT(!1),
+ I.state.scopeDepth--,
+ (t || v.match.call(void 0, e)) && Qi(e);
+ }
+ function hT(e) {
+ di.parseBindingList.call(void 0, k.TokenType.parenR, e);
+ }
+ function co() {
+ v.eat.call(void 0, k.TokenType.comma) || H.semicolon.call(void 0);
+ }
+ function kp() {
+ ml(k.TokenType.colon), co();
+ }
+ function fT() {
+ let e = I.state.snapshot();
+ v.next.call(void 0);
+ let t =
+ v.eat.call(void 0, k.TokenType.name) &&
+ v.match.call(void 0, k.TokenType.colon);
+ return I.state.restoreFromSnapshot(e), t;
+ }
+ function wp() {
+ if (!(v.match.call(void 0, k.TokenType.bracketL) && fT())) return !1;
+ let e = v.pushTypeContext.call(void 0, 0);
+ return (
+ H.expect.call(void 0, k.TokenType.bracketL),
+ _e.parseIdentifier.call(void 0),
+ tr(),
+ H.expect.call(void 0, k.TokenType.bracketR),
+ er(),
+ co(),
+ v.popTypeContext.call(void 0, e),
+ !0
+ );
+ }
+ function vp(e) {
+ v.eat.call(void 0, k.TokenType.question),
+ !e &&
+ (v.match.call(void 0, k.TokenType.parenL) ||
+ v.match.call(void 0, k.TokenType.lessThan))
+ ? (ml(k.TokenType.colon), co())
+ : (er(), co());
+ }
+ function dT() {
+ if (
+ v.match.call(void 0, k.TokenType.parenL) ||
+ v.match.call(void 0, k.TokenType.lessThan)
+ ) {
+ kp();
+ return;
+ }
+ if (v.match.call(void 0, k.TokenType._new)) {
+ v.next.call(void 0),
+ v.match.call(void 0, k.TokenType.parenL) ||
+ v.match.call(void 0, k.TokenType.lessThan)
+ ? kp()
+ : vp(!1);
+ return;
+ }
+ let e = !!dl([oe.ContextualKeyword._readonly]);
+ wp() ||
+ ((H.isContextual.call(void 0, oe.ContextualKeyword._get) ||
+ H.isContextual.call(void 0, oe.ContextualKeyword._set)) &&
+ _p(),
+ _e.parsePropertyName.call(void 0, -1),
+ vp(e));
+ }
+ function mT() {
+ Sp();
+ }
+ function Sp() {
+ for (
+ H.expect.call(void 0, k.TokenType.braceL);
+ !v.eat.call(void 0, k.TokenType.braceR) && !I.state.error;
+
+ )
+ dT();
+ }
+ function yT() {
+ let e = I.state.snapshot(),
+ t = TT();
+ return I.state.restoreFromSnapshot(e), t;
+ }
+ function TT() {
+ return (
+ v.next.call(void 0),
+ v.eat.call(void 0, k.TokenType.plus) ||
+ v.eat.call(void 0, k.TokenType.minus)
+ ? H.isContextual.call(void 0, oe.ContextualKeyword._readonly)
+ : (H.isContextual.call(void 0, oe.ContextualKeyword._readonly) &&
+ v.next.call(void 0),
+ !v.match.call(void 0, k.TokenType.bracketL) ||
+ (v.next.call(void 0), !ul())
+ ? !1
+ : (v.next.call(void 0), v.match.call(void 0, k.TokenType._in)))
+ );
+ }
+ function kT() {
+ _e.parseIdentifier.call(void 0),
+ H.expect.call(void 0, k.TokenType._in),
+ rt();
+ }
+ function vT() {
+ H.expect.call(void 0, k.TokenType.braceL),
+ v.match.call(void 0, k.TokenType.plus) ||
+ v.match.call(void 0, k.TokenType.minus)
+ ? (v.next.call(void 0),
+ H.expectContextual.call(void 0, oe.ContextualKeyword._readonly))
+ : H.eatContextual.call(void 0, oe.ContextualKeyword._readonly),
+ H.expect.call(void 0, k.TokenType.bracketL),
+ kT(),
+ H.eatContextual.call(void 0, oe.ContextualKeyword._as) && rt(),
+ H.expect.call(void 0, k.TokenType.bracketR),
+ v.match.call(void 0, k.TokenType.plus) ||
+ v.match.call(void 0, k.TokenType.minus)
+ ? (v.next.call(void 0), H.expect.call(void 0, k.TokenType.question))
+ : v.eat.call(void 0, k.TokenType.question),
+ LT(),
+ H.semicolon.call(void 0),
+ H.expect.call(void 0, k.TokenType.braceR);
+ }
+ function xT() {
+ for (
+ H.expect.call(void 0, k.TokenType.bracketL);
+ !v.eat.call(void 0, k.TokenType.bracketR) && !I.state.error;
+
+ )
+ gT(), v.eat.call(void 0, k.TokenType.comma);
+ }
+ function gT() {
+ v.eat.call(void 0, k.TokenType.ellipsis)
+ ? rt()
+ : (rt(), v.eat.call(void 0, k.TokenType.question)),
+ v.eat.call(void 0, k.TokenType.colon) && rt();
+ }
+ function _T() {
+ H.expect.call(void 0, k.TokenType.parenL),
+ rt(),
+ H.expect.call(void 0, k.TokenType.parenR);
+ }
+ function bT() {
+ for (
+ v.nextTemplateToken.call(void 0), v.nextTemplateToken.call(void 0);
+ !v.match.call(void 0, k.TokenType.backQuote) && !I.state.error;
+
+ )
+ H.expect.call(void 0, k.TokenType.dollarBraceL),
+ rt(),
+ v.nextTemplateToken.call(void 0),
+ v.nextTemplateToken.call(void 0);
+ v.next.call(void 0);
+ }
+ var hs;
+ (function (e) {
+ e[(e.TSFunctionType = 0)] = 'TSFunctionType';
+ let s = 1;
+ e[(e.TSConstructorType = s)] = 'TSConstructorType';
+ let i = s + 1;
+ e[(e.TSAbstractConstructorType = i)] = 'TSAbstractConstructorType';
+ })(hs || (hs = {}));
+ function cl(e) {
+ e === hs.TSAbstractConstructorType &&
+ H.expectContextual.call(void 0, oe.ContextualKeyword._abstract),
+ (e === hs.TSConstructorType || e === hs.TSAbstractConstructorType) &&
+ H.expect.call(void 0, k.TokenType._new);
+ let t = I.state.inDisallowConditionalTypesContext;
+ (I.state.inDisallowConditionalTypesContext = !1),
+ ml(k.TokenType.arrow),
+ (I.state.inDisallowConditionalTypesContext = t);
+ }
+ function CT() {
+ switch (I.state.type) {
+ case k.TokenType.name:
+ aT();
+ return;
+ case k.TokenType._void:
+ case k.TokenType._null:
+ v.next.call(void 0);
+ return;
+ case k.TokenType.string:
+ case k.TokenType.num:
+ case k.TokenType.bigint:
+ case k.TokenType.decimal:
+ case k.TokenType._true:
+ case k.TokenType._false:
+ _e.parseLiteral.call(void 0);
+ return;
+ case k.TokenType.minus:
+ v.next.call(void 0), _e.parseLiteral.call(void 0);
+ return;
+ case k.TokenType._this: {
+ cT(),
+ H.isContextual.call(void 0, oe.ContextualKeyword._is) &&
+ !H.hasPrecedingLineBreak.call(void 0) &&
+ lT();
+ return;
+ }
+ case k.TokenType._typeof:
+ uT();
+ return;
+ case k.TokenType._import:
+ Cp();
+ return;
+ case k.TokenType.braceL:
+ yT() ? vT() : mT();
+ return;
+ case k.TokenType.bracketL:
+ xT();
+ return;
+ case k.TokenType.parenL:
+ _T();
+ return;
+ case k.TokenType.backQuote:
+ bT();
+ return;
+ default:
+ if (I.state.type & k.TokenType.IS_KEYWORD) {
+ v.next.call(void 0),
+ (I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType.name);
+ return;
+ }
+ break;
+ }
+ H.unexpected.call(void 0);
+ }
+ function wT() {
+ for (
+ CT();
+ !H.hasPrecedingLineBreak.call(void 0) &&
+ v.eat.call(void 0, k.TokenType.bracketL);
+
+ )
+ v.eat.call(void 0, k.TokenType.bracketR) ||
+ (rt(), H.expect.call(void 0, k.TokenType.bracketR));
+ }
+ function ST() {
+ if (
+ (H.expectContextual.call(void 0, oe.ContextualKeyword._infer),
+ _e.parseIdentifier.call(void 0),
+ v.match.call(void 0, k.TokenType._extends))
+ ) {
+ let e = I.state.snapshot();
+ H.expect.call(void 0, k.TokenType._extends);
+ let t = I.state.inDisallowConditionalTypesContext;
+ (I.state.inDisallowConditionalTypesContext = !0),
+ rt(),
+ (I.state.inDisallowConditionalTypesContext = t),
+ (I.state.error ||
+ (!I.state.inDisallowConditionalTypesContext &&
+ v.match.call(void 0, k.TokenType.question))) &&
+ I.state.restoreFromSnapshot(e);
+ }
+ }
+ function pl() {
+ if (
+ H.isContextual.call(void 0, oe.ContextualKeyword._keyof) ||
+ H.isContextual.call(void 0, oe.ContextualKeyword._unique) ||
+ H.isContextual.call(void 0, oe.ContextualKeyword._readonly)
+ )
+ v.next.call(void 0), pl();
+ else if (H.isContextual.call(void 0, oe.ContextualKeyword._infer)) ST();
+ else {
+ let e = I.state.inDisallowConditionalTypesContext;
+ (I.state.inDisallowConditionalTypesContext = !1),
+ wT(),
+ (I.state.inDisallowConditionalTypesContext = e);
+ }
+ }
+ function xp() {
+ if (
+ (v.eat.call(void 0, k.TokenType.bitwiseAND),
+ pl(),
+ v.match.call(void 0, k.TokenType.bitwiseAND))
+ )
+ for (; v.eat.call(void 0, k.TokenType.bitwiseAND); ) pl();
+ }
+ function IT() {
+ if (
+ (v.eat.call(void 0, k.TokenType.bitwiseOR),
+ xp(),
+ v.match.call(void 0, k.TokenType.bitwiseOR))
+ )
+ for (; v.eat.call(void 0, k.TokenType.bitwiseOR); ) xp();
+ }
+ function ET() {
+ return v.match.call(void 0, k.TokenType.lessThan)
+ ? !0
+ : v.match.call(void 0, k.TokenType.parenL) && PT();
+ }
+ function AT() {
+ if (
+ v.match.call(void 0, k.TokenType.name) ||
+ v.match.call(void 0, k.TokenType._this)
+ )
+ return v.next.call(void 0), !0;
+ if (
+ v.match.call(void 0, k.TokenType.braceL) ||
+ v.match.call(void 0, k.TokenType.bracketL)
+ ) {
+ let e = 1;
+ for (v.next.call(void 0); e > 0 && !I.state.error; )
+ v.match.call(void 0, k.TokenType.braceL) ||
+ v.match.call(void 0, k.TokenType.bracketL)
+ ? e++
+ : (v.match.call(void 0, k.TokenType.braceR) ||
+ v.match.call(void 0, k.TokenType.bracketR)) &&
+ e--,
+ v.next.call(void 0);
+ return !0;
+ }
+ return !1;
+ }
+ function PT() {
+ let e = I.state.snapshot(),
+ t = NT();
+ return I.state.restoreFromSnapshot(e), t;
+ }
+ function NT() {
+ return (
+ v.next.call(void 0),
+ !!(
+ v.match.call(void 0, k.TokenType.parenR) ||
+ v.match.call(void 0, k.TokenType.ellipsis) ||
+ (AT() &&
+ (v.match.call(void 0, k.TokenType.colon) ||
+ v.match.call(void 0, k.TokenType.comma) ||
+ v.match.call(void 0, k.TokenType.question) ||
+ v.match.call(void 0, k.TokenType.eq) ||
+ (v.match.call(void 0, k.TokenType.parenR) &&
+ (v.next.call(void 0),
+ v.match.call(void 0, k.TokenType.arrow)))))
+ )
+ );
+ }
+ function Qi(e) {
+ let t = v.pushTypeContext.call(void 0, 0);
+ H.expect.call(void 0, e), OT() || rt(), v.popTypeContext.call(void 0, t);
+ }
+ function RT() {
+ v.match.call(void 0, k.TokenType.colon) && Qi(k.TokenType.colon);
+ }
+ function er() {
+ v.match.call(void 0, k.TokenType.colon) && tr();
+ }
+ Oe.tsTryParseTypeAnnotation = er;
+ function LT() {
+ v.eat.call(void 0, k.TokenType.colon) && rt();
+ }
+ function OT() {
+ let e = I.state.snapshot();
+ return H.isContextual.call(void 0, oe.ContextualKeyword._asserts)
+ ? (v.next.call(void 0),
+ H.eatContextual.call(void 0, oe.ContextualKeyword._is)
+ ? (rt(), !0)
+ : ul() || v.match.call(void 0, k.TokenType._this)
+ ? (v.next.call(void 0),
+ H.eatContextual.call(void 0, oe.ContextualKeyword._is) && rt(),
+ !0)
+ : (I.state.restoreFromSnapshot(e), !1))
+ : ul() || v.match.call(void 0, k.TokenType._this)
+ ? (v.next.call(void 0),
+ H.isContextual.call(void 0, oe.ContextualKeyword._is) &&
+ !H.hasPrecedingLineBreak.call(void 0)
+ ? (v.next.call(void 0), rt(), !0)
+ : (I.state.restoreFromSnapshot(e), !1))
+ : !1;
+ }
+ function tr() {
+ let e = v.pushTypeContext.call(void 0, 0);
+ H.expect.call(void 0, k.TokenType.colon),
+ rt(),
+ v.popTypeContext.call(void 0, e);
+ }
+ Oe.tsParseTypeAnnotation = tr;
+ function rt() {
+ if (
+ (hl(),
+ I.state.inDisallowConditionalTypesContext ||
+ H.hasPrecedingLineBreak.call(void 0) ||
+ !v.eat.call(void 0, k.TokenType._extends))
+ )
+ return;
+ let e = I.state.inDisallowConditionalTypesContext;
+ (I.state.inDisallowConditionalTypesContext = !0),
+ hl(),
+ (I.state.inDisallowConditionalTypesContext = e),
+ H.expect.call(void 0, k.TokenType.question),
+ rt(),
+ H.expect.call(void 0, k.TokenType.colon),
+ rt();
+ }
+ Oe.tsParseType = rt;
+ function DT() {
+ return (
+ H.isContextual.call(void 0, oe.ContextualKeyword._abstract) &&
+ v.lookaheadType.call(void 0) === k.TokenType._new
+ );
+ }
+ function hl() {
+ if (ET()) {
+ cl(hs.TSFunctionType);
+ return;
+ }
+ if (v.match.call(void 0, k.TokenType._new)) {
+ cl(hs.TSConstructorType);
+ return;
+ } else if (DT()) {
+ cl(hs.TSAbstractConstructorType);
+ return;
+ }
+ IT();
+ }
+ Oe.tsParseNonConditionalType = hl;
+ function MT() {
+ let e = v.pushTypeContext.call(void 0, 1);
+ rt(),
+ H.expect.call(void 0, k.TokenType.greaterThan),
+ v.popTypeContext.call(void 0, e),
+ _e.parseMaybeUnary.call(void 0);
+ }
+ Oe.tsParseTypeAssertion = MT;
+ function FT() {
+ if (v.eat.call(void 0, k.TokenType.jsxTagStart)) {
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType.typeParameterStart;
+ let e = v.pushTypeContext.call(void 0, 1);
+ for (
+ ;
+ !v.match.call(void 0, k.TokenType.greaterThan) && !I.state.error;
+
+ )
+ rt(), v.eat.call(void 0, k.TokenType.comma);
+ rT.nextJSXTagToken.call(void 0), v.popTypeContext.call(void 0, e);
+ }
+ }
+ Oe.tsTryParseJSXTypeArgument = FT;
+ function Ip() {
+ for (; !v.match.call(void 0, k.TokenType.braceL) && !I.state.error; )
+ BT(), v.eat.call(void 0, k.TokenType.comma);
+ }
+ function BT() {
+ Zi(), v.match.call(void 0, k.TokenType.lessThan) && yi();
+ }
+ function VT() {
+ di.parseBindingIdentifier.call(void 0, !1),
+ mi(),
+ v.eat.call(void 0, k.TokenType._extends) && Ip(),
+ Sp();
+ }
+ function jT() {
+ di.parseBindingIdentifier.call(void 0, !1),
+ mi(),
+ H.expect.call(void 0, k.TokenType.eq),
+ rt(),
+ H.semicolon.call(void 0);
+ }
+ function $T() {
+ if (
+ (v.match.call(void 0, k.TokenType.string)
+ ? _e.parseLiteral.call(void 0)
+ : _e.parseIdentifier.call(void 0),
+ v.eat.call(void 0, k.TokenType.eq))
+ ) {
+ let e = I.state.tokens.length - 1;
+ _e.parseMaybeAssign.call(void 0),
+ (I.state.tokens[e].rhsEndIndex = I.state.tokens.length);
+ }
+ }
+ function yl() {
+ for (
+ di.parseBindingIdentifier.call(void 0, !1),
+ H.expect.call(void 0, k.TokenType.braceL);
+ !v.eat.call(void 0, k.TokenType.braceR) && !I.state.error;
+
+ )
+ $T(), v.eat.call(void 0, k.TokenType.comma);
+ }
+ function Tl() {
+ H.expect.call(void 0, k.TokenType.braceL),
+ Rn.parseBlockBody.call(void 0, k.TokenType.braceR);
+ }
+ function fl() {
+ di.parseBindingIdentifier.call(void 0, !1),
+ v.eat.call(void 0, k.TokenType.dot) ? fl() : Tl();
+ }
+ function Ep() {
+ H.isContextual.call(void 0, oe.ContextualKeyword._global)
+ ? _e.parseIdentifier.call(void 0)
+ : v.match.call(void 0, k.TokenType.string)
+ ? _e.parseExprAtom.call(void 0)
+ : H.unexpected.call(void 0),
+ v.match.call(void 0, k.TokenType.braceL)
+ ? Tl()
+ : H.semicolon.call(void 0);
+ }
+ function Ap() {
+ di.parseImportedIdentifier.call(void 0),
+ H.expect.call(void 0, k.TokenType.eq),
+ KT(),
+ H.semicolon.call(void 0);
+ }
+ Oe.tsParseImportEqualsDeclaration = Ap;
+ function qT() {
+ return (
+ H.isContextual.call(void 0, oe.ContextualKeyword._require) &&
+ v.lookaheadType.call(void 0) === k.TokenType.parenL
+ );
+ }
+ function KT() {
+ qT() ? UT() : Zi();
+ }
+ function UT() {
+ H.expectContextual.call(void 0, oe.ContextualKeyword._require),
+ H.expect.call(void 0, k.TokenType.parenL),
+ v.match.call(void 0, k.TokenType.string) || H.unexpected.call(void 0),
+ _e.parseLiteral.call(void 0),
+ H.expect.call(void 0, k.TokenType.parenR);
+ }
+ function HT() {
+ if (H.isLineTerminator.call(void 0)) return !1;
+ switch (I.state.type) {
+ case k.TokenType._function: {
+ let e = v.pushTypeContext.call(void 0, 1);
+ v.next.call(void 0);
+ let t = I.state.start;
+ return (
+ Rn.parseFunction.call(void 0, t, !0),
+ v.popTypeContext.call(void 0, e),
+ !0
+ );
+ }
+ case k.TokenType._class: {
+ let e = v.pushTypeContext.call(void 0, 1);
+ return (
+ Rn.parseClass.call(void 0, !0, !1),
+ v.popTypeContext.call(void 0, e),
+ !0
+ );
+ }
+ case k.TokenType._const:
+ if (
+ v.match.call(void 0, k.TokenType._const) &&
+ H.isLookaheadContextual.call(void 0, oe.ContextualKeyword._enum)
+ ) {
+ let e = v.pushTypeContext.call(void 0, 1);
+ return (
+ H.expect.call(void 0, k.TokenType._const),
+ H.expectContextual.call(void 0, oe.ContextualKeyword._enum),
+ (I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._enum),
+ yl(),
+ v.popTypeContext.call(void 0, e),
+ !0
+ );
+ }
+ case k.TokenType._var:
+ case k.TokenType._let: {
+ let e = v.pushTypeContext.call(void 0, 1);
+ return (
+ Rn.parseVarStatement.call(
+ void 0,
+ I.state.type !== k.TokenType._var
+ ),
+ v.popTypeContext.call(void 0, e),
+ !0
+ );
+ }
+ case k.TokenType.name: {
+ let e = v.pushTypeContext.call(void 0, 1),
+ t = I.state.contextualKeyword,
+ s = !1;
+ return (
+ t === oe.ContextualKeyword._global
+ ? (Ep(), (s = !0))
+ : (s = po(t, !0)),
+ v.popTypeContext.call(void 0, e),
+ s
+ );
+ }
+ default:
+ return !1;
+ }
+ }
+ function gp() {
+ return po(I.state.contextualKeyword, !0);
+ }
+ function WT(e) {
+ switch (e) {
+ case oe.ContextualKeyword._declare: {
+ let t = I.state.tokens.length - 1;
+ if (HT()) return (I.state.tokens[t].type = k.TokenType._declare), !0;
+ break;
+ }
+ case oe.ContextualKeyword._global:
+ if (v.match.call(void 0, k.TokenType.braceL)) return Tl(), !0;
+ break;
+ default:
+ return po(e, !1);
+ }
+ return !1;
+ }
+ function po(e, t) {
+ switch (e) {
+ case oe.ContextualKeyword._abstract:
+ if (fi(t) && v.match.call(void 0, k.TokenType._class))
+ return (
+ (I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._abstract),
+ Rn.parseClass.call(void 0, !0, !1),
+ !0
+ );
+ break;
+ case oe.ContextualKeyword._enum:
+ if (fi(t) && v.match.call(void 0, k.TokenType.name))
+ return (
+ (I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._enum),
+ yl(),
+ !0
+ );
+ break;
+ case oe.ContextualKeyword._interface:
+ if (fi(t) && v.match.call(void 0, k.TokenType.name)) {
+ let s = v.pushTypeContext.call(void 0, t ? 2 : 1);
+ return VT(), v.popTypeContext.call(void 0, s), !0;
+ }
+ break;
+ case oe.ContextualKeyword._module:
+ if (fi(t)) {
+ if (v.match.call(void 0, k.TokenType.string)) {
+ let s = v.pushTypeContext.call(void 0, t ? 2 : 1);
+ return Ep(), v.popTypeContext.call(void 0, s), !0;
+ } else if (v.match.call(void 0, k.TokenType.name)) {
+ let s = v.pushTypeContext.call(void 0, t ? 2 : 1);
+ return fl(), v.popTypeContext.call(void 0, s), !0;
+ }
+ }
+ break;
+ case oe.ContextualKeyword._namespace:
+ if (fi(t) && v.match.call(void 0, k.TokenType.name)) {
+ let s = v.pushTypeContext.call(void 0, t ? 2 : 1);
+ return fl(), v.popTypeContext.call(void 0, s), !0;
+ }
+ break;
+ case oe.ContextualKeyword._type:
+ if (fi(t) && v.match.call(void 0, k.TokenType.name)) {
+ let s = v.pushTypeContext.call(void 0, t ? 2 : 1);
+ return jT(), v.popTypeContext.call(void 0, s), !0;
+ }
+ break;
+ default:
+ break;
+ }
+ return !1;
+ }
+ function fi(e) {
+ return e ? (v.next.call(void 0), !0) : !H.isLineTerminator.call(void 0);
+ }
+ function GT() {
+ let e = I.state.snapshot();
+ return (
+ uo(),
+ Rn.parseFunctionParams.call(void 0),
+ RT(),
+ H.expect.call(void 0, k.TokenType.arrow),
+ I.state.error
+ ? (I.state.restoreFromSnapshot(e), !1)
+ : (_e.parseFunctionBody.call(void 0, !0), !0)
+ );
+ }
+ function kl() {
+ I.state.type === k.TokenType.bitShiftL &&
+ ((I.state.pos -= 1), v.finishToken.call(void 0, k.TokenType.lessThan)),
+ yi();
+ }
+ function yi() {
+ let e = v.pushTypeContext.call(void 0, 0);
+ for (
+ H.expect.call(void 0, k.TokenType.lessThan);
+ !v.eat.call(void 0, k.TokenType.greaterThan) && !I.state.error;
+
+ )
+ rt(), v.eat.call(void 0, k.TokenType.comma);
+ v.popTypeContext.call(void 0, e);
+ }
+ function zT() {
+ if (v.match.call(void 0, k.TokenType.name))
+ switch (I.state.contextualKeyword) {
+ case oe.ContextualKeyword._abstract:
+ case oe.ContextualKeyword._declare:
+ case oe.ContextualKeyword._enum:
+ case oe.ContextualKeyword._interface:
+ case oe.ContextualKeyword._module:
+ case oe.ContextualKeyword._namespace:
+ case oe.ContextualKeyword._type:
+ return !0;
+ default:
+ break;
+ }
+ return !1;
+ }
+ Oe.tsIsDeclarationStart = zT;
+ function XT(e, t) {
+ if (
+ (v.match.call(void 0, k.TokenType.colon) && Qi(k.TokenType.colon),
+ !v.match.call(void 0, k.TokenType.braceL) &&
+ H.isLineTerminator.call(void 0))
+ ) {
+ let s = I.state.tokens.length - 1;
+ for (
+ ;
+ s >= 0 &&
+ (I.state.tokens[s].start >= e ||
+ I.state.tokens[s].type === k.TokenType._default ||
+ I.state.tokens[s].type === k.TokenType._export);
+
+ )
+ (I.state.tokens[s].isType = !0), s--;
+ return;
+ }
+ _e.parseFunctionBody.call(void 0, !1, t);
+ }
+ Oe.tsParseFunctionBodyAndFinish = XT;
+ function YT(e, t, s) {
+ if (
+ !H.hasPrecedingLineBreak.call(void 0) &&
+ v.eat.call(void 0, k.TokenType.bang)
+ ) {
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType.nonNullAssertion;
+ return;
+ }
+ if (
+ v.match.call(void 0, k.TokenType.lessThan) ||
+ v.match.call(void 0, k.TokenType.bitShiftL)
+ ) {
+ let i = I.state.snapshot();
+ if (!t && _e.atPossibleAsync.call(void 0) && GT()) return;
+ if (
+ (kl(),
+ !t && v.eat.call(void 0, k.TokenType.parenL)
+ ? ((I.state.tokens[I.state.tokens.length - 1].subscriptStartIndex =
+ e),
+ _e.parseCallExpressionArguments.call(void 0))
+ : v.match.call(void 0, k.TokenType.backQuote)
+ ? _e.parseTemplate.call(void 0)
+ : (I.state.type === k.TokenType.greaterThan ||
+ (I.state.type !== k.TokenType.parenL &&
+ I.state.type & k.TokenType.IS_EXPRESSION_START &&
+ !H.hasPrecedingLineBreak.call(void 0))) &&
+ H.unexpected.call(void 0),
+ I.state.error)
+ )
+ I.state.restoreFromSnapshot(i);
+ else return;
+ } else
+ !t &&
+ v.match.call(void 0, k.TokenType.questionDot) &&
+ v.lookaheadType.call(void 0) === k.TokenType.lessThan &&
+ (v.next.call(void 0),
+ (I.state.tokens[e].isOptionalChainStart = !0),
+ (I.state.tokens[I.state.tokens.length - 1].subscriptStartIndex = e),
+ yi(),
+ H.expect.call(void 0, k.TokenType.parenL),
+ _e.parseCallExpressionArguments.call(void 0));
+ _e.baseParseSubscript.call(void 0, e, t, s);
+ }
+ Oe.tsParseSubscript = YT;
+ function JT() {
+ if (v.eat.call(void 0, k.TokenType._import))
+ return (
+ H.isContextual.call(void 0, oe.ContextualKeyword._type) &&
+ v.lookaheadType.call(void 0) !== k.TokenType.eq &&
+ H.expectContextual.call(void 0, oe.ContextualKeyword._type),
+ Ap(),
+ !0
+ );
+ if (v.eat.call(void 0, k.TokenType.eq))
+ return _e.parseExpression.call(void 0), H.semicolon.call(void 0), !0;
+ if (H.eatContextual.call(void 0, oe.ContextualKeyword._as))
+ return (
+ H.expectContextual.call(void 0, oe.ContextualKeyword._namespace),
+ _e.parseIdentifier.call(void 0),
+ H.semicolon.call(void 0),
+ !0
+ );
+ if (H.isContextual.call(void 0, oe.ContextualKeyword._type)) {
+ let e = v.lookaheadType.call(void 0);
+ (e === k.TokenType.braceL || e === k.TokenType.star) &&
+ v.next.call(void 0);
+ }
+ return !1;
+ }
+ Oe.tsTryParseExport = JT;
+ function QT() {
+ if (
+ (_e.parseIdentifier.call(void 0),
+ v.match.call(void 0, k.TokenType.comma) ||
+ v.match.call(void 0, k.TokenType.braceR))
+ ) {
+ I.state.tokens[I.state.tokens.length - 1].identifierRole =
+ v.IdentifierRole.ImportDeclaration;
+ return;
+ }
+ if (
+ (_e.parseIdentifier.call(void 0),
+ v.match.call(void 0, k.TokenType.comma) ||
+ v.match.call(void 0, k.TokenType.braceR))
+ ) {
+ (I.state.tokens[I.state.tokens.length - 1].identifierRole =
+ v.IdentifierRole.ImportDeclaration),
+ (I.state.tokens[I.state.tokens.length - 2].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 1].isType = !0);
+ return;
+ }
+ if (
+ (_e.parseIdentifier.call(void 0),
+ v.match.call(void 0, k.TokenType.comma) ||
+ v.match.call(void 0, k.TokenType.braceR))
+ ) {
+ (I.state.tokens[I.state.tokens.length - 3].identifierRole =
+ v.IdentifierRole.ImportAccess),
+ (I.state.tokens[I.state.tokens.length - 1].identifierRole =
+ v.IdentifierRole.ImportDeclaration);
+ return;
+ }
+ _e.parseIdentifier.call(void 0),
+ (I.state.tokens[I.state.tokens.length - 3].identifierRole =
+ v.IdentifierRole.ImportAccess),
+ (I.state.tokens[I.state.tokens.length - 1].identifierRole =
+ v.IdentifierRole.ImportDeclaration),
+ (I.state.tokens[I.state.tokens.length - 4].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 3].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 2].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 1].isType = !0);
+ }
+ Oe.tsParseImportSpecifier = QT;
+ function ZT() {
+ if (
+ (_e.parseIdentifier.call(void 0),
+ v.match.call(void 0, k.TokenType.comma) ||
+ v.match.call(void 0, k.TokenType.braceR))
+ ) {
+ I.state.tokens[I.state.tokens.length - 1].identifierRole =
+ v.IdentifierRole.ExportAccess;
+ return;
+ }
+ if (
+ (_e.parseIdentifier.call(void 0),
+ v.match.call(void 0, k.TokenType.comma) ||
+ v.match.call(void 0, k.TokenType.braceR))
+ ) {
+ (I.state.tokens[I.state.tokens.length - 1].identifierRole =
+ v.IdentifierRole.ExportAccess),
+ (I.state.tokens[I.state.tokens.length - 2].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 1].isType = !0);
+ return;
+ }
+ if (
+ (_e.parseIdentifier.call(void 0),
+ v.match.call(void 0, k.TokenType.comma) ||
+ v.match.call(void 0, k.TokenType.braceR))
+ ) {
+ I.state.tokens[I.state.tokens.length - 3].identifierRole =
+ v.IdentifierRole.ExportAccess;
+ return;
+ }
+ _e.parseIdentifier.call(void 0),
+ (I.state.tokens[I.state.tokens.length - 3].identifierRole =
+ v.IdentifierRole.ExportAccess),
+ (I.state.tokens[I.state.tokens.length - 4].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 3].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 2].isType = !0),
+ (I.state.tokens[I.state.tokens.length - 1].isType = !0);
+ }
+ Oe.tsParseExportSpecifier = ZT;
+ function ek() {
+ if (
+ H.isContextual.call(void 0, oe.ContextualKeyword._abstract) &&
+ v.lookaheadType.call(void 0) === k.TokenType._class
+ )
+ return (
+ (I.state.type = k.TokenType._abstract),
+ v.next.call(void 0),
+ Rn.parseClass.call(void 0, !0, !0),
+ !0
+ );
+ if (H.isContextual.call(void 0, oe.ContextualKeyword._interface)) {
+ let e = v.pushTypeContext.call(void 0, 2);
+ return (
+ po(oe.ContextualKeyword._interface, !0),
+ v.popTypeContext.call(void 0, e),
+ !0
+ );
+ }
+ return !1;
+ }
+ Oe.tsTryParseExportDefaultExpression = ek;
+ function tk() {
+ if (I.state.type === k.TokenType._const) {
+ let e = v.lookaheadTypeAndKeyword.call(void 0);
+ if (
+ e.type === k.TokenType.name &&
+ e.contextualKeyword === oe.ContextualKeyword._enum
+ )
+ return (
+ H.expect.call(void 0, k.TokenType._const),
+ H.expectContextual.call(void 0, oe.ContextualKeyword._enum),
+ (I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._enum),
+ yl(),
+ !0
+ );
+ }
+ return !1;
+ }
+ Oe.tsTryParseStatementContent = tk;
+ function nk(e) {
+ let t = I.state.tokens.length;
+ bp([
+ oe.ContextualKeyword._abstract,
+ oe.ContextualKeyword._readonly,
+ oe.ContextualKeyword._declare,
+ oe.ContextualKeyword._static,
+ oe.ContextualKeyword._override,
+ ]);
+ let s = I.state.tokens.length;
+ if (wp()) {
+ let r = e ? t - 1 : t;
+ for (let a = r; a < s; a++) I.state.tokens[a].isType = !0;
+ return !0;
+ }
+ return !1;
+ }
+ Oe.tsTryParseClassMemberWithIsStatic = nk;
+ function sk(e) {
+ WT(e) || H.semicolon.call(void 0);
+ }
+ Oe.tsParseIdentifierStatement = sk;
+ function ik() {
+ let e = H.eatContextual.call(void 0, oe.ContextualKeyword._declare);
+ e &&
+ (I.state.tokens[I.state.tokens.length - 1].type = k.TokenType._declare);
+ let t = !1;
+ if (v.match.call(void 0, k.TokenType.name))
+ if (e) {
+ let s = v.pushTypeContext.call(void 0, 2);
+ (t = gp()), v.popTypeContext.call(void 0, s);
+ } else t = gp();
+ if (!t)
+ if (e) {
+ let s = v.pushTypeContext.call(void 0, 2);
+ Rn.parseStatement.call(void 0, !0), v.popTypeContext.call(void 0, s);
+ } else Rn.parseStatement.call(void 0, !0);
+ }
+ Oe.tsParseExportDeclaration = ik;
+ function rk(e) {
+ if (
+ (e &&
+ (v.match.call(void 0, k.TokenType.lessThan) ||
+ v.match.call(void 0, k.TokenType.bitShiftL)) &&
+ kl(),
+ H.eatContextual.call(void 0, oe.ContextualKeyword._implements))
+ ) {
+ I.state.tokens[I.state.tokens.length - 1].type =
+ k.TokenType._implements;
+ let t = v.pushTypeContext.call(void 0, 1);
+ Ip(), v.popTypeContext.call(void 0, t);
+ }
+ }
+ Oe.tsAfterParseClassSuper = rk;
+ function ok() {
+ mi();
+ }
+ Oe.tsStartParseObjPropValue = ok;
+ function ak() {
+ mi();
+ }
+ Oe.tsStartParseFunctionParams = ak;
+ function lk() {
+ let e = v.pushTypeContext.call(void 0, 0);
+ H.hasPrecedingLineBreak.call(void 0) ||
+ v.eat.call(void 0, k.TokenType.bang),
+ er(),
+ v.popTypeContext.call(void 0, e);
+ }
+ Oe.tsAfterParseVarHead = lk;
+ function ck() {
+ v.match.call(void 0, k.TokenType.colon) && tr();
+ }
+ Oe.tsStartParseAsyncArrowFromCallExpression = ck;
+ function uk(e, t) {
+ return I.isJSXEnabled ? Pp(e, t) : Np(e, t);
+ }
+ Oe.tsParseMaybeAssign = uk;
+ function Pp(e, t) {
+ if (!v.match.call(void 0, k.TokenType.lessThan))
+ return _e.baseParseMaybeAssign.call(void 0, e, t);
+ let s = I.state.snapshot(),
+ i = _e.baseParseMaybeAssign.call(void 0, e, t);
+ if (I.state.error) I.state.restoreFromSnapshot(s);
+ else return i;
+ return (
+ (I.state.type = k.TokenType.typeParameterStart),
+ uo(),
+ (i = _e.baseParseMaybeAssign.call(void 0, e, t)),
+ i || H.unexpected.call(void 0),
+ i
+ );
+ }
+ Oe.tsParseMaybeAssignWithJSX = Pp;
+ function Np(e, t) {
+ if (!v.match.call(void 0, k.TokenType.lessThan))
+ return _e.baseParseMaybeAssign.call(void 0, e, t);
+ let s = I.state.snapshot();
+ uo();
+ let i = _e.baseParseMaybeAssign.call(void 0, e, t);
+ if ((i || H.unexpected.call(void 0), I.state.error))
+ I.state.restoreFromSnapshot(s);
+ else return i;
+ return _e.baseParseMaybeAssign.call(void 0, e, t);
+ }
+ Oe.tsParseMaybeAssignWithoutJSX = Np;
+ function pk() {
+ if (v.match.call(void 0, k.TokenType.colon)) {
+ let e = I.state.snapshot();
+ Qi(k.TokenType.colon),
+ H.canInsertSemicolon.call(void 0) && H.unexpected.call(void 0),
+ v.match.call(void 0, k.TokenType.arrow) || H.unexpected.call(void 0),
+ I.state.error && I.state.restoreFromSnapshot(e);
+ }
+ return v.eat.call(void 0, k.TokenType.arrow);
+ }
+ Oe.tsParseArrow = pk;
+ function hk() {
+ let e = v.pushTypeContext.call(void 0, 0);
+ v.eat.call(void 0, k.TokenType.question),
+ er(),
+ v.popTypeContext.call(void 0, e);
+ }
+ Oe.tsParseAssignableListItemTypes = hk;
+ function fk() {
+ (v.match.call(void 0, k.TokenType.lessThan) ||
+ v.match.call(void 0, k.TokenType.bitShiftL)) &&
+ kl(),
+ Rn.baseParseMaybeDecoratorArguments.call(void 0);
+ }
+ Oe.tsParseMaybeDecoratorArguments = fk;
+ });
+ var vl = Z((fo) => {
+ 'use strict';
+ Object.defineProperty(fo, '__esModule', {value: !0});
+ var Se = xt(),
+ Me = be(),
+ fe = Zt(),
+ ho = Ns(),
+ fs = cs(),
+ at = Qt(),
+ Rp = li(),
+ dk = hi();
+ function mk() {
+ let e = !1,
+ t = !1;
+ for (;;) {
+ if (fe.state.pos >= fe.input.length) {
+ fs.unexpected.call(void 0, 'Unterminated JSX contents');
+ return;
+ }
+ let s = fe.input.charCodeAt(fe.state.pos);
+ if (s === at.charCodes.lessThan || s === at.charCodes.leftCurlyBrace) {
+ if (fe.state.pos === fe.state.start) {
+ if (s === at.charCodes.lessThan) {
+ fe.state.pos++,
+ Se.finishToken.call(void 0, Me.TokenType.jsxTagStart);
+ return;
+ }
+ Se.getTokenFromCode.call(void 0, s);
+ return;
+ }
+ e && !t
+ ? Se.finishToken.call(void 0, Me.TokenType.jsxEmptyText)
+ : Se.finishToken.call(void 0, Me.TokenType.jsxText);
+ return;
+ }
+ s === at.charCodes.lineFeed
+ ? (e = !0)
+ : s !== at.charCodes.space &&
+ s !== at.charCodes.carriageReturn &&
+ s !== at.charCodes.tab &&
+ (t = !0),
+ fe.state.pos++;
+ }
+ }
+ function yk(e) {
+ for (fe.state.pos++; ; ) {
+ if (fe.state.pos >= fe.input.length) {
+ fs.unexpected.call(void 0, 'Unterminated string constant');
+ return;
+ }
+ if (fe.input.charCodeAt(fe.state.pos) === e) {
+ fe.state.pos++;
+ break;
+ }
+ fe.state.pos++;
+ }
+ Se.finishToken.call(void 0, Me.TokenType.string);
+ }
+ function Tk() {
+ let e;
+ do {
+ if (fe.state.pos > fe.input.length) {
+ fs.unexpected.call(void 0, 'Unexpectedly reached the end of input.');
+ return;
+ }
+ e = fe.input.charCodeAt(++fe.state.pos);
+ } while (Rp.IS_IDENTIFIER_CHAR[e] || e === at.charCodes.dash);
+ Se.finishToken.call(void 0, Me.TokenType.jsxName);
+ }
+ function xl() {
+ dn();
+ }
+ function Lp(e) {
+ if ((xl(), !Se.eat.call(void 0, Me.TokenType.colon))) {
+ fe.state.tokens[fe.state.tokens.length - 1].identifierRole = e;
+ return;
+ }
+ xl();
+ }
+ function Op() {
+ let e = fe.state.tokens.length;
+ Lp(Se.IdentifierRole.Access);
+ let t = !1;
+ for (; Se.match.call(void 0, Me.TokenType.dot); ) (t = !0), dn(), xl();
+ if (!t) {
+ let s = fe.state.tokens[e],
+ i = fe.input.charCodeAt(s.start);
+ i >= at.charCodes.lowercaseA &&
+ i <= at.charCodes.lowercaseZ &&
+ (s.identifierRole = null);
+ }
+ }
+ function kk() {
+ switch (fe.state.type) {
+ case Me.TokenType.braceL:
+ Se.next.call(void 0), ho.parseExpression.call(void 0), dn();
+ return;
+ case Me.TokenType.jsxTagStart:
+ Mp(), dn();
+ return;
+ case Me.TokenType.string:
+ dn();
+ return;
+ default:
+ fs.unexpected.call(
+ void 0,
+ 'JSX value should be either an expression or a quoted JSX text'
+ );
+ }
+ }
+ function vk() {
+ fs.expect.call(void 0, Me.TokenType.ellipsis),
+ ho.parseExpression.call(void 0);
+ }
+ function xk(e) {
+ if (Se.match.call(void 0, Me.TokenType.jsxTagEnd)) return !1;
+ Op(), fe.isTypeScriptEnabled && dk.tsTryParseJSXTypeArgument.call(void 0);
+ let t = !1;
+ for (
+ ;
+ !Se.match.call(void 0, Me.TokenType.slash) &&
+ !Se.match.call(void 0, Me.TokenType.jsxTagEnd) &&
+ !fe.state.error;
+
+ ) {
+ if (Se.eat.call(void 0, Me.TokenType.braceL)) {
+ (t = !0),
+ fs.expect.call(void 0, Me.TokenType.ellipsis),
+ ho.parseMaybeAssign.call(void 0),
+ dn();
+ continue;
+ }
+ t &&
+ fe.state.end - fe.state.start === 3 &&
+ fe.input.charCodeAt(fe.state.start) === at.charCodes.lowercaseK &&
+ fe.input.charCodeAt(fe.state.start + 1) === at.charCodes.lowercaseE &&
+ fe.input.charCodeAt(fe.state.start + 2) === at.charCodes.lowercaseY &&
+ (fe.state.tokens[e].jsxRole = Se.JSXRole.KeyAfterPropSpread),
+ Lp(Se.IdentifierRole.ObjectKey),
+ Se.match.call(void 0, Me.TokenType.eq) && (dn(), kk());
+ }
+ let s = Se.match.call(void 0, Me.TokenType.slash);
+ return s && dn(), s;
+ }
+ function gk() {
+ Se.match.call(void 0, Me.TokenType.jsxTagEnd) || Op();
+ }
+ function Dp() {
+ let e = fe.state.tokens.length - 1;
+ fe.state.tokens[e].jsxRole = Se.JSXRole.NoChildren;
+ let t = 0;
+ if (!xk(e))
+ for (Ti(); ; )
+ switch (fe.state.type) {
+ case Me.TokenType.jsxTagStart:
+ if ((dn(), Se.match.call(void 0, Me.TokenType.slash))) {
+ dn(),
+ gk(),
+ fe.state.tokens[e].jsxRole !==
+ Se.JSXRole.KeyAfterPropSpread &&
+ (t === 1
+ ? (fe.state.tokens[e].jsxRole = Se.JSXRole.OneChild)
+ : t > 1 &&
+ (fe.state.tokens[e].jsxRole =
+ Se.JSXRole.StaticChildren));
+ return;
+ }
+ t++, Dp(), Ti();
+ break;
+ case Me.TokenType.jsxText:
+ t++, Ti();
+ break;
+ case Me.TokenType.jsxEmptyText:
+ Ti();
+ break;
+ case Me.TokenType.braceL:
+ Se.next.call(void 0),
+ Se.match.call(void 0, Me.TokenType.ellipsis)
+ ? (vk(), Ti(), (t += 2))
+ : (Se.match.call(void 0, Me.TokenType.braceR) ||
+ (t++, ho.parseExpression.call(void 0)),
+ Ti());
+ break;
+ default:
+ fs.unexpected.call(void 0);
+ return;
+ }
+ }
+ function Mp() {
+ dn(), Dp();
+ }
+ fo.jsxParseElement = Mp;
+ function dn() {
+ fe.state.tokens.push(new Se.Token()),
+ Se.skipSpace.call(void 0),
+ (fe.state.start = fe.state.pos);
+ let e = fe.input.charCodeAt(fe.state.pos);
+ if (Rp.IS_IDENTIFIER_START[e]) Tk();
+ else if (
+ e === at.charCodes.quotationMark ||
+ e === at.charCodes.apostrophe
+ )
+ yk(e);
+ else
+ switch ((++fe.state.pos, e)) {
+ case at.charCodes.greaterThan:
+ Se.finishToken.call(void 0, Me.TokenType.jsxTagEnd);
+ break;
+ case at.charCodes.lessThan:
+ Se.finishToken.call(void 0, Me.TokenType.jsxTagStart);
+ break;
+ case at.charCodes.slash:
+ Se.finishToken.call(void 0, Me.TokenType.slash);
+ break;
+ case at.charCodes.equalsTo:
+ Se.finishToken.call(void 0, Me.TokenType.eq);
+ break;
+ case at.charCodes.leftCurlyBrace:
+ Se.finishToken.call(void 0, Me.TokenType.braceL);
+ break;
+ case at.charCodes.dot:
+ Se.finishToken.call(void 0, Me.TokenType.dot);
+ break;
+ case at.charCodes.colon:
+ Se.finishToken.call(void 0, Me.TokenType.colon);
+ break;
+ default:
+ fs.unexpected.call(void 0);
+ }
+ }
+ fo.nextJSXTagToken = dn;
+ function Ti() {
+ fe.state.tokens.push(new Se.Token()),
+ (fe.state.start = fe.state.pos),
+ mk();
+ }
+ });
+ var Bp = Z((yo) => {
+ 'use strict';
+ Object.defineProperty(yo, '__esModule', {value: !0});
+ var mo = xt(),
+ ki = be(),
+ Fp = Zt(),
+ _k = Ns(),
+ bk = Ji(),
+ Ck = hi();
+ function wk(e) {
+ if (mo.match.call(void 0, ki.TokenType.question)) {
+ let t = mo.lookaheadType.call(void 0);
+ if (
+ t === ki.TokenType.colon ||
+ t === ki.TokenType.comma ||
+ t === ki.TokenType.parenR
+ )
+ return;
+ }
+ _k.baseParseConditional.call(void 0, e);
+ }
+ yo.typedParseConditional = wk;
+ function Sk() {
+ mo.eatTypeToken.call(void 0, ki.TokenType.question),
+ mo.match.call(void 0, ki.TokenType.colon) &&
+ (Fp.isTypeScriptEnabled
+ ? Ck.tsParseTypeAnnotation.call(void 0)
+ : Fp.isFlowEnabled && bk.flowParseTypeAnnotation.call(void 0));
+ }
+ yo.typedParseParenItem = Sk;
+ });
+ var Ns = Z((et) => {
+ 'use strict';
+ Object.defineProperty(et, '__esModule', {value: !0});
+ var Yn = Ji(),
+ Ik = vl(),
+ Vp = Bp(),
+ ms = hi(),
+ K = xt(),
+ zn = It(),
+ jp = qr(),
+ B = be(),
+ $p = Qt(),
+ Ek = li(),
+ j = Zt(),
+ ds = lo(),
+ gn = nr(),
+ Pe = cs(),
+ vo = class {
+ constructor(t) {
+ this.stop = t;
+ }
+ };
+ et.StopState = vo;
+ function sr(e = !1) {
+ if ((mn(e), K.match.call(void 0, B.TokenType.comma)))
+ for (; K.eat.call(void 0, B.TokenType.comma); ) mn(e);
+ }
+ et.parseExpression = sr;
+ function mn(e = !1, t = !1) {
+ return j.isTypeScriptEnabled
+ ? ms.tsParseMaybeAssign.call(void 0, e, t)
+ : j.isFlowEnabled
+ ? Yn.flowParseMaybeAssign.call(void 0, e, t)
+ : qp(e, t);
+ }
+ et.parseMaybeAssign = mn;
+ function qp(e, t) {
+ if (K.match.call(void 0, B.TokenType._yield)) return Hk(), !1;
+ (K.match.call(void 0, B.TokenType.parenL) ||
+ K.match.call(void 0, B.TokenType.name) ||
+ K.match.call(void 0, B.TokenType._yield)) &&
+ (j.state.potentialArrowAt = j.state.start);
+ let s = Ak(e);
+ return (
+ t && wl(),
+ j.state.type & B.TokenType.IS_ASSIGN
+ ? (K.next.call(void 0), mn(e), !1)
+ : s
+ );
+ }
+ et.baseParseMaybeAssign = qp;
+ function Ak(e) {
+ return Nk(e) ? !0 : (Pk(e), !1);
+ }
+ function Pk(e) {
+ j.isTypeScriptEnabled || j.isFlowEnabled
+ ? Vp.typedParseConditional.call(void 0, e)
+ : Kp(e);
+ }
+ function Kp(e) {
+ K.eat.call(void 0, B.TokenType.question) &&
+ (mn(), Pe.expect.call(void 0, B.TokenType.colon), mn(e));
+ }
+ et.baseParseConditional = Kp;
+ function Nk(e) {
+ let t = j.state.tokens.length;
+ return rr() ? !0 : (To(t, -1, e), !1);
+ }
+ function To(e, t, s) {
+ if (
+ j.isTypeScriptEnabled &&
+ (B.TokenType._in & B.TokenType.PRECEDENCE_MASK) > t &&
+ !Pe.hasPrecedingLineBreak.call(void 0) &&
+ (Pe.eatContextual.call(void 0, zn.ContextualKeyword._as) ||
+ Pe.eatContextual.call(void 0, zn.ContextualKeyword._satisfies))
+ ) {
+ let r = K.pushTypeContext.call(void 0, 1);
+ ms.tsParseType.call(void 0),
+ K.popTypeContext.call(void 0, r),
+ K.rescan_gt.call(void 0),
+ To(e, t, s);
+ return;
+ }
+ let i = j.state.type & B.TokenType.PRECEDENCE_MASK;
+ if (i > 0 && (!s || !K.match.call(void 0, B.TokenType._in)) && i > t) {
+ let r = j.state.type;
+ K.next.call(void 0),
+ r === B.TokenType.nullishCoalescing &&
+ (j.state.tokens[j.state.tokens.length - 1].nullishStartIndex = e);
+ let a = j.state.tokens.length;
+ rr(),
+ To(a, r & B.TokenType.IS_RIGHT_ASSOCIATIVE ? i - 1 : i, s),
+ r === B.TokenType.nullishCoalescing &&
+ (j.state.tokens[e].numNullishCoalesceStarts++,
+ j.state.tokens[j.state.tokens.length - 1].numNullishCoalesceEnds++),
+ To(e, t, s);
+ }
+ }
+ function rr() {
+ if (
+ j.isTypeScriptEnabled &&
+ !j.isJSXEnabled &&
+ K.eat.call(void 0, B.TokenType.lessThan)
+ )
+ return ms.tsParseTypeAssertion.call(void 0), !1;
+ if (
+ Pe.isContextual.call(void 0, zn.ContextualKeyword._module) &&
+ K.lookaheadCharCode.call(void 0) === $p.charCodes.leftCurlyBrace &&
+ !Pe.hasFollowingLineBreak.call(void 0)
+ )
+ return Wk(), !1;
+ if (j.state.type & B.TokenType.IS_PREFIX)
+ return K.next.call(void 0), rr(), !1;
+ if (Up()) return !0;
+ for (
+ ;
+ j.state.type & B.TokenType.IS_POSTFIX &&
+ !Pe.canInsertSemicolon.call(void 0);
+
+ )
+ j.state.type === B.TokenType.preIncDec &&
+ (j.state.type = B.TokenType.postIncDec),
+ K.next.call(void 0);
+ return !1;
+ }
+ et.parseMaybeUnary = rr;
+ function Up() {
+ let e = j.state.tokens.length;
+ return _o()
+ ? !0
+ : (bl(e),
+ j.state.tokens.length > e &&
+ j.state.tokens[e].isOptionalChainStart &&
+ (j.state.tokens[j.state.tokens.length - 1].isOptionalChainEnd = !0),
+ !1);
+ }
+ et.parseExprSubscripts = Up;
+ function bl(e, t = !1) {
+ j.isFlowEnabled ? Yn.flowParseSubscripts.call(void 0, e, t) : Hp(e, t);
+ }
+ function Hp(e, t = !1) {
+ let s = new vo(!1);
+ do Rk(e, t, s);
+ while (!s.stop && !j.state.error);
+ }
+ et.baseParseSubscripts = Hp;
+ function Rk(e, t, s) {
+ j.isTypeScriptEnabled
+ ? ms.tsParseSubscript.call(void 0, e, t, s)
+ : j.isFlowEnabled
+ ? Yn.flowParseSubscript.call(void 0, e, t, s)
+ : Wp(e, t, s);
+ }
+ function Wp(e, t, s) {
+ if (!t && K.eat.call(void 0, B.TokenType.doubleColon))
+ Cl(), (s.stop = !0), bl(e, t);
+ else if (K.match.call(void 0, B.TokenType.questionDot)) {
+ if (
+ ((j.state.tokens[e].isOptionalChainStart = !0),
+ t && K.lookaheadType.call(void 0) === B.TokenType.parenL)
+ ) {
+ s.stop = !0;
+ return;
+ }
+ K.next.call(void 0),
+ (j.state.tokens[j.state.tokens.length - 1].subscriptStartIndex = e),
+ K.eat.call(void 0, B.TokenType.bracketL)
+ ? (sr(), Pe.expect.call(void 0, B.TokenType.bracketR))
+ : K.eat.call(void 0, B.TokenType.parenL)
+ ? ko()
+ : xo();
+ } else if (K.eat.call(void 0, B.TokenType.dot))
+ (j.state.tokens[j.state.tokens.length - 1].subscriptStartIndex = e),
+ xo();
+ else if (K.eat.call(void 0, B.TokenType.bracketL))
+ (j.state.tokens[j.state.tokens.length - 1].subscriptStartIndex = e),
+ sr(),
+ Pe.expect.call(void 0, B.TokenType.bracketR);
+ else if (!t && K.match.call(void 0, B.TokenType.parenL))
+ if (Gp()) {
+ let i = j.state.snapshot(),
+ r = j.state.tokens.length;
+ K.next.call(void 0),
+ (j.state.tokens[j.state.tokens.length - 1].subscriptStartIndex = e);
+ let a = j.getNextContextId.call(void 0);
+ (j.state.tokens[j.state.tokens.length - 1].contextId = a),
+ ko(),
+ (j.state.tokens[j.state.tokens.length - 1].contextId = a),
+ Lk() &&
+ (j.state.restoreFromSnapshot(i),
+ (s.stop = !0),
+ j.state.scopeDepth++,
+ gn.parseFunctionParams.call(void 0),
+ Ok(r));
+ } else {
+ K.next.call(void 0),
+ (j.state.tokens[j.state.tokens.length - 1].subscriptStartIndex = e);
+ let i = j.getNextContextId.call(void 0);
+ (j.state.tokens[j.state.tokens.length - 1].contextId = i),
+ ko(),
+ (j.state.tokens[j.state.tokens.length - 1].contextId = i);
+ }
+ else K.match.call(void 0, B.TokenType.backQuote) ? Sl() : (s.stop = !0);
+ }
+ et.baseParseSubscript = Wp;
+ function Gp() {
+ return (
+ j.state.tokens[j.state.tokens.length - 1].contextualKeyword ===
+ zn.ContextualKeyword._async && !Pe.canInsertSemicolon.call(void 0)
+ );
+ }
+ et.atPossibleAsync = Gp;
+ function ko() {
+ let e = !0;
+ for (; !K.eat.call(void 0, B.TokenType.parenR) && !j.state.error; ) {
+ if (e) e = !1;
+ else if (
+ (Pe.expect.call(void 0, B.TokenType.comma),
+ K.eat.call(void 0, B.TokenType.parenR))
+ )
+ break;
+ Zp(!1);
+ }
+ }
+ et.parseCallExpressionArguments = ko;
+ function Lk() {
+ return (
+ K.match.call(void 0, B.TokenType.colon) ||
+ K.match.call(void 0, B.TokenType.arrow)
+ );
+ }
+ function Ok(e) {
+ j.isTypeScriptEnabled
+ ? ms.tsStartParseAsyncArrowFromCallExpression.call(void 0)
+ : j.isFlowEnabled &&
+ Yn.flowStartParseAsyncArrowFromCallExpression.call(void 0),
+ Pe.expect.call(void 0, B.TokenType.arrow),
+ ir(e);
+ }
+ function Cl() {
+ let e = j.state.tokens.length;
+ _o(), bl(e, !0);
+ }
+ function _o() {
+ if (K.eat.call(void 0, B.TokenType.modulo)) return Xn(), !1;
+ if (
+ K.match.call(void 0, B.TokenType.jsxText) ||
+ K.match.call(void 0, B.TokenType.jsxEmptyText)
+ )
+ return zp(), !1;
+ if (K.match.call(void 0, B.TokenType.lessThan) && j.isJSXEnabled)
+ return (
+ (j.state.type = B.TokenType.jsxTagStart),
+ Ik.jsxParseElement.call(void 0),
+ K.next.call(void 0),
+ !1
+ );
+ let e = j.state.potentialArrowAt === j.state.start;
+ switch (j.state.type) {
+ case B.TokenType.slash:
+ case B.TokenType.assign:
+ K.retokenizeSlashAsRegex.call(void 0);
+ case B.TokenType._super:
+ case B.TokenType._this:
+ case B.TokenType.regexp:
+ case B.TokenType.num:
+ case B.TokenType.bigint:
+ case B.TokenType.decimal:
+ case B.TokenType.string:
+ case B.TokenType._null:
+ case B.TokenType._true:
+ case B.TokenType._false:
+ return K.next.call(void 0), !1;
+ case B.TokenType._import:
+ return (
+ K.next.call(void 0),
+ K.match.call(void 0, B.TokenType.dot) &&
+ ((j.state.tokens[j.state.tokens.length - 1].type =
+ B.TokenType.name),
+ K.next.call(void 0),
+ Xn()),
+ !1
+ );
+ case B.TokenType.name: {
+ let t = j.state.tokens.length,
+ s = j.state.start,
+ i = j.state.contextualKeyword;
+ return (
+ Xn(),
+ i === zn.ContextualKeyword._await
+ ? (Uk(), !1)
+ : i === zn.ContextualKeyword._async &&
+ K.match.call(void 0, B.TokenType._function) &&
+ !Pe.canInsertSemicolon.call(void 0)
+ ? (K.next.call(void 0), gn.parseFunction.call(void 0, s, !1), !1)
+ : e &&
+ i === zn.ContextualKeyword._async &&
+ !Pe.canInsertSemicolon.call(void 0) &&
+ K.match.call(void 0, B.TokenType.name)
+ ? (j.state.scopeDepth++,
+ ds.parseBindingIdentifier.call(void 0, !1),
+ Pe.expect.call(void 0, B.TokenType.arrow),
+ ir(t),
+ !0)
+ : K.match.call(void 0, B.TokenType._do) &&
+ !Pe.canInsertSemicolon.call(void 0)
+ ? (K.next.call(void 0), gn.parseBlock.call(void 0), !1)
+ : e &&
+ !Pe.canInsertSemicolon.call(void 0) &&
+ K.match.call(void 0, B.TokenType.arrow)
+ ? (j.state.scopeDepth++,
+ ds.markPriorBindingIdentifier.call(void 0, !1),
+ Pe.expect.call(void 0, B.TokenType.arrow),
+ ir(t),
+ !0)
+ : ((j.state.tokens[j.state.tokens.length - 1].identifierRole =
+ K.IdentifierRole.Access),
+ !1)
+ );
+ }
+ case B.TokenType._do:
+ return K.next.call(void 0), gn.parseBlock.call(void 0), !1;
+ case B.TokenType.parenL:
+ return Xp(e);
+ case B.TokenType.bracketL:
+ return K.next.call(void 0), Qp(B.TokenType.bracketR, !0), !1;
+ case B.TokenType.braceL:
+ return Yp(!1, !1), !1;
+ case B.TokenType._function:
+ return Dk(), !1;
+ case B.TokenType.at:
+ gn.parseDecorators.call(void 0);
+ case B.TokenType._class:
+ return gn.parseClass.call(void 0, !1), !1;
+ case B.TokenType._new:
+ return Bk(), !1;
+ case B.TokenType.backQuote:
+ return Sl(), !1;
+ case B.TokenType.doubleColon:
+ return K.next.call(void 0), Cl(), !1;
+ case B.TokenType.hash: {
+ let t = K.lookaheadCharCode.call(void 0);
+ return (
+ Ek.IS_IDENTIFIER_START[t] || t === $p.charCodes.backslash
+ ? xo()
+ : K.next.call(void 0),
+ !1
+ );
+ }
+ default:
+ return Pe.unexpected.call(void 0), !1;
+ }
+ }
+ et.parseExprAtom = _o;
+ function xo() {
+ K.eat.call(void 0, B.TokenType.hash), Xn();
+ }
+ function Dk() {
+ let e = j.state.start;
+ Xn(),
+ K.eat.call(void 0, B.TokenType.dot) && Xn(),
+ gn.parseFunction.call(void 0, e, !1);
+ }
+ function zp() {
+ K.next.call(void 0);
+ }
+ et.parseLiteral = zp;
+ function Mk() {
+ Pe.expect.call(void 0, B.TokenType.parenL),
+ sr(),
+ Pe.expect.call(void 0, B.TokenType.parenR);
+ }
+ et.parseParenExpression = Mk;
+ function Xp(e) {
+ let t = j.state.snapshot(),
+ s = j.state.tokens.length;
+ Pe.expect.call(void 0, B.TokenType.parenL);
+ let i = !0;
+ for (; !K.match.call(void 0, B.TokenType.parenR) && !j.state.error; ) {
+ if (i) i = !1;
+ else if (
+ (Pe.expect.call(void 0, B.TokenType.comma),
+ K.match.call(void 0, B.TokenType.parenR))
+ )
+ break;
+ if (K.match.call(void 0, B.TokenType.ellipsis)) {
+ ds.parseRest.call(void 0, !1), wl();
+ break;
+ } else mn(!1, !0);
+ }
+ return (
+ Pe.expect.call(void 0, B.TokenType.parenR),
+ e && Fk() && gl()
+ ? (j.state.restoreFromSnapshot(t),
+ j.state.scopeDepth++,
+ gn.parseFunctionParams.call(void 0),
+ gl(),
+ ir(s),
+ j.state.error ? (j.state.restoreFromSnapshot(t), Xp(!1), !1) : !0)
+ : !1
+ );
+ }
+ function Fk() {
+ return (
+ K.match.call(void 0, B.TokenType.colon) ||
+ !Pe.canInsertSemicolon.call(void 0)
+ );
+ }
+ function gl() {
+ return j.isTypeScriptEnabled
+ ? ms.tsParseArrow.call(void 0)
+ : j.isFlowEnabled
+ ? Yn.flowParseArrow.call(void 0)
+ : K.eat.call(void 0, B.TokenType.arrow);
+ }
+ et.parseArrow = gl;
+ function wl() {
+ (j.isTypeScriptEnabled || j.isFlowEnabled) &&
+ Vp.typedParseParenItem.call(void 0);
+ }
+ function Bk() {
+ if (
+ (Pe.expect.call(void 0, B.TokenType._new),
+ K.eat.call(void 0, B.TokenType.dot))
+ ) {
+ Xn();
+ return;
+ }
+ Vk(),
+ j.isFlowEnabled && Yn.flowStartParseNewArguments.call(void 0),
+ K.eat.call(void 0, B.TokenType.parenL) && Qp(B.TokenType.parenR);
+ }
+ function Vk() {
+ Cl(), K.eat.call(void 0, B.TokenType.questionDot);
+ }
+ function Sl() {
+ for (
+ K.nextTemplateToken.call(void 0), K.nextTemplateToken.call(void 0);
+ !K.match.call(void 0, B.TokenType.backQuote) && !j.state.error;
+
+ )
+ Pe.expect.call(void 0, B.TokenType.dollarBraceL),
+ sr(),
+ K.nextTemplateToken.call(void 0),
+ K.nextTemplateToken.call(void 0);
+ K.next.call(void 0);
+ }
+ et.parseTemplate = Sl;
+ function Yp(e, t) {
+ let s = j.getNextContextId.call(void 0),
+ i = !0;
+ for (
+ K.next.call(void 0),
+ j.state.tokens[j.state.tokens.length - 1].contextId = s;
+ !K.eat.call(void 0, B.TokenType.braceR) && !j.state.error;
+
+ ) {
+ if (i) i = !1;
+ else if (
+ (Pe.expect.call(void 0, B.TokenType.comma),
+ K.eat.call(void 0, B.TokenType.braceR))
+ )
+ break;
+ let r = !1;
+ if (K.match.call(void 0, B.TokenType.ellipsis)) {
+ let a = j.state.tokens.length;
+ if (
+ (ds.parseSpread.call(void 0),
+ e &&
+ (j.state.tokens.length === a + 2 &&
+ ds.markPriorBindingIdentifier.call(void 0, t),
+ K.eat.call(void 0, B.TokenType.braceR)))
+ )
+ break;
+ continue;
+ }
+ e || (r = K.eat.call(void 0, B.TokenType.star)),
+ !e && Pe.isContextual.call(void 0, zn.ContextualKeyword._async)
+ ? (r && Pe.unexpected.call(void 0),
+ Xn(),
+ K.match.call(void 0, B.TokenType.colon) ||
+ K.match.call(void 0, B.TokenType.parenL) ||
+ K.match.call(void 0, B.TokenType.braceR) ||
+ K.match.call(void 0, B.TokenType.eq) ||
+ K.match.call(void 0, B.TokenType.comma) ||
+ (K.match.call(void 0, B.TokenType.star) &&
+ (K.next.call(void 0), (r = !0)),
+ go(s)))
+ : go(s),
+ Kk(e, t, s);
+ }
+ j.state.tokens[j.state.tokens.length - 1].contextId = s;
+ }
+ et.parseObj = Yp;
+ function jk(e) {
+ return (
+ !e &&
+ (K.match.call(void 0, B.TokenType.string) ||
+ K.match.call(void 0, B.TokenType.num) ||
+ K.match.call(void 0, B.TokenType.bracketL) ||
+ K.match.call(void 0, B.TokenType.name) ||
+ !!(j.state.type & B.TokenType.IS_KEYWORD))
+ );
+ }
+ function $k(e, t) {
+ let s = j.state.start;
+ return K.match.call(void 0, B.TokenType.parenL)
+ ? (e && Pe.unexpected.call(void 0), _l(s, !1), !0)
+ : jk(e)
+ ? (go(t), _l(s, !1), !0)
+ : !1;
+ }
+ function qk(e, t) {
+ if (K.eat.call(void 0, B.TokenType.colon)) {
+ e ? ds.parseMaybeDefault.call(void 0, t) : mn(!1);
+ return;
+ }
+ let s;
+ e
+ ? j.state.scopeDepth === 0
+ ? (s = K.IdentifierRole.ObjectShorthandTopLevelDeclaration)
+ : t
+ ? (s = K.IdentifierRole.ObjectShorthandBlockScopedDeclaration)
+ : (s = K.IdentifierRole.ObjectShorthandFunctionScopedDeclaration)
+ : (s = K.IdentifierRole.ObjectShorthand),
+ (j.state.tokens[j.state.tokens.length - 1].identifierRole = s),
+ ds.parseMaybeDefault.call(void 0, t, !0);
+ }
+ function Kk(e, t, s) {
+ j.isTypeScriptEnabled
+ ? ms.tsStartParseObjPropValue.call(void 0)
+ : j.isFlowEnabled && Yn.flowStartParseObjPropValue.call(void 0),
+ $k(e, s) || qk(e, t);
+ }
+ function go(e) {
+ j.isFlowEnabled && Yn.flowParseVariance.call(void 0),
+ K.eat.call(void 0, B.TokenType.bracketL)
+ ? ((j.state.tokens[j.state.tokens.length - 1].contextId = e),
+ mn(),
+ Pe.expect.call(void 0, B.TokenType.bracketR),
+ (j.state.tokens[j.state.tokens.length - 1].contextId = e))
+ : (K.match.call(void 0, B.TokenType.num) ||
+ K.match.call(void 0, B.TokenType.string) ||
+ K.match.call(void 0, B.TokenType.bigint) ||
+ K.match.call(void 0, B.TokenType.decimal)
+ ? _o()
+ : xo(),
+ (j.state.tokens[j.state.tokens.length - 1].identifierRole =
+ K.IdentifierRole.ObjectKey),
+ (j.state.tokens[j.state.tokens.length - 1].contextId = e));
+ }
+ et.parsePropertyName = go;
+ function _l(e, t) {
+ let s = j.getNextContextId.call(void 0);
+ j.state.scopeDepth++;
+ let i = j.state.tokens.length,
+ r = t;
+ gn.parseFunctionParams.call(void 0, r, s), Jp(e, s);
+ let a = j.state.tokens.length;
+ j.state.scopes.push(new jp.Scope(i, a, !0)), j.state.scopeDepth--;
+ }
+ et.parseMethod = _l;
+ function ir(e) {
+ Il(!0);
+ let t = j.state.tokens.length;
+ j.state.scopes.push(new jp.Scope(e, t, !0)), j.state.scopeDepth--;
+ }
+ et.parseArrowExpression = ir;
+ function Jp(e, t = 0) {
+ j.isTypeScriptEnabled
+ ? ms.tsParseFunctionBodyAndFinish.call(void 0, e, t)
+ : j.isFlowEnabled
+ ? Yn.flowParseFunctionBodyAndFinish.call(void 0, t)
+ : Il(!1, t);
+ }
+ et.parseFunctionBodyAndFinish = Jp;
+ function Il(e, t = 0) {
+ e && !K.match.call(void 0, B.TokenType.braceL)
+ ? mn()
+ : gn.parseBlock.call(void 0, !0, t);
+ }
+ et.parseFunctionBody = Il;
+ function Qp(e, t = !1) {
+ let s = !0;
+ for (; !K.eat.call(void 0, e) && !j.state.error; ) {
+ if (s) s = !1;
+ else if (
+ (Pe.expect.call(void 0, B.TokenType.comma), K.eat.call(void 0, e))
+ )
+ break;
+ Zp(t);
+ }
+ }
+ function Zp(e) {
+ (e && K.match.call(void 0, B.TokenType.comma)) ||
+ (K.match.call(void 0, B.TokenType.ellipsis)
+ ? (ds.parseSpread.call(void 0), wl())
+ : K.match.call(void 0, B.TokenType.question)
+ ? K.next.call(void 0)
+ : mn(!1, !0));
+ }
+ function Xn() {
+ K.next.call(void 0),
+ (j.state.tokens[j.state.tokens.length - 1].type = B.TokenType.name);
+ }
+ et.parseIdentifier = Xn;
+ function Uk() {
+ rr();
+ }
+ function Hk() {
+ K.next.call(void 0),
+ !K.match.call(void 0, B.TokenType.semi) &&
+ !Pe.canInsertSemicolon.call(void 0) &&
+ (K.eat.call(void 0, B.TokenType.star), mn());
+ }
+ function Wk() {
+ Pe.expectContextual.call(void 0, zn.ContextualKeyword._module),
+ Pe.expect.call(void 0, B.TokenType.braceL),
+ gn.parseBlockBody.call(void 0, B.TokenType.braceR);
+ }
+ });
+ var Ji = Z((Je) => {
+ 'use strict';
+ Object.defineProperty(Je, '__esModule', {value: !0});
+ var C = xt(),
+ ye = It(),
+ _ = be(),
+ ue = Zt(),
+ je = Ns(),
+ ys = nr(),
+ z = cs();
+ function Gk(e) {
+ return (
+ (e.type === _.TokenType.name || !!(e.type & _.TokenType.IS_KEYWORD)) &&
+ e.contextualKeyword !== ye.ContextualKeyword._from
+ );
+ }
+ function Ln(e) {
+ let t = C.pushTypeContext.call(void 0, 0);
+ z.expect.call(void 0, e || _.TokenType.colon),
+ Wt(),
+ C.popTypeContext.call(void 0, t);
+ }
+ function eh() {
+ z.expect.call(void 0, _.TokenType.modulo),
+ z.expectContextual.call(void 0, ye.ContextualKeyword._checks),
+ C.eat.call(void 0, _.TokenType.parenL) &&
+ (je.parseExpression.call(void 0),
+ z.expect.call(void 0, _.TokenType.parenR));
+ }
+ function Pl() {
+ let e = C.pushTypeContext.call(void 0, 0);
+ z.expect.call(void 0, _.TokenType.colon),
+ C.match.call(void 0, _.TokenType.modulo)
+ ? eh()
+ : (Wt(), C.match.call(void 0, _.TokenType.modulo) && eh()),
+ C.popTypeContext.call(void 0, e);
+ }
+ function zk() {
+ C.next.call(void 0), Nl(!0);
+ }
+ function Xk() {
+ C.next.call(void 0),
+ je.parseIdentifier.call(void 0),
+ C.match.call(void 0, _.TokenType.lessThan) && On(),
+ z.expect.call(void 0, _.TokenType.parenL),
+ Al(),
+ z.expect.call(void 0, _.TokenType.parenR),
+ Pl(),
+ z.semicolon.call(void 0);
+ }
+ function El() {
+ C.match.call(void 0, _.TokenType._class)
+ ? zk()
+ : C.match.call(void 0, _.TokenType._function)
+ ? Xk()
+ : C.match.call(void 0, _.TokenType._var)
+ ? Yk()
+ : z.eatContextual.call(void 0, ye.ContextualKeyword._module)
+ ? C.eat.call(void 0, _.TokenType.dot)
+ ? Zk()
+ : Jk()
+ : z.isContextual.call(void 0, ye.ContextualKeyword._type)
+ ? e0()
+ : z.isContextual.call(void 0, ye.ContextualKeyword._opaque)
+ ? t0()
+ : z.isContextual.call(void 0, ye.ContextualKeyword._interface)
+ ? n0()
+ : C.match.call(void 0, _.TokenType._export)
+ ? Qk()
+ : z.unexpected.call(void 0);
+ }
+ function Yk() {
+ C.next.call(void 0), oh(), z.semicolon.call(void 0);
+ }
+ function Jk() {
+ for (
+ C.match.call(void 0, _.TokenType.string)
+ ? je.parseExprAtom.call(void 0)
+ : je.parseIdentifier.call(void 0),
+ z.expect.call(void 0, _.TokenType.braceL);
+ !C.match.call(void 0, _.TokenType.braceR) && !ue.state.error;
+
+ )
+ C.match.call(void 0, _.TokenType._import)
+ ? (C.next.call(void 0), ys.parseImport.call(void 0))
+ : z.unexpected.call(void 0);
+ z.expect.call(void 0, _.TokenType.braceR);
+ }
+ function Qk() {
+ z.expect.call(void 0, _.TokenType._export),
+ C.eat.call(void 0, _.TokenType._default)
+ ? C.match.call(void 0, _.TokenType._function) ||
+ C.match.call(void 0, _.TokenType._class)
+ ? El()
+ : (Wt(), z.semicolon.call(void 0))
+ : C.match.call(void 0, _.TokenType._var) ||
+ C.match.call(void 0, _.TokenType._function) ||
+ C.match.call(void 0, _.TokenType._class) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._opaque)
+ ? El()
+ : C.match.call(void 0, _.TokenType.star) ||
+ C.match.call(void 0, _.TokenType.braceL) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._interface) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._type) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._opaque)
+ ? ys.parseExport.call(void 0)
+ : z.unexpected.call(void 0);
+ }
+ function Zk() {
+ z.expectContextual.call(void 0, ye.ContextualKeyword._exports),
+ vi(),
+ z.semicolon.call(void 0);
+ }
+ function e0() {
+ C.next.call(void 0), Ll();
+ }
+ function t0() {
+ C.next.call(void 0), Ol(!0);
+ }
+ function n0() {
+ C.next.call(void 0), Nl();
+ }
+ function Nl(e = !1) {
+ if (
+ (So(),
+ C.match.call(void 0, _.TokenType.lessThan) && On(),
+ C.eat.call(void 0, _.TokenType._extends))
+ )
+ do bo();
+ while (!e && C.eat.call(void 0, _.TokenType.comma));
+ if (z.isContextual.call(void 0, ye.ContextualKeyword._mixins)) {
+ C.next.call(void 0);
+ do bo();
+ while (C.eat.call(void 0, _.TokenType.comma));
+ }
+ if (z.isContextual.call(void 0, ye.ContextualKeyword._implements)) {
+ C.next.call(void 0);
+ do bo();
+ while (C.eat.call(void 0, _.TokenType.comma));
+ }
+ Co(e, !1, e);
+ }
+ function bo() {
+ sh(!1), C.match.call(void 0, _.TokenType.lessThan) && Rs();
+ }
+ function Rl() {
+ Nl();
+ }
+ function So() {
+ je.parseIdentifier.call(void 0);
+ }
+ function Ll() {
+ So(),
+ C.match.call(void 0, _.TokenType.lessThan) && On(),
+ Ln(_.TokenType.eq),
+ z.semicolon.call(void 0);
+ }
+ function Ol(e) {
+ z.expectContextual.call(void 0, ye.ContextualKeyword._type),
+ So(),
+ C.match.call(void 0, _.TokenType.lessThan) && On(),
+ C.match.call(void 0, _.TokenType.colon) && Ln(_.TokenType.colon),
+ e || Ln(_.TokenType.eq),
+ z.semicolon.call(void 0);
+ }
+ function s0() {
+ Fl(), oh(), C.eat.call(void 0, _.TokenType.eq) && Wt();
+ }
+ function On() {
+ let e = C.pushTypeContext.call(void 0, 0);
+ C.match.call(void 0, _.TokenType.lessThan) ||
+ C.match.call(void 0, _.TokenType.typeParameterStart)
+ ? C.next.call(void 0)
+ : z.unexpected.call(void 0);
+ do
+ s0(),
+ C.match.call(void 0, _.TokenType.greaterThan) ||
+ z.expect.call(void 0, _.TokenType.comma);
+ while (!C.match.call(void 0, _.TokenType.greaterThan) && !ue.state.error);
+ z.expect.call(void 0, _.TokenType.greaterThan),
+ C.popTypeContext.call(void 0, e);
+ }
+ Je.flowParseTypeParameterDeclaration = On;
+ function Rs() {
+ let e = C.pushTypeContext.call(void 0, 0);
+ for (
+ z.expect.call(void 0, _.TokenType.lessThan);
+ !C.match.call(void 0, _.TokenType.greaterThan) && !ue.state.error;
+
+ )
+ Wt(),
+ C.match.call(void 0, _.TokenType.greaterThan) ||
+ z.expect.call(void 0, _.TokenType.comma);
+ z.expect.call(void 0, _.TokenType.greaterThan),
+ C.popTypeContext.call(void 0, e);
+ }
+ function i0() {
+ if (
+ (z.expectContextual.call(void 0, ye.ContextualKeyword._interface),
+ C.eat.call(void 0, _.TokenType._extends))
+ )
+ do bo();
+ while (C.eat.call(void 0, _.TokenType.comma));
+ Co(!1, !1, !1);
+ }
+ function Dl() {
+ C.match.call(void 0, _.TokenType.num) ||
+ C.match.call(void 0, _.TokenType.string)
+ ? je.parseExprAtom.call(void 0)
+ : je.parseIdentifier.call(void 0);
+ }
+ function r0() {
+ C.lookaheadType.call(void 0) === _.TokenType.colon ? (Dl(), Ln()) : Wt(),
+ z.expect.call(void 0, _.TokenType.bracketR),
+ Ln();
+ }
+ function o0() {
+ Dl(),
+ z.expect.call(void 0, _.TokenType.bracketR),
+ z.expect.call(void 0, _.TokenType.bracketR),
+ C.match.call(void 0, _.TokenType.lessThan) ||
+ C.match.call(void 0, _.TokenType.parenL)
+ ? Ml()
+ : (C.eat.call(void 0, _.TokenType.question), Ln());
+ }
+ function Ml() {
+ for (
+ C.match.call(void 0, _.TokenType.lessThan) && On(),
+ z.expect.call(void 0, _.TokenType.parenL);
+ !C.match.call(void 0, _.TokenType.parenR) &&
+ !C.match.call(void 0, _.TokenType.ellipsis) &&
+ !ue.state.error;
+
+ )
+ wo(),
+ C.match.call(void 0, _.TokenType.parenR) ||
+ z.expect.call(void 0, _.TokenType.comma);
+ C.eat.call(void 0, _.TokenType.ellipsis) && wo(),
+ z.expect.call(void 0, _.TokenType.parenR),
+ Ln();
+ }
+ function a0() {
+ Ml();
+ }
+ function Co(e, t, s) {
+ let i;
+ for (
+ t && C.match.call(void 0, _.TokenType.braceBarL)
+ ? (z.expect.call(void 0, _.TokenType.braceBarL),
+ (i = _.TokenType.braceBarR))
+ : (z.expect.call(void 0, _.TokenType.braceL),
+ (i = _.TokenType.braceR));
+ !C.match.call(void 0, i) && !ue.state.error;
+
+ ) {
+ if (s && z.isContextual.call(void 0, ye.ContextualKeyword._proto)) {
+ let r = C.lookaheadType.call(void 0);
+ r !== _.TokenType.colon &&
+ r !== _.TokenType.question &&
+ (C.next.call(void 0), (e = !1));
+ }
+ if (e && z.isContextual.call(void 0, ye.ContextualKeyword._static)) {
+ let r = C.lookaheadType.call(void 0);
+ r !== _.TokenType.colon &&
+ r !== _.TokenType.question &&
+ C.next.call(void 0);
+ }
+ if ((Fl(), C.eat.call(void 0, _.TokenType.bracketL)))
+ C.eat.call(void 0, _.TokenType.bracketL) ? o0() : r0();
+ else if (
+ C.match.call(void 0, _.TokenType.parenL) ||
+ C.match.call(void 0, _.TokenType.lessThan)
+ )
+ a0();
+ else {
+ if (
+ z.isContextual.call(void 0, ye.ContextualKeyword._get) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._set)
+ ) {
+ let r = C.lookaheadType.call(void 0);
+ (r === _.TokenType.name ||
+ r === _.TokenType.string ||
+ r === _.TokenType.num) &&
+ C.next.call(void 0);
+ }
+ l0();
+ }
+ c0();
+ }
+ z.expect.call(void 0, i);
+ }
+ function l0() {
+ if (C.match.call(void 0, _.TokenType.ellipsis)) {
+ if (
+ (z.expect.call(void 0, _.TokenType.ellipsis),
+ C.eat.call(void 0, _.TokenType.comma) ||
+ C.eat.call(void 0, _.TokenType.semi),
+ C.match.call(void 0, _.TokenType.braceR))
+ )
+ return;
+ Wt();
+ } else
+ Dl(),
+ C.match.call(void 0, _.TokenType.lessThan) ||
+ C.match.call(void 0, _.TokenType.parenL)
+ ? Ml()
+ : (C.eat.call(void 0, _.TokenType.question), Ln());
+ }
+ function c0() {
+ !C.eat.call(void 0, _.TokenType.semi) &&
+ !C.eat.call(void 0, _.TokenType.comma) &&
+ !C.match.call(void 0, _.TokenType.braceR) &&
+ !C.match.call(void 0, _.TokenType.braceBarR) &&
+ z.unexpected.call(void 0);
+ }
+ function sh(e) {
+ for (
+ e || je.parseIdentifier.call(void 0);
+ C.eat.call(void 0, _.TokenType.dot);
+
+ )
+ je.parseIdentifier.call(void 0);
+ }
+ function u0() {
+ sh(!0), C.match.call(void 0, _.TokenType.lessThan) && Rs();
+ }
+ function p0() {
+ z.expect.call(void 0, _.TokenType._typeof), ih();
+ }
+ function h0() {
+ for (
+ z.expect.call(void 0, _.TokenType.bracketL);
+ ue.state.pos < ue.input.length &&
+ !C.match.call(void 0, _.TokenType.bracketR) &&
+ (Wt(), !C.match.call(void 0, _.TokenType.bracketR));
+
+ )
+ z.expect.call(void 0, _.TokenType.comma);
+ z.expect.call(void 0, _.TokenType.bracketR);
+ }
+ function wo() {
+ let e = C.lookaheadType.call(void 0);
+ e === _.TokenType.colon || e === _.TokenType.question
+ ? (je.parseIdentifier.call(void 0),
+ C.eat.call(void 0, _.TokenType.question),
+ Ln())
+ : Wt();
+ }
+ function Al() {
+ for (
+ ;
+ !C.match.call(void 0, _.TokenType.parenR) &&
+ !C.match.call(void 0, _.TokenType.ellipsis) &&
+ !ue.state.error;
+
+ )
+ wo(),
+ C.match.call(void 0, _.TokenType.parenR) ||
+ z.expect.call(void 0, _.TokenType.comma);
+ C.eat.call(void 0, _.TokenType.ellipsis) && wo();
+ }
+ function ih() {
+ let e = !1,
+ t = ue.state.noAnonFunctionType;
+ switch (ue.state.type) {
+ case _.TokenType.name: {
+ if (z.isContextual.call(void 0, ye.ContextualKeyword._interface)) {
+ i0();
+ return;
+ }
+ je.parseIdentifier.call(void 0), u0();
+ return;
+ }
+ case _.TokenType.braceL:
+ Co(!1, !1, !1);
+ return;
+ case _.TokenType.braceBarL:
+ Co(!1, !0, !1);
+ return;
+ case _.TokenType.bracketL:
+ h0();
+ return;
+ case _.TokenType.lessThan:
+ On(),
+ z.expect.call(void 0, _.TokenType.parenL),
+ Al(),
+ z.expect.call(void 0, _.TokenType.parenR),
+ z.expect.call(void 0, _.TokenType.arrow),
+ Wt();
+ return;
+ case _.TokenType.parenL:
+ if (
+ (C.next.call(void 0),
+ !C.match.call(void 0, _.TokenType.parenR) &&
+ !C.match.call(void 0, _.TokenType.ellipsis))
+ )
+ if (C.match.call(void 0, _.TokenType.name)) {
+ let s = C.lookaheadType.call(void 0);
+ e = s !== _.TokenType.question && s !== _.TokenType.colon;
+ } else e = !0;
+ if (e)
+ if (
+ ((ue.state.noAnonFunctionType = !1),
+ Wt(),
+ (ue.state.noAnonFunctionType = t),
+ ue.state.noAnonFunctionType ||
+ !(
+ C.match.call(void 0, _.TokenType.comma) ||
+ (C.match.call(void 0, _.TokenType.parenR) &&
+ C.lookaheadType.call(void 0) === _.TokenType.arrow)
+ ))
+ ) {
+ z.expect.call(void 0, _.TokenType.parenR);
+ return;
+ } else C.eat.call(void 0, _.TokenType.comma);
+ Al(),
+ z.expect.call(void 0, _.TokenType.parenR),
+ z.expect.call(void 0, _.TokenType.arrow),
+ Wt();
+ return;
+ case _.TokenType.minus:
+ C.next.call(void 0), je.parseLiteral.call(void 0);
+ return;
+ case _.TokenType.string:
+ case _.TokenType.num:
+ case _.TokenType._true:
+ case _.TokenType._false:
+ case _.TokenType._null:
+ case _.TokenType._this:
+ case _.TokenType._void:
+ case _.TokenType.star:
+ C.next.call(void 0);
+ return;
+ default:
+ if (ue.state.type === _.TokenType._typeof) {
+ p0();
+ return;
+ } else if (ue.state.type & _.TokenType.IS_KEYWORD) {
+ C.next.call(void 0),
+ (ue.state.tokens[ue.state.tokens.length - 1].type =
+ _.TokenType.name);
+ return;
+ }
+ }
+ z.unexpected.call(void 0);
+ }
+ function f0() {
+ for (
+ ih();
+ !z.canInsertSemicolon.call(void 0) &&
+ (C.match.call(void 0, _.TokenType.bracketL) ||
+ C.match.call(void 0, _.TokenType.questionDot));
+
+ )
+ C.eat.call(void 0, _.TokenType.questionDot),
+ z.expect.call(void 0, _.TokenType.bracketL),
+ C.eat.call(void 0, _.TokenType.bracketR) ||
+ (Wt(), z.expect.call(void 0, _.TokenType.bracketR));
+ }
+ function rh() {
+ C.eat.call(void 0, _.TokenType.question) ? rh() : f0();
+ }
+ function th() {
+ rh(),
+ !ue.state.noAnonFunctionType &&
+ C.eat.call(void 0, _.TokenType.arrow) &&
+ Wt();
+ }
+ function nh() {
+ for (
+ C.eat.call(void 0, _.TokenType.bitwiseAND), th();
+ C.eat.call(void 0, _.TokenType.bitwiseAND);
+
+ )
+ th();
+ }
+ function d0() {
+ for (
+ C.eat.call(void 0, _.TokenType.bitwiseOR), nh();
+ C.eat.call(void 0, _.TokenType.bitwiseOR);
+
+ )
+ nh();
+ }
+ function Wt() {
+ d0();
+ }
+ function vi() {
+ Ln();
+ }
+ Je.flowParseTypeAnnotation = vi;
+ function oh() {
+ je.parseIdentifier.call(void 0),
+ C.match.call(void 0, _.TokenType.colon) && vi();
+ }
+ function Fl() {
+ (C.match.call(void 0, _.TokenType.plus) ||
+ C.match.call(void 0, _.TokenType.minus)) &&
+ (C.next.call(void 0),
+ (ue.state.tokens[ue.state.tokens.length - 1].isType = !0));
+ }
+ Je.flowParseVariance = Fl;
+ function m0(e) {
+ C.match.call(void 0, _.TokenType.colon) && Pl(),
+ je.parseFunctionBody.call(void 0, !1, e);
+ }
+ Je.flowParseFunctionBodyAndFinish = m0;
+ function y0(e, t, s) {
+ if (
+ C.match.call(void 0, _.TokenType.questionDot) &&
+ C.lookaheadType.call(void 0) === _.TokenType.lessThan
+ ) {
+ if (t) {
+ s.stop = !0;
+ return;
+ }
+ C.next.call(void 0),
+ Rs(),
+ z.expect.call(void 0, _.TokenType.parenL),
+ je.parseCallExpressionArguments.call(void 0);
+ return;
+ } else if (!t && C.match.call(void 0, _.TokenType.lessThan)) {
+ let i = ue.state.snapshot();
+ if (
+ (Rs(),
+ z.expect.call(void 0, _.TokenType.parenL),
+ je.parseCallExpressionArguments.call(void 0),
+ ue.state.error)
+ )
+ ue.state.restoreFromSnapshot(i);
+ else return;
+ }
+ je.baseParseSubscript.call(void 0, e, t, s);
+ }
+ Je.flowParseSubscript = y0;
+ function T0() {
+ if (C.match.call(void 0, _.TokenType.lessThan)) {
+ let e = ue.state.snapshot();
+ Rs(), ue.state.error && ue.state.restoreFromSnapshot(e);
+ }
+ }
+ Je.flowStartParseNewArguments = T0;
+ function k0() {
+ if (
+ C.match.call(void 0, _.TokenType.name) &&
+ ue.state.contextualKeyword === ye.ContextualKeyword._interface
+ ) {
+ let e = C.pushTypeContext.call(void 0, 0);
+ return C.next.call(void 0), Rl(), C.popTypeContext.call(void 0, e), !0;
+ } else if (z.isContextual.call(void 0, ye.ContextualKeyword._enum))
+ return ah(), !0;
+ return !1;
+ }
+ Je.flowTryParseStatement = k0;
+ function v0() {
+ return z.isContextual.call(void 0, ye.ContextualKeyword._enum)
+ ? (ah(), !0)
+ : !1;
+ }
+ Je.flowTryParseExportDefaultExpression = v0;
+ function x0(e) {
+ if (e === ye.ContextualKeyword._declare) {
+ if (
+ C.match.call(void 0, _.TokenType._class) ||
+ C.match.call(void 0, _.TokenType.name) ||
+ C.match.call(void 0, _.TokenType._function) ||
+ C.match.call(void 0, _.TokenType._var) ||
+ C.match.call(void 0, _.TokenType._export)
+ ) {
+ let t = C.pushTypeContext.call(void 0, 1);
+ El(), C.popTypeContext.call(void 0, t);
+ }
+ } else if (C.match.call(void 0, _.TokenType.name)) {
+ if (e === ye.ContextualKeyword._interface) {
+ let t = C.pushTypeContext.call(void 0, 1);
+ Rl(), C.popTypeContext.call(void 0, t);
+ } else if (e === ye.ContextualKeyword._type) {
+ let t = C.pushTypeContext.call(void 0, 1);
+ Ll(), C.popTypeContext.call(void 0, t);
+ } else if (e === ye.ContextualKeyword._opaque) {
+ let t = C.pushTypeContext.call(void 0, 1);
+ Ol(!1), C.popTypeContext.call(void 0, t);
+ }
+ }
+ z.semicolon.call(void 0);
+ }
+ Je.flowParseIdentifierStatement = x0;
+ function g0() {
+ return (
+ z.isContextual.call(void 0, ye.ContextualKeyword._type) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._interface) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._opaque) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._enum)
+ );
+ }
+ Je.flowShouldParseExportDeclaration = g0;
+ function _0() {
+ return (
+ C.match.call(void 0, _.TokenType.name) &&
+ (ue.state.contextualKeyword === ye.ContextualKeyword._type ||
+ ue.state.contextualKeyword === ye.ContextualKeyword._interface ||
+ ue.state.contextualKeyword === ye.ContextualKeyword._opaque ||
+ ue.state.contextualKeyword === ye.ContextualKeyword._enum)
+ );
+ }
+ Je.flowShouldDisallowExportDefaultSpecifier = _0;
+ function b0() {
+ if (z.isContextual.call(void 0, ye.ContextualKeyword._type)) {
+ let e = C.pushTypeContext.call(void 0, 1);
+ C.next.call(void 0),
+ C.match.call(void 0, _.TokenType.braceL)
+ ? (ys.parseExportSpecifiers.call(void 0),
+ ys.parseExportFrom.call(void 0))
+ : Ll(),
+ C.popTypeContext.call(void 0, e);
+ } else if (z.isContextual.call(void 0, ye.ContextualKeyword._opaque)) {
+ let e = C.pushTypeContext.call(void 0, 1);
+ C.next.call(void 0), Ol(!1), C.popTypeContext.call(void 0, e);
+ } else if (z.isContextual.call(void 0, ye.ContextualKeyword._interface)) {
+ let e = C.pushTypeContext.call(void 0, 1);
+ C.next.call(void 0), Rl(), C.popTypeContext.call(void 0, e);
+ } else ys.parseStatement.call(void 0, !0);
+ }
+ Je.flowParseExportDeclaration = b0;
+ function C0() {
+ return (
+ C.match.call(void 0, _.TokenType.star) ||
+ (z.isContextual.call(void 0, ye.ContextualKeyword._type) &&
+ C.lookaheadType.call(void 0) === _.TokenType.star)
+ );
+ }
+ Je.flowShouldParseExportStar = C0;
+ function w0() {
+ if (z.eatContextual.call(void 0, ye.ContextualKeyword._type)) {
+ let e = C.pushTypeContext.call(void 0, 2);
+ ys.baseParseExportStar.call(void 0), C.popTypeContext.call(void 0, e);
+ } else ys.baseParseExportStar.call(void 0);
+ }
+ Je.flowParseExportStar = w0;
+ function S0(e) {
+ if (
+ (e && C.match.call(void 0, _.TokenType.lessThan) && Rs(),
+ z.isContextual.call(void 0, ye.ContextualKeyword._implements))
+ ) {
+ let t = C.pushTypeContext.call(void 0, 0);
+ C.next.call(void 0),
+ (ue.state.tokens[ue.state.tokens.length - 1].type =
+ _.TokenType._implements);
+ do So(), C.match.call(void 0, _.TokenType.lessThan) && Rs();
+ while (C.eat.call(void 0, _.TokenType.comma));
+ C.popTypeContext.call(void 0, t);
+ }
+ }
+ Je.flowAfterParseClassSuper = S0;
+ function I0() {
+ C.match.call(void 0, _.TokenType.lessThan) &&
+ (On(),
+ C.match.call(void 0, _.TokenType.parenL) || z.unexpected.call(void 0));
+ }
+ Je.flowStartParseObjPropValue = I0;
+ function E0() {
+ let e = C.pushTypeContext.call(void 0, 0);
+ C.eat.call(void 0, _.TokenType.question),
+ C.match.call(void 0, _.TokenType.colon) && vi(),
+ C.popTypeContext.call(void 0, e);
+ }
+ Je.flowParseAssignableListItemTypes = E0;
+ function A0() {
+ if (
+ C.match.call(void 0, _.TokenType._typeof) ||
+ z.isContextual.call(void 0, ye.ContextualKeyword._type)
+ ) {
+ let e = C.lookaheadTypeAndKeyword.call(void 0);
+ (Gk(e) ||
+ e.type === _.TokenType.braceL ||
+ e.type === _.TokenType.star) &&
+ C.next.call(void 0);
+ }
+ }
+ Je.flowStartParseImportSpecifiers = A0;
+ function P0() {
+ let e =
+ ue.state.contextualKeyword === ye.ContextualKeyword._type ||
+ ue.state.type === _.TokenType._typeof;
+ e ? C.next.call(void 0) : je.parseIdentifier.call(void 0),
+ z.isContextual.call(void 0, ye.ContextualKeyword._as) &&
+ !z.isLookaheadContextual.call(void 0, ye.ContextualKeyword._as)
+ ? (je.parseIdentifier.call(void 0),
+ (e &&
+ !C.match.call(void 0, _.TokenType.name) &&
+ !(ue.state.type & _.TokenType.IS_KEYWORD)) ||
+ je.parseIdentifier.call(void 0))
+ : (e &&
+ (C.match.call(void 0, _.TokenType.name) ||
+ ue.state.type & _.TokenType.IS_KEYWORD) &&
+ je.parseIdentifier.call(void 0),
+ z.eatContextual.call(void 0, ye.ContextualKeyword._as) &&
+ je.parseIdentifier.call(void 0));
+ }
+ Je.flowParseImportSpecifier = P0;
+ function N0() {
+ if (C.match.call(void 0, _.TokenType.lessThan)) {
+ let e = C.pushTypeContext.call(void 0, 0);
+ On(), C.popTypeContext.call(void 0, e);
+ }
+ }
+ Je.flowStartParseFunctionParams = N0;
+ function R0() {
+ C.match.call(void 0, _.TokenType.colon) && vi();
+ }
+ Je.flowAfterParseVarHead = R0;
+ function L0() {
+ if (C.match.call(void 0, _.TokenType.colon)) {
+ let e = ue.state.noAnonFunctionType;
+ (ue.state.noAnonFunctionType = !0),
+ vi(),
+ (ue.state.noAnonFunctionType = e);
+ }
+ }
+ Je.flowStartParseAsyncArrowFromCallExpression = L0;
+ function O0(e, t) {
+ if (C.match.call(void 0, _.TokenType.lessThan)) {
+ let s = ue.state.snapshot(),
+ i = je.baseParseMaybeAssign.call(void 0, e, t);
+ if (ue.state.error)
+ ue.state.restoreFromSnapshot(s),
+ (ue.state.type = _.TokenType.typeParameterStart);
+ else return i;
+ let r = C.pushTypeContext.call(void 0, 0);
+ if (
+ (On(),
+ C.popTypeContext.call(void 0, r),
+ (i = je.baseParseMaybeAssign.call(void 0, e, t)),
+ i)
+ )
+ return !0;
+ z.unexpected.call(void 0);
+ }
+ return je.baseParseMaybeAssign.call(void 0, e, t);
+ }
+ Je.flowParseMaybeAssign = O0;
+ function D0() {
+ if (C.match.call(void 0, _.TokenType.colon)) {
+ let e = C.pushTypeContext.call(void 0, 0),
+ t = ue.state.snapshot(),
+ s = ue.state.noAnonFunctionType;
+ (ue.state.noAnonFunctionType = !0),
+ Pl(),
+ (ue.state.noAnonFunctionType = s),
+ z.canInsertSemicolon.call(void 0) && z.unexpected.call(void 0),
+ C.match.call(void 0, _.TokenType.arrow) || z.unexpected.call(void 0),
+ ue.state.error && ue.state.restoreFromSnapshot(t),
+ C.popTypeContext.call(void 0, e);
+ }
+ return C.eat.call(void 0, _.TokenType.arrow);
+ }
+ Je.flowParseArrow = D0;
+ function M0(e, t = !1) {
+ if (
+ ue.state.tokens[ue.state.tokens.length - 1].contextualKeyword ===
+ ye.ContextualKeyword._async &&
+ C.match.call(void 0, _.TokenType.lessThan)
+ ) {
+ let s = ue.state.snapshot();
+ if (F0() && !ue.state.error) return;
+ ue.state.restoreFromSnapshot(s);
+ }
+ je.baseParseSubscripts.call(void 0, e, t);
+ }
+ Je.flowParseSubscripts = M0;
+ function F0() {
+ ue.state.scopeDepth++;
+ let e = ue.state.tokens.length;
+ return (
+ ys.parseFunctionParams.call(void 0),
+ je.parseArrow.call(void 0)
+ ? (je.parseArrowExpression.call(void 0, e), !0)
+ : !1
+ );
+ }
+ function ah() {
+ z.expectContextual.call(void 0, ye.ContextualKeyword._enum),
+ (ue.state.tokens[ue.state.tokens.length - 1].type = _.TokenType._enum),
+ je.parseIdentifier.call(void 0),
+ B0();
+ }
+ function B0() {
+ z.eatContextual.call(void 0, ye.ContextualKeyword._of) &&
+ C.next.call(void 0),
+ z.expect.call(void 0, _.TokenType.braceL),
+ V0(),
+ z.expect.call(void 0, _.TokenType.braceR);
+ }
+ function V0() {
+ for (
+ ;
+ !C.match.call(void 0, _.TokenType.braceR) &&
+ !ue.state.error &&
+ !C.eat.call(void 0, _.TokenType.ellipsis);
+
+ )
+ j0(),
+ C.match.call(void 0, _.TokenType.braceR) ||
+ z.expect.call(void 0, _.TokenType.comma);
+ }
+ function j0() {
+ je.parseIdentifier.call(void 0),
+ C.eat.call(void 0, _.TokenType.eq) && C.next.call(void 0);
+ }
+ });
+ var nr = Z((Tt) => {
+ 'use strict';
+ Object.defineProperty(Tt, '__esModule', {value: !0});
+ var $0 = Ul(),
+ Ft = Ji(),
+ dt = hi(),
+ $ = xt(),
+ ke = It(),
+ Ts = qr(),
+ D = be(),
+ lh = Qt(),
+ P = Zt(),
+ De = Ns(),
+ ks = lo(),
+ ee = cs();
+ function q0() {
+ if (
+ (ql(D.TokenType.eof),
+ P.state.scopes.push(new Ts.Scope(0, P.state.tokens.length, !0)),
+ P.state.scopeDepth !== 0)
+ )
+ throw new Error(
+ `Invalid scope depth at end of file: ${P.state.scopeDepth}`
+ );
+ return new $0.File(P.state.tokens, P.state.scopes);
+ }
+ Tt.parseTopLevel = q0;
+ function _n(e) {
+ (P.isFlowEnabled && Ft.flowTryParseStatement.call(void 0)) ||
+ ($.match.call(void 0, D.TokenType.at) && $l(), K0(e));
+ }
+ Tt.parseStatement = _n;
+ function K0(e) {
+ if (P.isTypeScriptEnabled && dt.tsTryParseStatementContent.call(void 0))
+ return;
+ let t = P.state.type;
+ switch (t) {
+ case D.TokenType._break:
+ case D.TokenType._continue:
+ H0();
+ return;
+ case D.TokenType._debugger:
+ W0();
+ return;
+ case D.TokenType._do:
+ G0();
+ return;
+ case D.TokenType._for:
+ z0();
+ return;
+ case D.TokenType._function:
+ if ($.lookaheadType.call(void 0) === D.TokenType.dot) break;
+ e || ee.unexpected.call(void 0), J0();
+ return;
+ case D.TokenType._class:
+ e || ee.unexpected.call(void 0), Io(!0);
+ return;
+ case D.TokenType._if:
+ Q0();
+ return;
+ case D.TokenType._return:
+ Z0();
+ return;
+ case D.TokenType._switch:
+ ev();
+ return;
+ case D.TokenType._throw:
+ tv();
+ return;
+ case D.TokenType._try:
+ sv();
+ return;
+ case D.TokenType._let:
+ case D.TokenType._const:
+ e || ee.unexpected.call(void 0);
+ case D.TokenType._var:
+ Vl(t !== D.TokenType._var);
+ return;
+ case D.TokenType._while:
+ iv();
+ return;
+ case D.TokenType.braceL:
+ gi();
+ return;
+ case D.TokenType.semi:
+ rv();
+ return;
+ case D.TokenType._export:
+ case D.TokenType._import: {
+ let r = $.lookaheadType.call(void 0);
+ if (r === D.TokenType.parenL || r === D.TokenType.dot) break;
+ $.next.call(void 0), t === D.TokenType._import ? xh() : Th();
+ return;
+ }
+ case D.TokenType.name:
+ if (P.state.contextualKeyword === ke.ContextualKeyword._async) {
+ let r = P.state.start,
+ a = P.state.snapshot();
+ if (
+ ($.next.call(void 0),
+ $.match.call(void 0, D.TokenType._function) &&
+ !ee.canInsertSemicolon.call(void 0))
+ ) {
+ ee.expect.call(void 0, D.TokenType._function), lr(r, !0);
+ return;
+ } else P.state.restoreFromSnapshot(a);
+ } else if (
+ P.state.contextualKeyword === ke.ContextualKeyword._using &&
+ !ee.hasFollowingLineBreak.call(void 0) &&
+ $.lookaheadType.call(void 0) === D.TokenType.name
+ ) {
+ Vl(!0);
+ return;
+ }
+ default:
+ break;
+ }
+ let s = P.state.tokens.length;
+ De.parseExpression.call(void 0);
+ let i = null;
+ if (P.state.tokens.length === s + 1) {
+ let r = P.state.tokens[P.state.tokens.length - 1];
+ r.type === D.TokenType.name && (i = r.contextualKeyword);
+ }
+ if (i == null) {
+ ee.semicolon.call(void 0);
+ return;
+ }
+ $.eat.call(void 0, D.TokenType.colon) ? ov() : av(i);
+ }
+ function $l() {
+ for (; $.match.call(void 0, D.TokenType.at); ) ph();
+ }
+ Tt.parseDecorators = $l;
+ function ph() {
+ if (($.next.call(void 0), $.eat.call(void 0, D.TokenType.parenL)))
+ De.parseExpression.call(void 0),
+ ee.expect.call(void 0, D.TokenType.parenR);
+ else {
+ for (
+ De.parseIdentifier.call(void 0);
+ $.eat.call(void 0, D.TokenType.dot);
+
+ )
+ De.parseIdentifier.call(void 0);
+ U0();
+ }
+ }
+ function U0() {
+ P.isTypeScriptEnabled
+ ? dt.tsParseMaybeDecoratorArguments.call(void 0)
+ : hh();
+ }
+ function hh() {
+ $.eat.call(void 0, D.TokenType.parenL) &&
+ De.parseCallExpressionArguments.call(void 0);
+ }
+ Tt.baseParseMaybeDecoratorArguments = hh;
+ function H0() {
+ $.next.call(void 0),
+ ee.isLineTerminator.call(void 0) ||
+ (De.parseIdentifier.call(void 0), ee.semicolon.call(void 0));
+ }
+ function W0() {
+ $.next.call(void 0), ee.semicolon.call(void 0);
+ }
+ function G0() {
+ $.next.call(void 0),
+ _n(!1),
+ ee.expect.call(void 0, D.TokenType._while),
+ De.parseParenExpression.call(void 0),
+ $.eat.call(void 0, D.TokenType.semi);
+ }
+ function z0() {
+ P.state.scopeDepth++;
+ let e = P.state.tokens.length;
+ Y0();
+ let t = P.state.tokens.length;
+ P.state.scopes.push(new Ts.Scope(e, t, !1)), P.state.scopeDepth--;
+ }
+ function X0() {
+ return !(
+ !ee.isContextual.call(void 0, ke.ContextualKeyword._using) ||
+ ee.isLookaheadContextual.call(void 0, ke.ContextualKeyword._of)
+ );
+ }
+ function Y0() {
+ $.next.call(void 0);
+ let e = !1;
+ if (
+ (ee.isContextual.call(void 0, ke.ContextualKeyword._await) &&
+ ((e = !0), $.next.call(void 0)),
+ ee.expect.call(void 0, D.TokenType.parenL),
+ $.match.call(void 0, D.TokenType.semi))
+ ) {
+ e && ee.unexpected.call(void 0), Bl();
+ return;
+ }
+ if (
+ $.match.call(void 0, D.TokenType._var) ||
+ $.match.call(void 0, D.TokenType._let) ||
+ $.match.call(void 0, D.TokenType._const) ||
+ X0()
+ ) {
+ if (
+ ($.next.call(void 0),
+ fh(!0, P.state.type !== D.TokenType._var),
+ $.match.call(void 0, D.TokenType._in) ||
+ ee.isContextual.call(void 0, ke.ContextualKeyword._of))
+ ) {
+ ch(e);
+ return;
+ }
+ Bl();
+ return;
+ }
+ if (
+ (De.parseExpression.call(void 0, !0),
+ $.match.call(void 0, D.TokenType._in) ||
+ ee.isContextual.call(void 0, ke.ContextualKeyword._of))
+ ) {
+ ch(e);
+ return;
+ }
+ e && ee.unexpected.call(void 0), Bl();
+ }
+ function J0() {
+ let e = P.state.start;
+ $.next.call(void 0), lr(e, !0);
+ }
+ function Q0() {
+ $.next.call(void 0),
+ De.parseParenExpression.call(void 0),
+ _n(!1),
+ $.eat.call(void 0, D.TokenType._else) && _n(!1);
+ }
+ function Z0() {
+ $.next.call(void 0),
+ ee.isLineTerminator.call(void 0) ||
+ (De.parseExpression.call(void 0), ee.semicolon.call(void 0));
+ }
+ function ev() {
+ $.next.call(void 0),
+ De.parseParenExpression.call(void 0),
+ P.state.scopeDepth++;
+ let e = P.state.tokens.length;
+ for (
+ ee.expect.call(void 0, D.TokenType.braceL);
+ !$.match.call(void 0, D.TokenType.braceR) && !P.state.error;
+
+ )
+ if (
+ $.match.call(void 0, D.TokenType._case) ||
+ $.match.call(void 0, D.TokenType._default)
+ ) {
+ let s = $.match.call(void 0, D.TokenType._case);
+ $.next.call(void 0),
+ s && De.parseExpression.call(void 0),
+ ee.expect.call(void 0, D.TokenType.colon);
+ } else _n(!0);
+ $.next.call(void 0);
+ let t = P.state.tokens.length;
+ P.state.scopes.push(new Ts.Scope(e, t, !1)), P.state.scopeDepth--;
+ }
+ function tv() {
+ $.next.call(void 0),
+ De.parseExpression.call(void 0),
+ ee.semicolon.call(void 0);
+ }
+ function nv() {
+ ks.parseBindingAtom.call(void 0, !0),
+ P.isTypeScriptEnabled && dt.tsTryParseTypeAnnotation.call(void 0);
+ }
+ function sv() {
+ if (
+ ($.next.call(void 0), gi(), $.match.call(void 0, D.TokenType._catch))
+ ) {
+ $.next.call(void 0);
+ let e = null;
+ if (
+ ($.match.call(void 0, D.TokenType.parenL) &&
+ (P.state.scopeDepth++,
+ (e = P.state.tokens.length),
+ ee.expect.call(void 0, D.TokenType.parenL),
+ nv(),
+ ee.expect.call(void 0, D.TokenType.parenR)),
+ gi(),
+ e != null)
+ ) {
+ let t = P.state.tokens.length;
+ P.state.scopes.push(new Ts.Scope(e, t, !1)), P.state.scopeDepth--;
+ }
+ }
+ $.eat.call(void 0, D.TokenType._finally) && gi();
+ }
+ function Vl(e) {
+ $.next.call(void 0), fh(!1, e), ee.semicolon.call(void 0);
+ }
+ Tt.parseVarStatement = Vl;
+ function iv() {
+ $.next.call(void 0), De.parseParenExpression.call(void 0), _n(!1);
+ }
+ function rv() {
+ $.next.call(void 0);
+ }
+ function ov() {
+ _n(!0);
+ }
+ function av(e) {
+ P.isTypeScriptEnabled
+ ? dt.tsParseIdentifierStatement.call(void 0, e)
+ : P.isFlowEnabled
+ ? Ft.flowParseIdentifierStatement.call(void 0, e)
+ : ee.semicolon.call(void 0);
+ }
+ function gi(e = !1, t = 0) {
+ let s = P.state.tokens.length;
+ P.state.scopeDepth++,
+ ee.expect.call(void 0, D.TokenType.braceL),
+ t && (P.state.tokens[P.state.tokens.length - 1].contextId = t),
+ ql(D.TokenType.braceR),
+ t && (P.state.tokens[P.state.tokens.length - 1].contextId = t);
+ let i = P.state.tokens.length;
+ P.state.scopes.push(new Ts.Scope(s, i, e)), P.state.scopeDepth--;
+ }
+ Tt.parseBlock = gi;
+ function ql(e) {
+ for (; !$.eat.call(void 0, e) && !P.state.error; ) _n(!0);
+ }
+ Tt.parseBlockBody = ql;
+ function Bl() {
+ ee.expect.call(void 0, D.TokenType.semi),
+ $.match.call(void 0, D.TokenType.semi) ||
+ De.parseExpression.call(void 0),
+ ee.expect.call(void 0, D.TokenType.semi),
+ $.match.call(void 0, D.TokenType.parenR) ||
+ De.parseExpression.call(void 0),
+ ee.expect.call(void 0, D.TokenType.parenR),
+ _n(!1);
+ }
+ function ch(e) {
+ e
+ ? ee.eatContextual.call(void 0, ke.ContextualKeyword._of)
+ : $.next.call(void 0),
+ De.parseExpression.call(void 0),
+ ee.expect.call(void 0, D.TokenType.parenR),
+ _n(!1);
+ }
+ function fh(e, t) {
+ for (;;) {
+ if ((lv(t), $.eat.call(void 0, D.TokenType.eq))) {
+ let s = P.state.tokens.length - 1;
+ De.parseMaybeAssign.call(void 0, e),
+ (P.state.tokens[s].rhsEndIndex = P.state.tokens.length);
+ }
+ if (!$.eat.call(void 0, D.TokenType.comma)) break;
+ }
+ }
+ function lv(e) {
+ ks.parseBindingAtom.call(void 0, e),
+ P.isTypeScriptEnabled
+ ? dt.tsAfterParseVarHead.call(void 0)
+ : P.isFlowEnabled && Ft.flowAfterParseVarHead.call(void 0);
+ }
+ function lr(e, t, s = !1) {
+ $.match.call(void 0, D.TokenType.star) && $.next.call(void 0),
+ t &&
+ !s &&
+ !$.match.call(void 0, D.TokenType.name) &&
+ !$.match.call(void 0, D.TokenType._yield) &&
+ ee.unexpected.call(void 0);
+ let i = null;
+ $.match.call(void 0, D.TokenType.name) &&
+ (t || ((i = P.state.tokens.length), P.state.scopeDepth++),
+ ks.parseBindingIdentifier.call(void 0, !1));
+ let r = P.state.tokens.length;
+ P.state.scopeDepth++, dh(), De.parseFunctionBodyAndFinish.call(void 0, e);
+ let a = P.state.tokens.length;
+ P.state.scopes.push(new Ts.Scope(r, a, !0)),
+ P.state.scopeDepth--,
+ i !== null &&
+ (P.state.scopes.push(new Ts.Scope(i, a, !0)), P.state.scopeDepth--);
+ }
+ Tt.parseFunction = lr;
+ function dh(e = !1, t = 0) {
+ P.isTypeScriptEnabled
+ ? dt.tsStartParseFunctionParams.call(void 0)
+ : P.isFlowEnabled && Ft.flowStartParseFunctionParams.call(void 0),
+ ee.expect.call(void 0, D.TokenType.parenL),
+ t && (P.state.tokens[P.state.tokens.length - 1].contextId = t),
+ ks.parseBindingList.call(void 0, D.TokenType.parenR, !1, !1, e, t),
+ t && (P.state.tokens[P.state.tokens.length - 1].contextId = t);
+ }
+ Tt.parseFunctionParams = dh;
+ function Io(e, t = !1) {
+ let s = P.getNextContextId.call(void 0);
+ $.next.call(void 0),
+ (P.state.tokens[P.state.tokens.length - 1].contextId = s),
+ (P.state.tokens[P.state.tokens.length - 1].isExpression = !e);
+ let i = null;
+ e || ((i = P.state.tokens.length), P.state.scopeDepth++), hv(e, t), fv();
+ let r = P.state.tokens.length;
+ if (
+ (cv(s),
+ !P.state.error &&
+ ((P.state.tokens[r].contextId = s),
+ (P.state.tokens[P.state.tokens.length - 1].contextId = s),
+ i !== null))
+ ) {
+ let a = P.state.tokens.length;
+ P.state.scopes.push(new Ts.Scope(i, a, !1)), P.state.scopeDepth--;
+ }
+ }
+ Tt.parseClass = Io;
+ function mh() {
+ return (
+ $.match.call(void 0, D.TokenType.eq) ||
+ $.match.call(void 0, D.TokenType.semi) ||
+ $.match.call(void 0, D.TokenType.braceR) ||
+ $.match.call(void 0, D.TokenType.bang) ||
+ $.match.call(void 0, D.TokenType.colon)
+ );
+ }
+ function yh() {
+ return (
+ $.match.call(void 0, D.TokenType.parenL) ||
+ $.match.call(void 0, D.TokenType.lessThan)
+ );
+ }
+ function cv(e) {
+ for (
+ ee.expect.call(void 0, D.TokenType.braceL);
+ !$.eat.call(void 0, D.TokenType.braceR) && !P.state.error;
+
+ ) {
+ if ($.eat.call(void 0, D.TokenType.semi)) continue;
+ if ($.match.call(void 0, D.TokenType.at)) {
+ ph();
+ continue;
+ }
+ let t = P.state.start;
+ uv(t, e);
+ }
+ }
+ function uv(e, t) {
+ P.isTypeScriptEnabled &&
+ dt.tsParseModifiers.call(void 0, [
+ ke.ContextualKeyword._declare,
+ ke.ContextualKeyword._public,
+ ke.ContextualKeyword._protected,
+ ke.ContextualKeyword._private,
+ ke.ContextualKeyword._override,
+ ]);
+ let s = !1;
+ if (
+ $.match.call(void 0, D.TokenType.name) &&
+ P.state.contextualKeyword === ke.ContextualKeyword._static
+ ) {
+ if ((De.parseIdentifier.call(void 0), yh())) {
+ or(e, !1);
+ return;
+ } else if (mh()) {
+ ar();
+ return;
+ }
+ if (
+ ((P.state.tokens[P.state.tokens.length - 1].type =
+ D.TokenType._static),
+ (s = !0),
+ $.match.call(void 0, D.TokenType.braceL))
+ ) {
+ (P.state.tokens[P.state.tokens.length - 1].contextId = t), gi();
+ return;
+ }
+ }
+ pv(e, s, t);
+ }
+ function pv(e, t, s) {
+ if (
+ P.isTypeScriptEnabled &&
+ dt.tsTryParseClassMemberWithIsStatic.call(void 0, t)
+ )
+ return;
+ if ($.eat.call(void 0, D.TokenType.star)) {
+ xi(s), or(e, !1);
+ return;
+ }
+ xi(s);
+ let i = !1,
+ r = P.state.tokens[P.state.tokens.length - 1];
+ r.contextualKeyword === ke.ContextualKeyword._constructor && (i = !0),
+ jl(),
+ yh()
+ ? or(e, i)
+ : mh()
+ ? ar()
+ : r.contextualKeyword === ke.ContextualKeyword._async &&
+ !ee.isLineTerminator.call(void 0)
+ ? ((P.state.tokens[P.state.tokens.length - 1].type =
+ D.TokenType._async),
+ $.match.call(void 0, D.TokenType.star) && $.next.call(void 0),
+ xi(s),
+ jl(),
+ or(e, !1))
+ : (r.contextualKeyword === ke.ContextualKeyword._get ||
+ r.contextualKeyword === ke.ContextualKeyword._set) &&
+ !(
+ ee.isLineTerminator.call(void 0) &&
+ $.match.call(void 0, D.TokenType.star)
+ )
+ ? (r.contextualKeyword === ke.ContextualKeyword._get
+ ? (P.state.tokens[P.state.tokens.length - 1].type =
+ D.TokenType._get)
+ : (P.state.tokens[P.state.tokens.length - 1].type =
+ D.TokenType._set),
+ xi(s),
+ or(e, !1))
+ : r.contextualKeyword === ke.ContextualKeyword._accessor &&
+ !ee.isLineTerminator.call(void 0)
+ ? (xi(s), ar())
+ : ee.isLineTerminator.call(void 0)
+ ? ar()
+ : ee.unexpected.call(void 0);
+ }
+ function or(e, t) {
+ P.isTypeScriptEnabled
+ ? dt.tsTryParseTypeParameters.call(void 0)
+ : P.isFlowEnabled &&
+ $.match.call(void 0, D.TokenType.lessThan) &&
+ Ft.flowParseTypeParameterDeclaration.call(void 0),
+ De.parseMethod.call(void 0, e, t);
+ }
+ function xi(e) {
+ De.parsePropertyName.call(void 0, e);
+ }
+ Tt.parseClassPropertyName = xi;
+ function jl() {
+ if (P.isTypeScriptEnabled) {
+ let e = $.pushTypeContext.call(void 0, 0);
+ $.eat.call(void 0, D.TokenType.question),
+ $.popTypeContext.call(void 0, e);
+ }
+ }
+ Tt.parsePostMemberNameModifiers = jl;
+ function ar() {
+ if (
+ (P.isTypeScriptEnabled
+ ? ($.eatTypeToken.call(void 0, D.TokenType.bang),
+ dt.tsTryParseTypeAnnotation.call(void 0))
+ : P.isFlowEnabled &&
+ $.match.call(void 0, D.TokenType.colon) &&
+ Ft.flowParseTypeAnnotation.call(void 0),
+ $.match.call(void 0, D.TokenType.eq))
+ ) {
+ let e = P.state.tokens.length;
+ $.next.call(void 0),
+ De.parseMaybeAssign.call(void 0),
+ (P.state.tokens[e].rhsEndIndex = P.state.tokens.length);
+ }
+ ee.semicolon.call(void 0);
+ }
+ Tt.parseClassProperty = ar;
+ function hv(e, t = !1) {
+ (P.isTypeScriptEnabled &&
+ (!e || t) &&
+ ee.isContextual.call(void 0, ke.ContextualKeyword._implements)) ||
+ ($.match.call(void 0, D.TokenType.name) &&
+ ks.parseBindingIdentifier.call(void 0, !0),
+ P.isTypeScriptEnabled
+ ? dt.tsTryParseTypeParameters.call(void 0)
+ : P.isFlowEnabled &&
+ $.match.call(void 0, D.TokenType.lessThan) &&
+ Ft.flowParseTypeParameterDeclaration.call(void 0));
+ }
+ function fv() {
+ let e = !1;
+ $.eat.call(void 0, D.TokenType._extends)
+ ? (De.parseExprSubscripts.call(void 0), (e = !0))
+ : (e = !1),
+ P.isTypeScriptEnabled
+ ? dt.tsAfterParseClassSuper.call(void 0, e)
+ : P.isFlowEnabled && Ft.flowAfterParseClassSuper.call(void 0, e);
+ }
+ function Th() {
+ let e = P.state.tokens.length - 1;
+ (P.isTypeScriptEnabled && dt.tsTryParseExport.call(void 0)) ||
+ (Tv()
+ ? kv()
+ : yv()
+ ? (De.parseIdentifier.call(void 0),
+ $.match.call(void 0, D.TokenType.comma) &&
+ $.lookaheadType.call(void 0) === D.TokenType.star
+ ? (ee.expect.call(void 0, D.TokenType.comma),
+ ee.expect.call(void 0, D.TokenType.star),
+ ee.expectContextual.call(void 0, ke.ContextualKeyword._as),
+ De.parseIdentifier.call(void 0))
+ : kh(),
+ cr())
+ : $.eat.call(void 0, D.TokenType._default)
+ ? dv()
+ : xv()
+ ? mv()
+ : (Kl(), cr()),
+ (P.state.tokens[e].rhsEndIndex = P.state.tokens.length));
+ }
+ Tt.parseExport = Th;
+ function dv() {
+ if (
+ (P.isTypeScriptEnabled &&
+ dt.tsTryParseExportDefaultExpression.call(void 0)) ||
+ (P.isFlowEnabled && Ft.flowTryParseExportDefaultExpression.call(void 0))
+ )
+ return;
+ let e = P.state.start;
+ $.eat.call(void 0, D.TokenType._function)
+ ? lr(e, !0, !0)
+ : ee.isContextual.call(void 0, ke.ContextualKeyword._async) &&
+ $.lookaheadType.call(void 0) === D.TokenType._function
+ ? (ee.eatContextual.call(void 0, ke.ContextualKeyword._async),
+ $.eat.call(void 0, D.TokenType._function),
+ lr(e, !0, !0))
+ : $.match.call(void 0, D.TokenType._class)
+ ? Io(!0, !0)
+ : $.match.call(void 0, D.TokenType.at)
+ ? ($l(), Io(!0, !0))
+ : (De.parseMaybeAssign.call(void 0), ee.semicolon.call(void 0));
+ }
+ function mv() {
+ P.isTypeScriptEnabled
+ ? dt.tsParseExportDeclaration.call(void 0)
+ : P.isFlowEnabled
+ ? Ft.flowParseExportDeclaration.call(void 0)
+ : _n(!0);
+ }
+ function yv() {
+ if (P.isTypeScriptEnabled && dt.tsIsDeclarationStart.call(void 0))
+ return !1;
+ if (
+ P.isFlowEnabled &&
+ Ft.flowShouldDisallowExportDefaultSpecifier.call(void 0)
+ )
+ return !1;
+ if ($.match.call(void 0, D.TokenType.name))
+ return P.state.contextualKeyword !== ke.ContextualKeyword._async;
+ if (!$.match.call(void 0, D.TokenType._default)) return !1;
+ let e = $.nextTokenStart.call(void 0),
+ t = $.lookaheadTypeAndKeyword.call(void 0),
+ s =
+ t.type === D.TokenType.name &&
+ t.contextualKeyword === ke.ContextualKeyword._from;
+ if (t.type === D.TokenType.comma) return !0;
+ if (s) {
+ let i = P.input.charCodeAt($.nextTokenStartSince.call(void 0, e + 4));
+ return (
+ i === lh.charCodes.quotationMark || i === lh.charCodes.apostrophe
+ );
+ }
+ return !1;
+ }
+ function kh() {
+ $.eat.call(void 0, D.TokenType.comma) && Kl();
+ }
+ function cr() {
+ ee.eatContextual.call(void 0, ke.ContextualKeyword._from) &&
+ (De.parseExprAtom.call(void 0), gh()),
+ ee.semicolon.call(void 0);
+ }
+ Tt.parseExportFrom = cr;
+ function Tv() {
+ return P.isFlowEnabled
+ ? Ft.flowShouldParseExportStar.call(void 0)
+ : $.match.call(void 0, D.TokenType.star);
+ }
+ function kv() {
+ P.isFlowEnabled ? Ft.flowParseExportStar.call(void 0) : vh();
+ }
+ function vh() {
+ ee.expect.call(void 0, D.TokenType.star),
+ ee.isContextual.call(void 0, ke.ContextualKeyword._as) ? vv() : cr();
+ }
+ Tt.baseParseExportStar = vh;
+ function vv() {
+ $.next.call(void 0),
+ (P.state.tokens[P.state.tokens.length - 1].type = D.TokenType._as),
+ De.parseIdentifier.call(void 0),
+ kh(),
+ cr();
+ }
+ function xv() {
+ return (
+ (P.isTypeScriptEnabled && dt.tsIsDeclarationStart.call(void 0)) ||
+ (P.isFlowEnabled && Ft.flowShouldParseExportDeclaration.call(void 0)) ||
+ P.state.type === D.TokenType._var ||
+ P.state.type === D.TokenType._const ||
+ P.state.type === D.TokenType._let ||
+ P.state.type === D.TokenType._function ||
+ P.state.type === D.TokenType._class ||
+ ee.isContextual.call(void 0, ke.ContextualKeyword._async) ||
+ $.match.call(void 0, D.TokenType.at)
+ );
+ }
+ function Kl() {
+ let e = !0;
+ for (
+ ee.expect.call(void 0, D.TokenType.braceL);
+ !$.eat.call(void 0, D.TokenType.braceR) && !P.state.error;
+
+ ) {
+ if (e) e = !1;
+ else if (
+ (ee.expect.call(void 0, D.TokenType.comma),
+ $.eat.call(void 0, D.TokenType.braceR))
+ )
+ break;
+ gv();
+ }
+ }
+ Tt.parseExportSpecifiers = Kl;
+ function gv() {
+ if (P.isTypeScriptEnabled) {
+ dt.tsParseExportSpecifier.call(void 0);
+ return;
+ }
+ De.parseIdentifier.call(void 0),
+ (P.state.tokens[P.state.tokens.length - 1].identifierRole =
+ $.IdentifierRole.ExportAccess),
+ ee.eatContextual.call(void 0, ke.ContextualKeyword._as) &&
+ De.parseIdentifier.call(void 0);
+ }
+ function _v() {
+ let e = P.state.snapshot();
+ return (
+ ee.expectContextual.call(void 0, ke.ContextualKeyword._module),
+ ee.eatContextual.call(void 0, ke.ContextualKeyword._from)
+ ? ee.isContextual.call(void 0, ke.ContextualKeyword._from)
+ ? (P.state.restoreFromSnapshot(e), !0)
+ : (P.state.restoreFromSnapshot(e), !1)
+ : $.match.call(void 0, D.TokenType.comma)
+ ? (P.state.restoreFromSnapshot(e), !1)
+ : (P.state.restoreFromSnapshot(e), !0)
+ );
+ }
+ function bv() {
+ ee.isContextual.call(void 0, ke.ContextualKeyword._module) &&
+ _v() &&
+ $.next.call(void 0);
+ }
+ function xh() {
+ if (
+ P.isTypeScriptEnabled &&
+ $.match.call(void 0, D.TokenType.name) &&
+ $.lookaheadType.call(void 0) === D.TokenType.eq
+ ) {
+ dt.tsParseImportEqualsDeclaration.call(void 0);
+ return;
+ }
+ if (
+ P.isTypeScriptEnabled &&
+ ee.isContextual.call(void 0, ke.ContextualKeyword._type)
+ ) {
+ let e = $.lookaheadTypeAndKeyword.call(void 0);
+ if (
+ e.type === D.TokenType.name &&
+ e.contextualKeyword !== ke.ContextualKeyword._from
+ ) {
+ if (
+ (ee.expectContextual.call(void 0, ke.ContextualKeyword._type),
+ $.lookaheadType.call(void 0) === D.TokenType.eq)
+ ) {
+ dt.tsParseImportEqualsDeclaration.call(void 0);
+ return;
+ }
+ } else
+ (e.type === D.TokenType.star || e.type === D.TokenType.braceL) &&
+ ee.expectContextual.call(void 0, ke.ContextualKeyword._type);
+ }
+ $.match.call(void 0, D.TokenType.string) ||
+ (bv(),
+ wv(),
+ ee.expectContextual.call(void 0, ke.ContextualKeyword._from)),
+ De.parseExprAtom.call(void 0),
+ gh(),
+ ee.semicolon.call(void 0);
+ }
+ Tt.parseImport = xh;
+ function Cv() {
+ return $.match.call(void 0, D.TokenType.name);
+ }
+ function uh() {
+ ks.parseImportedIdentifier.call(void 0);
+ }
+ function wv() {
+ P.isFlowEnabled && Ft.flowStartParseImportSpecifiers.call(void 0);
+ let e = !0;
+ if (!(Cv() && (uh(), !$.eat.call(void 0, D.TokenType.comma)))) {
+ if ($.match.call(void 0, D.TokenType.star)) {
+ $.next.call(void 0),
+ ee.expectContextual.call(void 0, ke.ContextualKeyword._as),
+ uh();
+ return;
+ }
+ for (
+ ee.expect.call(void 0, D.TokenType.braceL);
+ !$.eat.call(void 0, D.TokenType.braceR) && !P.state.error;
+
+ ) {
+ if (e) e = !1;
+ else if (
+ ($.eat.call(void 0, D.TokenType.colon) &&
+ ee.unexpected.call(
+ void 0,
+ 'ES2015 named imports do not destructure. Use another statement for destructuring after the import.'
+ ),
+ ee.expect.call(void 0, D.TokenType.comma),
+ $.eat.call(void 0, D.TokenType.braceR))
+ )
+ break;
+ Sv();
+ }
+ }
+ }
+ function Sv() {
+ if (P.isTypeScriptEnabled) {
+ dt.tsParseImportSpecifier.call(void 0);
+ return;
+ }
+ if (P.isFlowEnabled) {
+ Ft.flowParseImportSpecifier.call(void 0);
+ return;
+ }
+ ks.parseImportedIdentifier.call(void 0),
+ ee.isContextual.call(void 0, ke.ContextualKeyword._as) &&
+ ((P.state.tokens[P.state.tokens.length - 1].identifierRole =
+ $.IdentifierRole.ImportAccess),
+ $.next.call(void 0),
+ ks.parseImportedIdentifier.call(void 0));
+ }
+ function gh() {
+ ee.isContextual.call(void 0, ke.ContextualKeyword._assert) &&
+ !ee.hasPrecedingLineBreak.call(void 0) &&
+ ($.next.call(void 0), De.parseObj.call(void 0, !1, !1));
+ }
+ });
+ var Ch = Z((Wl) => {
+ 'use strict';
+ Object.defineProperty(Wl, '__esModule', {value: !0});
+ var _h = xt(),
+ bh = Qt(),
+ Hl = Zt(),
+ Iv = nr();
+ function Ev() {
+ return (
+ Hl.state.pos === 0 &&
+ Hl.input.charCodeAt(0) === bh.charCodes.numberSign &&
+ Hl.input.charCodeAt(1) === bh.charCodes.exclamationMark &&
+ _h.skipLineComment.call(void 0, 2),
+ _h.nextToken.call(void 0),
+ Iv.parseTopLevel.call(void 0)
+ );
+ }
+ Wl.parseFile = Ev;
+ });
+ var Ul = Z((Ao) => {
+ 'use strict';
+ Object.defineProperty(Ao, '__esModule', {value: !0});
+ var Eo = Zt(),
+ Av = Ch(),
+ Gl = class {
+ constructor(t, s) {
+ (this.tokens = t), (this.scopes = s);
+ }
+ };
+ Ao.File = Gl;
+ function Pv(e, t, s, i) {
+ if (i && s)
+ throw new Error('Cannot combine flow and typescript plugins.');
+ Eo.initParser.call(void 0, e, t, s, i);
+ let r = Av.parseFile.call(void 0);
+ if (Eo.state.error) throw Eo.augmentError.call(void 0, Eo.state.error);
+ return r;
+ }
+ Ao.parse = Pv;
+ });
+ var wh = Z((zl) => {
+ 'use strict';
+ Object.defineProperty(zl, '__esModule', {value: !0});
+ var Nv = It();
+ function Rv(e) {
+ let t = e.currentIndex(),
+ s = 0,
+ i = e.currentToken();
+ do {
+ let r = e.tokens[t];
+ if (
+ (r.isOptionalChainStart && s++,
+ r.isOptionalChainEnd && s--,
+ (s += r.numNullishCoalesceStarts),
+ (s -= r.numNullishCoalesceEnds),
+ r.contextualKeyword === Nv.ContextualKeyword._await &&
+ r.identifierRole == null &&
+ r.scopeDepth === i.scopeDepth)
+ )
+ return !0;
+ t += 1;
+ } while (s > 0 && t < e.tokens.length);
+ return !1;
+ }
+ zl.default = Rv;
+ });
+ var Sh = Z((Yl) => {
+ 'use strict';
+ Object.defineProperty(Yl, '__esModule', {value: !0});
+ function Lv(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Po = be(),
+ Ov = wh(),
+ Dv = Lv(Ov),
+ Xl = class e {
+ __init() {
+ this.resultCode = '';
+ }
+ __init2() {
+ this.resultMappings = new Array(this.tokens.length);
+ }
+ __init3() {
+ this.tokenIndex = 0;
+ }
+ constructor(t, s, i, r, a) {
+ (this.code = t),
+ (this.tokens = s),
+ (this.isFlowEnabled = i),
+ (this.disableESTransforms = r),
+ (this.helperManager = a),
+ e.prototype.__init.call(this),
+ e.prototype.__init2.call(this),
+ e.prototype.__init3.call(this);
+ }
+ snapshot() {
+ return {resultCode: this.resultCode, tokenIndex: this.tokenIndex};
+ }
+ restoreToSnapshot(t) {
+ (this.resultCode = t.resultCode), (this.tokenIndex = t.tokenIndex);
+ }
+ dangerouslyGetAndRemoveCodeSinceSnapshot(t) {
+ let s = this.resultCode.slice(t.resultCode.length);
+ return (this.resultCode = t.resultCode), s;
+ }
+ reset() {
+ (this.resultCode = ''),
+ (this.resultMappings = new Array(this.tokens.length)),
+ (this.tokenIndex = 0);
+ }
+ matchesContextualAtIndex(t, s) {
+ return (
+ this.matches1AtIndex(t, Po.TokenType.name) &&
+ this.tokens[t].contextualKeyword === s
+ );
+ }
+ identifierNameAtIndex(t) {
+ return this.identifierNameForToken(this.tokens[t]);
+ }
+ identifierNameAtRelativeIndex(t) {
+ return this.identifierNameForToken(this.tokenAtRelativeIndex(t));
+ }
+ identifierName() {
+ return this.identifierNameForToken(this.currentToken());
+ }
+ identifierNameForToken(t) {
+ return this.code.slice(t.start, t.end);
+ }
+ rawCodeForToken(t) {
+ return this.code.slice(t.start, t.end);
+ }
+ stringValueAtIndex(t) {
+ return this.stringValueForToken(this.tokens[t]);
+ }
+ stringValue() {
+ return this.stringValueForToken(this.currentToken());
+ }
+ stringValueForToken(t) {
+ return this.code.slice(t.start + 1, t.end - 1);
+ }
+ matches1AtIndex(t, s) {
+ return this.tokens[t].type === s;
+ }
+ matches2AtIndex(t, s, i) {
+ return this.tokens[t].type === s && this.tokens[t + 1].type === i;
+ }
+ matches3AtIndex(t, s, i, r) {
+ return (
+ this.tokens[t].type === s &&
+ this.tokens[t + 1].type === i &&
+ this.tokens[t + 2].type === r
+ );
+ }
+ matches1(t) {
+ return this.tokens[this.tokenIndex].type === t;
+ }
+ matches2(t, s) {
+ return (
+ this.tokens[this.tokenIndex].type === t &&
+ this.tokens[this.tokenIndex + 1].type === s
+ );
+ }
+ matches3(t, s, i) {
+ return (
+ this.tokens[this.tokenIndex].type === t &&
+ this.tokens[this.tokenIndex + 1].type === s &&
+ this.tokens[this.tokenIndex + 2].type === i
+ );
+ }
+ matches4(t, s, i, r) {
+ return (
+ this.tokens[this.tokenIndex].type === t &&
+ this.tokens[this.tokenIndex + 1].type === s &&
+ this.tokens[this.tokenIndex + 2].type === i &&
+ this.tokens[this.tokenIndex + 3].type === r
+ );
+ }
+ matches5(t, s, i, r, a) {
+ return (
+ this.tokens[this.tokenIndex].type === t &&
+ this.tokens[this.tokenIndex + 1].type === s &&
+ this.tokens[this.tokenIndex + 2].type === i &&
+ this.tokens[this.tokenIndex + 3].type === r &&
+ this.tokens[this.tokenIndex + 4].type === a
+ );
+ }
+ matchesContextual(t) {
+ return this.matchesContextualAtIndex(this.tokenIndex, t);
+ }
+ matchesContextIdAndLabel(t, s) {
+ return this.matches1(t) && this.currentToken().contextId === s;
+ }
+ previousWhitespaceAndComments() {
+ let t = this.code.slice(
+ this.tokenIndex > 0 ? this.tokens[this.tokenIndex - 1].end : 0,
+ this.tokenIndex < this.tokens.length
+ ? this.tokens[this.tokenIndex].start
+ : this.code.length
+ );
+ return this.isFlowEnabled && (t = t.replace(/@flow/g, '')), t;
+ }
+ replaceToken(t) {
+ (this.resultCode += this.previousWhitespaceAndComments()),
+ this.appendTokenPrefix(),
+ (this.resultMappings[this.tokenIndex] = this.resultCode.length),
+ (this.resultCode += t),
+ this.appendTokenSuffix(),
+ this.tokenIndex++;
+ }
+ replaceTokenTrimmingLeftWhitespace(t) {
+ (this.resultCode += this.previousWhitespaceAndComments().replace(
+ /[^\r\n]/g,
+ ''
+ )),
+ this.appendTokenPrefix(),
+ (this.resultMappings[this.tokenIndex] = this.resultCode.length),
+ (this.resultCode += t),
+ this.appendTokenSuffix(),
+ this.tokenIndex++;
+ }
+ removeInitialToken() {
+ this.replaceToken('');
+ }
+ removeToken() {
+ this.replaceTokenTrimmingLeftWhitespace('');
+ }
+ removeBalancedCode() {
+ let t = 0;
+ for (; !this.isAtEnd(); ) {
+ if (this.matches1(Po.TokenType.braceL)) t++;
+ else if (this.matches1(Po.TokenType.braceR)) {
+ if (t === 0) return;
+ t--;
+ }
+ this.removeToken();
+ }
+ }
+ copyExpectedToken(t) {
+ if (this.tokens[this.tokenIndex].type !== t)
+ throw new Error(`Expected token ${t}`);
+ this.copyToken();
+ }
+ copyToken() {
+ (this.resultCode += this.previousWhitespaceAndComments()),
+ this.appendTokenPrefix(),
+ (this.resultMappings[this.tokenIndex] = this.resultCode.length),
+ (this.resultCode += this.code.slice(
+ this.tokens[this.tokenIndex].start,
+ this.tokens[this.tokenIndex].end
+ )),
+ this.appendTokenSuffix(),
+ this.tokenIndex++;
+ }
+ copyTokenWithPrefix(t) {
+ (this.resultCode += this.previousWhitespaceAndComments()),
+ this.appendTokenPrefix(),
+ (this.resultCode += t),
+ (this.resultMappings[this.tokenIndex] = this.resultCode.length),
+ (this.resultCode += this.code.slice(
+ this.tokens[this.tokenIndex].start,
+ this.tokens[this.tokenIndex].end
+ )),
+ this.appendTokenSuffix(),
+ this.tokenIndex++;
+ }
+ appendTokenPrefix() {
+ let t = this.currentToken();
+ if (
+ ((t.numNullishCoalesceStarts || t.isOptionalChainStart) &&
+ (t.isAsyncOperation = Dv.default.call(void 0, this)),
+ !this.disableESTransforms)
+ ) {
+ if (t.numNullishCoalesceStarts)
+ for (let s = 0; s < t.numNullishCoalesceStarts; s++)
+ t.isAsyncOperation
+ ? ((this.resultCode += 'await '),
+ (this.resultCode += this.helperManager.getHelperName(
+ 'asyncNullishCoalesce'
+ )))
+ : (this.resultCode +=
+ this.helperManager.getHelperName('nullishCoalesce')),
+ (this.resultCode += '(');
+ t.isOptionalChainStart &&
+ (t.isAsyncOperation && (this.resultCode += 'await '),
+ this.tokenIndex > 0 &&
+ this.tokenAtRelativeIndex(-1).type === Po.TokenType._delete
+ ? t.isAsyncOperation
+ ? (this.resultCode += this.helperManager.getHelperName(
+ 'asyncOptionalChainDelete'
+ ))
+ : (this.resultCode += this.helperManager.getHelperName(
+ 'optionalChainDelete'
+ ))
+ : t.isAsyncOperation
+ ? (this.resultCode +=
+ this.helperManager.getHelperName('asyncOptionalChain'))
+ : (this.resultCode +=
+ this.helperManager.getHelperName('optionalChain')),
+ (this.resultCode += '(['));
+ }
+ }
+ appendTokenSuffix() {
+ let t = this.currentToken();
+ if (
+ (t.isOptionalChainEnd &&
+ !this.disableESTransforms &&
+ (this.resultCode += '])'),
+ t.numNullishCoalesceEnds && !this.disableESTransforms)
+ )
+ for (let s = 0; s < t.numNullishCoalesceEnds; s++)
+ this.resultCode += '))';
+ }
+ appendCode(t) {
+ this.resultCode += t;
+ }
+ currentToken() {
+ return this.tokens[this.tokenIndex];
+ }
+ currentTokenCode() {
+ let t = this.currentToken();
+ return this.code.slice(t.start, t.end);
+ }
+ tokenAtRelativeIndex(t) {
+ return this.tokens[this.tokenIndex + t];
+ }
+ currentIndex() {
+ return this.tokenIndex;
+ }
+ nextToken() {
+ if (this.tokenIndex === this.tokens.length)
+ throw new Error('Unexpectedly reached end of input.');
+ this.tokenIndex++;
+ }
+ previousToken() {
+ this.tokenIndex--;
+ }
+ finish() {
+ if (this.tokenIndex !== this.tokens.length)
+ throw new Error(
+ 'Tried to finish processing tokens before reaching the end.'
+ );
+ return (
+ (this.resultCode += this.previousWhitespaceAndComments()),
+ {code: this.resultCode, mappings: this.resultMappings}
+ );
+ }
+ isAtEnd() {
+ return this.tokenIndex === this.tokens.length;
+ }
+ };
+ Yl.default = Xl;
+ });
+ var Ah = Z((Ql) => {
+ 'use strict';
+ Object.defineProperty(Ql, '__esModule', {value: !0});
+ var Ih = It(),
+ Ne = be();
+ function Mv(e, t, s, i) {
+ let r = t.snapshot(),
+ a = Fv(t),
+ u = [],
+ d = [],
+ y = [],
+ g = null,
+ L = [],
+ p = [],
+ h = t.currentToken().contextId;
+ if (h == null)
+ throw new Error(
+ 'Expected non-null class context ID on class open-brace.'
+ );
+ for (t.nextToken(); !t.matchesContextIdAndLabel(Ne.TokenType.braceR, h); )
+ if (
+ t.matchesContextual(Ih.ContextualKeyword._constructor) &&
+ !t.currentToken().isType
+ )
+ ({constructorInitializerStatements: u, constructorInsertPos: g} =
+ Eh(t));
+ else if (t.matches1(Ne.TokenType.semi))
+ i || p.push({start: t.currentIndex(), end: t.currentIndex() + 1}),
+ t.nextToken();
+ else if (t.currentToken().isType) t.nextToken();
+ else {
+ let T = t.currentIndex(),
+ x = !1,
+ w = !1,
+ S = !1;
+ for (; No(t.currentToken()); )
+ t.matches1(Ne.TokenType._static) && (x = !0),
+ t.matches1(Ne.TokenType.hash) && (w = !0),
+ (t.matches1(Ne.TokenType._declare) ||
+ t.matches1(Ne.TokenType._abstract)) &&
+ (S = !0),
+ t.nextToken();
+ if (x && t.matches1(Ne.TokenType.braceL)) {
+ Jl(t, h);
+ continue;
+ }
+ if (w) {
+ Jl(t, h);
+ continue;
+ }
+ if (
+ t.matchesContextual(Ih.ContextualKeyword._constructor) &&
+ !t.currentToken().isType
+ ) {
+ ({constructorInitializerStatements: u, constructorInsertPos: g} =
+ Eh(t));
+ continue;
+ }
+ let A = t.currentIndex();
+ if (
+ (Bv(t),
+ t.matches1(Ne.TokenType.lessThan) ||
+ t.matches1(Ne.TokenType.parenL))
+ ) {
+ Jl(t, h);
+ continue;
+ }
+ for (; t.currentToken().isType; ) t.nextToken();
+ if (t.matches1(Ne.TokenType.eq)) {
+ let U = t.currentIndex(),
+ M = t.currentToken().rhsEndIndex;
+ if (M == null)
+ throw new Error(
+ 'Expected rhsEndIndex on class field assignment.'
+ );
+ for (t.nextToken(); t.currentIndex() < M; ) e.processToken();
+ let c;
+ x
+ ? ((c = s.claimFreeName('__initStatic')), y.push(c))
+ : ((c = s.claimFreeName('__init')), d.push(c)),
+ L.push({
+ initializerName: c,
+ equalsIndex: U,
+ start: A,
+ end: t.currentIndex(),
+ });
+ } else (!i || S) && p.push({start: T, end: t.currentIndex()});
+ }
+ return (
+ t.restoreToSnapshot(r),
+ i
+ ? {
+ headerInfo: a,
+ constructorInitializerStatements: u,
+ instanceInitializerNames: [],
+ staticInitializerNames: [],
+ constructorInsertPos: g,
+ fields: [],
+ rangesToRemove: p,
+ }
+ : {
+ headerInfo: a,
+ constructorInitializerStatements: u,
+ instanceInitializerNames: d,
+ staticInitializerNames: y,
+ constructorInsertPos: g,
+ fields: L,
+ rangesToRemove: p,
+ }
+ );
+ }
+ Ql.default = Mv;
+ function Jl(e, t) {
+ for (e.nextToken(); e.currentToken().contextId !== t; ) e.nextToken();
+ for (; No(e.tokenAtRelativeIndex(-1)); ) e.previousToken();
+ }
+ function Fv(e) {
+ let t = e.currentToken(),
+ s = t.contextId;
+ if (s == null) throw new Error('Expected context ID on class token.');
+ let i = t.isExpression;
+ if (i == null) throw new Error('Expected isExpression on class token.');
+ let r = null,
+ a = !1;
+ for (
+ e.nextToken(),
+ e.matches1(Ne.TokenType.name) && (r = e.identifierName());
+ !e.matchesContextIdAndLabel(Ne.TokenType.braceL, s);
+
+ )
+ e.matches1(Ne.TokenType._extends) &&
+ !e.currentToken().isType &&
+ (a = !0),
+ e.nextToken();
+ return {isExpression: i, className: r, hasSuperclass: a};
+ }
+ function Eh(e) {
+ let t = [];
+ e.nextToken();
+ let s = e.currentToken().contextId;
+ if (s == null)
+ throw new Error(
+ 'Expected context ID on open-paren starting constructor params.'
+ );
+ for (; !e.matchesContextIdAndLabel(Ne.TokenType.parenR, s); )
+ if (e.currentToken().contextId === s) {
+ if ((e.nextToken(), No(e.currentToken()))) {
+ for (e.nextToken(); No(e.currentToken()); ) e.nextToken();
+ let a = e.currentToken();
+ if (a.type !== Ne.TokenType.name)
+ throw new Error(
+ 'Expected identifier after access modifiers in constructor arg.'
+ );
+ let u = e.identifierNameForToken(a);
+ t.push(`this.${u} = ${u}`);
+ }
+ } else e.nextToken();
+ e.nextToken();
+ let i = e.currentIndex(),
+ r = !1;
+ for (; !e.matchesContextIdAndLabel(Ne.TokenType.braceR, s); ) {
+ if (!r && e.matches2(Ne.TokenType._super, Ne.TokenType.parenL)) {
+ e.nextToken();
+ let a = e.currentToken().contextId;
+ if (a == null)
+ throw new Error('Expected a context ID on the super call');
+ for (; !e.matchesContextIdAndLabel(Ne.TokenType.parenR, a); )
+ e.nextToken();
+ (i = e.currentIndex()), (r = !0);
+ }
+ e.nextToken();
+ }
+ return (
+ e.nextToken(),
+ {constructorInitializerStatements: t, constructorInsertPos: i}
+ );
+ }
+ function No(e) {
+ return [
+ Ne.TokenType._async,
+ Ne.TokenType._get,
+ Ne.TokenType._set,
+ Ne.TokenType.plus,
+ Ne.TokenType.minus,
+ Ne.TokenType._readonly,
+ Ne.TokenType._static,
+ Ne.TokenType._public,
+ Ne.TokenType._private,
+ Ne.TokenType._protected,
+ Ne.TokenType._override,
+ Ne.TokenType._abstract,
+ Ne.TokenType.star,
+ Ne.TokenType._declare,
+ Ne.TokenType.hash,
+ ].includes(e.type);
+ }
+ function Bv(e) {
+ if (e.matches1(Ne.TokenType.bracketL)) {
+ let s = e.currentToken().contextId;
+ if (s == null)
+ throw new Error(
+ 'Expected class context ID on computed name open bracket.'
+ );
+ for (; !e.matchesContextIdAndLabel(Ne.TokenType.bracketR, s); )
+ e.nextToken();
+ e.nextToken();
+ } else e.nextToken();
+ }
+ });
+ var ec = Z((Zl) => {
+ 'use strict';
+ Object.defineProperty(Zl, '__esModule', {value: !0});
+ var Ph = be();
+ function Vv(e) {
+ if (
+ (e.removeInitialToken(),
+ e.removeToken(),
+ e.removeToken(),
+ e.removeToken(),
+ e.matches1(Ph.TokenType.parenL))
+ )
+ e.removeToken(), e.removeToken(), e.removeToken();
+ else
+ for (; e.matches1(Ph.TokenType.dot); ) e.removeToken(), e.removeToken();
+ }
+ Zl.default = Vv;
+ });
+ var tc = Z((Ro) => {
+ 'use strict';
+ Object.defineProperty(Ro, '__esModule', {value: !0});
+ var jv = xt(),
+ $v = be(),
+ qv = {typeDeclarations: new Set(), valueDeclarations: new Set()};
+ Ro.EMPTY_DECLARATION_INFO = qv;
+ function Kv(e) {
+ let t = new Set(),
+ s = new Set();
+ for (let i = 0; i < e.tokens.length; i++) {
+ let r = e.tokens[i];
+ r.type === $v.TokenType.name &&
+ jv.isTopLevelDeclaration.call(void 0, r) &&
+ (r.isType
+ ? t.add(e.identifierNameForToken(r))
+ : s.add(e.identifierNameForToken(r)));
+ }
+ return {typeDeclarations: t, valueDeclarations: s};
+ }
+ Ro.default = Kv;
+ });
+ var sc = Z((nc) => {
+ 'use strict';
+ Object.defineProperty(nc, '__esModule', {value: !0});
+ var Uv = It(),
+ Nh = be();
+ function Hv(e) {
+ e.matches2(Nh.TokenType.name, Nh.TokenType.braceL) &&
+ e.matchesContextual(Uv.ContextualKeyword._assert) &&
+ (e.removeToken(),
+ e.removeToken(),
+ e.removeBalancedCode(),
+ e.removeToken());
+ }
+ nc.removeMaybeImportAssertion = Hv;
+ });
+ var rc = Z((ic) => {
+ 'use strict';
+ Object.defineProperty(ic, '__esModule', {value: !0});
+ var Rh = be();
+ function Wv(e, t, s) {
+ if (!e) return !1;
+ let i = t.currentToken();
+ if (i.rhsEndIndex == null)
+ throw new Error('Expected non-null rhsEndIndex on export token.');
+ let r = i.rhsEndIndex - t.currentIndex();
+ if (
+ r !== 3 &&
+ !(r === 4 && t.matches1AtIndex(i.rhsEndIndex - 1, Rh.TokenType.semi))
+ )
+ return !1;
+ let a = t.tokenAtRelativeIndex(2);
+ if (a.type !== Rh.TokenType.name) return !1;
+ let u = t.identifierNameForToken(a);
+ return s.typeDeclarations.has(u) && !s.valueDeclarations.has(u);
+ }
+ ic.default = Wv;
+ });
+ var Oh = Z((ac) => {
+ 'use strict';
+ Object.defineProperty(ac, '__esModule', {value: !0});
+ function ur(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Lo = xt(),
+ Ls = It(),
+ N = be(),
+ Gv = ec(),
+ zv = ur(Gv),
+ Lh = tc(),
+ Xv = ur(Lh),
+ Yv = Wi(),
+ Jv = ur(Yv),
+ Oo = sc(),
+ Qv = rc(),
+ Zv = ur(Qv),
+ ex = hn(),
+ tx = ur(ex),
+ oc = class e extends tx.default {
+ __init() {
+ this.hadExport = !1;
+ }
+ __init2() {
+ this.hadNamedExport = !1;
+ }
+ __init3() {
+ this.hadDefaultExport = !1;
+ }
+ constructor(t, s, i, r, a, u, d, y, g, L) {
+ super(),
+ (this.rootTransformer = t),
+ (this.tokens = s),
+ (this.importProcessor = i),
+ (this.nameManager = r),
+ (this.helperManager = a),
+ (this.reactHotLoaderTransformer = u),
+ (this.enableLegacyBabel5ModuleInterop = d),
+ (this.enableLegacyTypeScriptModuleInterop = y),
+ (this.isTypeScriptTransformEnabled = g),
+ (this.preserveDynamicImport = L),
+ e.prototype.__init.call(this),
+ e.prototype.__init2.call(this),
+ e.prototype.__init3.call(this),
+ (this.declarationInfo = g
+ ? Xv.default.call(void 0, s)
+ : Lh.EMPTY_DECLARATION_INFO);
+ }
+ getPrefixCode() {
+ let t = '';
+ return (
+ this.hadExport &&
+ (t +=
+ 'Object.defineProperty(exports, "__esModule", {value: true});'),
+ t
+ );
+ }
+ getSuffixCode() {
+ return this.enableLegacyBabel5ModuleInterop &&
+ this.hadDefaultExport &&
+ !this.hadNamedExport
+ ? `
+module.exports = exports.default;
+`
+ : '';
+ }
+ process() {
+ return this.tokens.matches3(
+ N.TokenType._import,
+ N.TokenType.name,
+ N.TokenType.eq
+ )
+ ? this.processImportEquals()
+ : this.tokens.matches1(N.TokenType._import)
+ ? (this.processImport(), !0)
+ : this.tokens.matches2(N.TokenType._export, N.TokenType.eq)
+ ? (this.tokens.replaceToken('module.exports'), !0)
+ : this.tokens.matches1(N.TokenType._export) &&
+ !this.tokens.currentToken().isType
+ ? ((this.hadExport = !0), this.processExport())
+ : this.tokens.matches2(N.TokenType.name, N.TokenType.postIncDec) &&
+ this.processPostIncDec()
+ ? !0
+ : this.tokens.matches1(N.TokenType.name) ||
+ this.tokens.matches1(N.TokenType.jsxName)
+ ? this.processIdentifier()
+ : this.tokens.matches1(N.TokenType.eq)
+ ? this.processAssignment()
+ : this.tokens.matches1(N.TokenType.assign)
+ ? this.processComplexAssignment()
+ : this.tokens.matches1(N.TokenType.preIncDec)
+ ? this.processPreIncDec()
+ : !1;
+ }
+ processImportEquals() {
+ let t = this.tokens.identifierNameAtIndex(
+ this.tokens.currentIndex() + 1
+ );
+ return (
+ this.importProcessor.isTypeName(t)
+ ? zv.default.call(void 0, this.tokens)
+ : this.tokens.replaceToken('const'),
+ !0
+ );
+ }
+ processImport() {
+ if (this.tokens.matches2(N.TokenType._import, N.TokenType.parenL)) {
+ if (this.preserveDynamicImport) {
+ this.tokens.copyToken();
+ return;
+ }
+ let s = this.enableLegacyTypeScriptModuleInterop
+ ? ''
+ : `${this.helperManager.getHelperName(
+ 'interopRequireWildcard'
+ )}(`;
+ this.tokens.replaceToken(
+ `Promise.resolve().then(() => ${s}require`
+ );
+ let i = this.tokens.currentToken().contextId;
+ if (i == null)
+ throw new Error(
+ 'Expected context ID on dynamic import invocation.'
+ );
+ for (
+ this.tokens.copyToken();
+ !this.tokens.matchesContextIdAndLabel(N.TokenType.parenR, i);
+
+ )
+ this.rootTransformer.processToken();
+ this.tokens.replaceToken(s ? ')))' : '))');
+ return;
+ }
+ if (this.removeImportAndDetectIfType()) this.tokens.removeToken();
+ else {
+ let s = this.tokens.stringValue();
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ this.importProcessor.claimImportCode(s)
+ ),
+ this.tokens.appendCode(this.importProcessor.claimImportCode(s));
+ }
+ Oo.removeMaybeImportAssertion.call(void 0, this.tokens),
+ this.tokens.matches1(N.TokenType.semi) && this.tokens.removeToken();
+ }
+ removeImportAndDetectIfType() {
+ if (
+ (this.tokens.removeInitialToken(),
+ this.tokens.matchesContextual(Ls.ContextualKeyword._type) &&
+ !this.tokens.matches1AtIndex(
+ this.tokens.currentIndex() + 1,
+ N.TokenType.comma
+ ) &&
+ !this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 1,
+ Ls.ContextualKeyword._from
+ ))
+ )
+ return this.removeRemainingImport(), !0;
+ if (
+ this.tokens.matches1(N.TokenType.name) ||
+ this.tokens.matches1(N.TokenType.star)
+ )
+ return this.removeRemainingImport(), !1;
+ if (this.tokens.matches1(N.TokenType.string)) return !1;
+ let t = !1;
+ for (; !this.tokens.matches1(N.TokenType.string); )
+ ((!t && this.tokens.matches1(N.TokenType.braceL)) ||
+ this.tokens.matches1(N.TokenType.comma)) &&
+ (this.tokens.removeToken(),
+ (this.tokens.matches2(N.TokenType.name, N.TokenType.comma) ||
+ this.tokens.matches2(N.TokenType.name, N.TokenType.braceR) ||
+ this.tokens.matches4(
+ N.TokenType.name,
+ N.TokenType.name,
+ N.TokenType.name,
+ N.TokenType.comma
+ ) ||
+ this.tokens.matches4(
+ N.TokenType.name,
+ N.TokenType.name,
+ N.TokenType.name,
+ N.TokenType.braceR
+ )) &&
+ (t = !0)),
+ this.tokens.removeToken();
+ return !t;
+ }
+ removeRemainingImport() {
+ for (; !this.tokens.matches1(N.TokenType.string); )
+ this.tokens.removeToken();
+ }
+ processIdentifier() {
+ let t = this.tokens.currentToken();
+ if (t.shadowsGlobal) return !1;
+ if (t.identifierRole === Lo.IdentifierRole.ObjectShorthand)
+ return this.processObjectShorthand();
+ if (t.identifierRole !== Lo.IdentifierRole.Access) return !1;
+ let s = this.importProcessor.getIdentifierReplacement(
+ this.tokens.identifierNameForToken(t)
+ );
+ if (!s) return !1;
+ let i = this.tokens.currentIndex() + 1;
+ for (
+ ;
+ i < this.tokens.tokens.length &&
+ this.tokens.tokens[i].type === N.TokenType.parenR;
+
+ )
+ i++;
+ return (
+ this.tokens.tokens[i].type === N.TokenType.parenL
+ ? this.tokens.tokenAtRelativeIndex(1).type ===
+ N.TokenType.parenL &&
+ this.tokens.tokenAtRelativeIndex(-1).type !== N.TokenType._new
+ ? (this.tokens.replaceToken(`${s}.call(void 0, `),
+ this.tokens.removeToken(),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(N.TokenType.parenR))
+ : this.tokens.replaceToken(`(0, ${s})`)
+ : this.tokens.replaceToken(s),
+ !0
+ );
+ }
+ processObjectShorthand() {
+ let t = this.tokens.identifierName(),
+ s = this.importProcessor.getIdentifierReplacement(t);
+ return s ? (this.tokens.replaceToken(`${t}: ${s}`), !0) : !1;
+ }
+ processExport() {
+ if (
+ this.tokens.matches2(N.TokenType._export, N.TokenType._enum) ||
+ this.tokens.matches3(
+ N.TokenType._export,
+ N.TokenType._const,
+ N.TokenType._enum
+ )
+ )
+ return !1;
+ if (this.tokens.matches2(N.TokenType._export, N.TokenType._default))
+ return (
+ (this.hadDefaultExport = !0),
+ this.tokens.matches3(
+ N.TokenType._export,
+ N.TokenType._default,
+ N.TokenType._enum
+ )
+ ? !1
+ : (this.processExportDefault(), !0)
+ );
+ if (
+ ((this.hadNamedExport = !0),
+ this.tokens.matches2(N.TokenType._export, N.TokenType._var) ||
+ this.tokens.matches2(N.TokenType._export, N.TokenType._let) ||
+ this.tokens.matches2(N.TokenType._export, N.TokenType._const))
+ )
+ return this.processExportVar(), !0;
+ if (
+ this.tokens.matches2(N.TokenType._export, N.TokenType._function) ||
+ this.tokens.matches3(
+ N.TokenType._export,
+ N.TokenType.name,
+ N.TokenType._function
+ )
+ )
+ return this.processExportFunction(), !0;
+ if (
+ this.tokens.matches2(N.TokenType._export, N.TokenType._class) ||
+ this.tokens.matches3(
+ N.TokenType._export,
+ N.TokenType._abstract,
+ N.TokenType._class
+ ) ||
+ this.tokens.matches2(N.TokenType._export, N.TokenType.at)
+ )
+ return this.processExportClass(), !0;
+ if (this.tokens.matches2(N.TokenType._export, N.TokenType.braceL))
+ return this.processExportBindings(), !0;
+ if (this.tokens.matches2(N.TokenType._export, N.TokenType.star))
+ return this.processExportStar(), !0;
+ if (
+ this.tokens.matches2(N.TokenType._export, N.TokenType.name) &&
+ this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 1,
+ Ls.ContextualKeyword._type
+ )
+ ) {
+ if (
+ (this.tokens.removeInitialToken(),
+ this.tokens.removeToken(),
+ this.tokens.matches1(N.TokenType.braceL))
+ ) {
+ for (; !this.tokens.matches1(N.TokenType.braceR); )
+ this.tokens.removeToken();
+ this.tokens.removeToken();
+ } else
+ this.tokens.removeToken(),
+ this.tokens.matches1(N.TokenType._as) &&
+ (this.tokens.removeToken(), this.tokens.removeToken());
+ return (
+ this.tokens.matchesContextual(Ls.ContextualKeyword._from) &&
+ this.tokens.matches1AtIndex(
+ this.tokens.currentIndex() + 1,
+ N.TokenType.string
+ ) &&
+ (this.tokens.removeToken(),
+ this.tokens.removeToken(),
+ Oo.removeMaybeImportAssertion.call(void 0, this.tokens)),
+ !0
+ );
+ } else throw new Error('Unrecognized export syntax.');
+ }
+ processAssignment() {
+ let t = this.tokens.currentIndex(),
+ s = this.tokens.tokens[t - 1];
+ if (
+ s.isType ||
+ s.type !== N.TokenType.name ||
+ s.shadowsGlobal ||
+ (t >= 2 && this.tokens.matches1AtIndex(t - 2, N.TokenType.dot)) ||
+ (t >= 2 &&
+ [N.TokenType._var, N.TokenType._let, N.TokenType._const].includes(
+ this.tokens.tokens[t - 2].type
+ ))
+ )
+ return !1;
+ let i = this.importProcessor.resolveExportBinding(
+ this.tokens.identifierNameForToken(s)
+ );
+ return i
+ ? (this.tokens.copyToken(), this.tokens.appendCode(` ${i} =`), !0)
+ : !1;
+ }
+ processComplexAssignment() {
+ let t = this.tokens.currentIndex(),
+ s = this.tokens.tokens[t - 1];
+ if (
+ s.type !== N.TokenType.name ||
+ s.shadowsGlobal ||
+ (t >= 2 && this.tokens.matches1AtIndex(t - 2, N.TokenType.dot))
+ )
+ return !1;
+ let i = this.importProcessor.resolveExportBinding(
+ this.tokens.identifierNameForToken(s)
+ );
+ return i
+ ? (this.tokens.appendCode(` = ${i}`), this.tokens.copyToken(), !0)
+ : !1;
+ }
+ processPreIncDec() {
+ let t = this.tokens.currentIndex(),
+ s = this.tokens.tokens[t + 1];
+ if (
+ s.type !== N.TokenType.name ||
+ s.shadowsGlobal ||
+ (t + 2 < this.tokens.tokens.length &&
+ (this.tokens.matches1AtIndex(t + 2, N.TokenType.dot) ||
+ this.tokens.matches1AtIndex(t + 2, N.TokenType.bracketL) ||
+ this.tokens.matches1AtIndex(t + 2, N.TokenType.parenL)))
+ )
+ return !1;
+ let i = this.tokens.identifierNameForToken(s),
+ r = this.importProcessor.resolveExportBinding(i);
+ return r
+ ? (this.tokens.appendCode(`${r} = `), this.tokens.copyToken(), !0)
+ : !1;
+ }
+ processPostIncDec() {
+ let t = this.tokens.currentIndex(),
+ s = this.tokens.tokens[t],
+ i = this.tokens.tokens[t + 1];
+ if (
+ s.type !== N.TokenType.name ||
+ s.shadowsGlobal ||
+ (t >= 1 && this.tokens.matches1AtIndex(t - 1, N.TokenType.dot))
+ )
+ return !1;
+ let r = this.tokens.identifierNameForToken(s),
+ a = this.importProcessor.resolveExportBinding(r);
+ if (!a) return !1;
+ let u = this.tokens.rawCodeForToken(i),
+ d = this.importProcessor.getIdentifierReplacement(r) || r;
+ if (u === '++')
+ this.tokens.replaceToken(`(${d} = ${a} = ${d} + 1, ${d} - 1)`);
+ else if (u === '--')
+ this.tokens.replaceToken(`(${d} = ${a} = ${d} - 1, ${d} + 1)`);
+ else throw new Error(`Unexpected operator: ${u}`);
+ return this.tokens.removeToken(), !0;
+ }
+ processExportDefault() {
+ if (
+ this.tokens.matches4(
+ N.TokenType._export,
+ N.TokenType._default,
+ N.TokenType._function,
+ N.TokenType.name
+ ) ||
+ (this.tokens.matches5(
+ N.TokenType._export,
+ N.TokenType._default,
+ N.TokenType.name,
+ N.TokenType._function,
+ N.TokenType.name
+ ) &&
+ this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 2,
+ Ls.ContextualKeyword._async
+ ))
+ ) {
+ this.tokens.removeInitialToken(), this.tokens.removeToken();
+ let t = this.processNamedFunction();
+ this.tokens.appendCode(` exports.default = ${t};`);
+ } else if (
+ this.tokens.matches4(
+ N.TokenType._export,
+ N.TokenType._default,
+ N.TokenType._class,
+ N.TokenType.name
+ ) ||
+ this.tokens.matches5(
+ N.TokenType._export,
+ N.TokenType._default,
+ N.TokenType._abstract,
+ N.TokenType._class,
+ N.TokenType.name
+ ) ||
+ this.tokens.matches3(
+ N.TokenType._export,
+ N.TokenType._default,
+ N.TokenType.at
+ )
+ ) {
+ this.tokens.removeInitialToken(),
+ this.tokens.removeToken(),
+ this.copyDecorators(),
+ this.tokens.matches1(N.TokenType._abstract) &&
+ this.tokens.removeToken();
+ let t = this.rootTransformer.processNamedClass();
+ this.tokens.appendCode(` exports.default = ${t};`);
+ } else if (
+ Zv.default.call(
+ void 0,
+ this.isTypeScriptTransformEnabled,
+ this.tokens,
+ this.declarationInfo
+ )
+ )
+ this.tokens.removeInitialToken(),
+ this.tokens.removeToken(),
+ this.tokens.removeToken();
+ else if (this.reactHotLoaderTransformer) {
+ let t = this.nameManager.claimFreeName('_default');
+ this.tokens.replaceToken(`let ${t}; exports.`),
+ this.tokens.copyToken(),
+ this.tokens.appendCode(` = ${t} =`),
+ this.reactHotLoaderTransformer.setExtractedDefaultExportName(t);
+ } else
+ this.tokens.replaceToken('exports.'),
+ this.tokens.copyToken(),
+ this.tokens.appendCode(' =');
+ }
+ copyDecorators() {
+ for (; this.tokens.matches1(N.TokenType.at); )
+ if (
+ (this.tokens.copyToken(),
+ this.tokens.matches1(N.TokenType.parenL))
+ )
+ this.tokens.copyExpectedToken(N.TokenType.parenL),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(N.TokenType.parenR);
+ else {
+ for (
+ this.tokens.copyExpectedToken(N.TokenType.name);
+ this.tokens.matches1(N.TokenType.dot);
+
+ )
+ this.tokens.copyExpectedToken(N.TokenType.dot),
+ this.tokens.copyExpectedToken(N.TokenType.name);
+ this.tokens.matches1(N.TokenType.parenL) &&
+ (this.tokens.copyExpectedToken(N.TokenType.parenL),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(N.TokenType.parenR));
+ }
+ }
+ processExportVar() {
+ this.isSimpleExportVar()
+ ? this.processSimpleExportVar()
+ : this.processComplexExportVar();
+ }
+ isSimpleExportVar() {
+ let t = this.tokens.currentIndex();
+ if ((t++, t++, !this.tokens.matches1AtIndex(t, N.TokenType.name)))
+ return !1;
+ for (
+ t++;
+ t < this.tokens.tokens.length && this.tokens.tokens[t].isType;
+
+ )
+ t++;
+ return !!this.tokens.matches1AtIndex(t, N.TokenType.eq);
+ }
+ processSimpleExportVar() {
+ this.tokens.removeInitialToken(), this.tokens.copyToken();
+ let t = this.tokens.identifierName();
+ for (; !this.tokens.matches1(N.TokenType.eq); )
+ this.rootTransformer.processToken();
+ let s = this.tokens.currentToken().rhsEndIndex;
+ if (s == null) throw new Error('Expected = token with an end index.');
+ for (; this.tokens.currentIndex() < s; )
+ this.rootTransformer.processToken();
+ this.tokens.appendCode(`; exports.${t} = ${t}`);
+ }
+ processComplexExportVar() {
+ this.tokens.removeInitialToken(), this.tokens.removeToken();
+ let t = this.tokens.matches1(N.TokenType.braceL);
+ t && this.tokens.appendCode('(');
+ let s = 0;
+ for (;;)
+ if (
+ this.tokens.matches1(N.TokenType.braceL) ||
+ this.tokens.matches1(N.TokenType.dollarBraceL) ||
+ this.tokens.matches1(N.TokenType.bracketL)
+ )
+ s++, this.tokens.copyToken();
+ else if (
+ this.tokens.matches1(N.TokenType.braceR) ||
+ this.tokens.matches1(N.TokenType.bracketR)
+ )
+ s--, this.tokens.copyToken();
+ else {
+ if (
+ s === 0 &&
+ !this.tokens.matches1(N.TokenType.name) &&
+ !this.tokens.currentToken().isType
+ )
+ break;
+ if (this.tokens.matches1(N.TokenType.eq)) {
+ let i = this.tokens.currentToken().rhsEndIndex;
+ if (i == null)
+ throw new Error('Expected = token with an end index.');
+ for (; this.tokens.currentIndex() < i; )
+ this.rootTransformer.processToken();
+ } else {
+ let i = this.tokens.currentToken();
+ if (Lo.isDeclaration.call(void 0, i)) {
+ let r = this.tokens.identifierName(),
+ a = this.importProcessor.getIdentifierReplacement(r);
+ if (a === null)
+ throw new Error(
+ `Expected a replacement for ${r} in \`export var\` syntax.`
+ );
+ Lo.isObjectShorthandDeclaration.call(void 0, i) &&
+ (a = `${r}: ${a}`),
+ this.tokens.replaceToken(a);
+ } else this.rootTransformer.processToken();
+ }
+ }
+ if (t) {
+ let i = this.tokens.currentToken().rhsEndIndex;
+ if (i == null)
+ throw new Error('Expected = token with an end index.');
+ for (; this.tokens.currentIndex() < i; )
+ this.rootTransformer.processToken();
+ this.tokens.appendCode(')');
+ }
+ }
+ processExportFunction() {
+ this.tokens.replaceToken('');
+ let t = this.processNamedFunction();
+ this.tokens.appendCode(` exports.${t} = ${t};`);
+ }
+ processNamedFunction() {
+ if (this.tokens.matches1(N.TokenType._function))
+ this.tokens.copyToken();
+ else if (
+ this.tokens.matches2(N.TokenType.name, N.TokenType._function)
+ ) {
+ if (!this.tokens.matchesContextual(Ls.ContextualKeyword._async))
+ throw new Error('Expected async keyword in function export.');
+ this.tokens.copyToken(), this.tokens.copyToken();
+ }
+ if (
+ (this.tokens.matches1(N.TokenType.star) && this.tokens.copyToken(),
+ !this.tokens.matches1(N.TokenType.name))
+ )
+ throw new Error('Expected identifier for exported function name.');
+ let t = this.tokens.identifierName();
+ if ((this.tokens.copyToken(), this.tokens.currentToken().isType))
+ for (
+ this.tokens.removeInitialToken();
+ this.tokens.currentToken().isType;
+
+ )
+ this.tokens.removeToken();
+ return (
+ this.tokens.copyExpectedToken(N.TokenType.parenL),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(N.TokenType.parenR),
+ this.rootTransformer.processPossibleTypeRange(),
+ this.tokens.copyExpectedToken(N.TokenType.braceL),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(N.TokenType.braceR),
+ t
+ );
+ }
+ processExportClass() {
+ this.tokens.removeInitialToken(),
+ this.copyDecorators(),
+ this.tokens.matches1(N.TokenType._abstract) &&
+ this.tokens.removeToken();
+ let t = this.rootTransformer.processNamedClass();
+ this.tokens.appendCode(` exports.${t} = ${t};`);
+ }
+ processExportBindings() {
+ this.tokens.removeInitialToken(), this.tokens.removeToken();
+ let t = [];
+ for (;;) {
+ if (this.tokens.matches1(N.TokenType.braceR)) {
+ this.tokens.removeToken();
+ break;
+ }
+ let s = Jv.default.call(void 0, this.tokens);
+ for (; this.tokens.currentIndex() < s.endIndex; )
+ this.tokens.removeToken();
+ if (!s.isType && !this.shouldElideExportedIdentifier(s.leftName)) {
+ let i = s.leftName,
+ r = s.rightName,
+ a = this.importProcessor.getIdentifierReplacement(i);
+ t.push(`exports.${r} = ${a || i};`);
+ }
+ if (this.tokens.matches1(N.TokenType.braceR)) {
+ this.tokens.removeToken();
+ break;
+ }
+ if (this.tokens.matches2(N.TokenType.comma, N.TokenType.braceR)) {
+ this.tokens.removeToken(), this.tokens.removeToken();
+ break;
+ } else if (this.tokens.matches1(N.TokenType.comma))
+ this.tokens.removeToken();
+ else
+ throw new Error(
+ `Unexpected token: ${JSON.stringify(
+ this.tokens.currentToken()
+ )}`
+ );
+ }
+ if (this.tokens.matchesContextual(Ls.ContextualKeyword._from)) {
+ this.tokens.removeToken();
+ let s = this.tokens.stringValue();
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ this.importProcessor.claimImportCode(s)
+ ),
+ Oo.removeMaybeImportAssertion.call(void 0, this.tokens);
+ } else this.tokens.appendCode(t.join(' '));
+ this.tokens.matches1(N.TokenType.semi) && this.tokens.removeToken();
+ }
+ processExportStar() {
+ for (
+ this.tokens.removeInitialToken();
+ !this.tokens.matches1(N.TokenType.string);
+
+ )
+ this.tokens.removeToken();
+ let t = this.tokens.stringValue();
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ this.importProcessor.claimImportCode(t)
+ ),
+ Oo.removeMaybeImportAssertion.call(void 0, this.tokens),
+ this.tokens.matches1(N.TokenType.semi) && this.tokens.removeToken();
+ }
+ shouldElideExportedIdentifier(t) {
+ return (
+ this.isTypeScriptTransformEnabled &&
+ !this.declarationInfo.valueDeclarations.has(t)
+ );
+ }
+ };
+ ac.default = oc;
+ });
+ var Bh = Z((cc) => {
+ 'use strict';
+ Object.defineProperty(cc, '__esModule', {value: !0});
+ function pr(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Jn = It(),
+ se = be(),
+ nx = ec(),
+ sx = pr(nx),
+ Fh = tc(),
+ ix = pr(Fh),
+ rx = Wi(),
+ Dh = pr(rx),
+ ox = Fa(),
+ Mh = sc(),
+ ax = rc(),
+ lx = pr(ax),
+ cx = hn(),
+ ux = pr(cx),
+ lc = class extends ux.default {
+ constructor(t, s, i, r, a, u) {
+ super(),
+ (this.tokens = t),
+ (this.nameManager = s),
+ (this.helperManager = i),
+ (this.reactHotLoaderTransformer = r),
+ (this.isTypeScriptTransformEnabled = a),
+ (this.nonTypeIdentifiers = a
+ ? ox.getNonTypeIdentifiers.call(void 0, t, u)
+ : new Set()),
+ (this.declarationInfo = a
+ ? ix.default.call(void 0, t)
+ : Fh.EMPTY_DECLARATION_INFO),
+ (this.injectCreateRequireForImportRequire =
+ !!u.injectCreateRequireForImportRequire);
+ }
+ process() {
+ if (
+ this.tokens.matches3(
+ se.TokenType._import,
+ se.TokenType.name,
+ se.TokenType.eq
+ )
+ )
+ return this.processImportEquals();
+ if (
+ this.tokens.matches4(
+ se.TokenType._import,
+ se.TokenType.name,
+ se.TokenType.name,
+ se.TokenType.eq
+ ) &&
+ this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 1,
+ Jn.ContextualKeyword._type
+ )
+ ) {
+ this.tokens.removeInitialToken();
+ for (let t = 0; t < 7; t++) this.tokens.removeToken();
+ return !0;
+ }
+ if (this.tokens.matches2(se.TokenType._export, se.TokenType.eq))
+ return this.tokens.replaceToken('module.exports'), !0;
+ if (
+ this.tokens.matches5(
+ se.TokenType._export,
+ se.TokenType._import,
+ se.TokenType.name,
+ se.TokenType.name,
+ se.TokenType.eq
+ ) &&
+ this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 2,
+ Jn.ContextualKeyword._type
+ )
+ ) {
+ this.tokens.removeInitialToken();
+ for (let t = 0; t < 8; t++) this.tokens.removeToken();
+ return !0;
+ }
+ if (this.tokens.matches1(se.TokenType._import))
+ return this.processImport();
+ if (this.tokens.matches2(se.TokenType._export, se.TokenType._default))
+ return this.processExportDefault();
+ if (this.tokens.matches2(se.TokenType._export, se.TokenType.braceL))
+ return this.processNamedExports();
+ if (
+ this.tokens.matches2(se.TokenType._export, se.TokenType.name) &&
+ this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 1,
+ Jn.ContextualKeyword._type
+ )
+ ) {
+ if (
+ (this.tokens.removeInitialToken(),
+ this.tokens.removeToken(),
+ this.tokens.matches1(se.TokenType.braceL))
+ ) {
+ for (; !this.tokens.matches1(se.TokenType.braceR); )
+ this.tokens.removeToken();
+ this.tokens.removeToken();
+ } else
+ this.tokens.removeToken(),
+ this.tokens.matches1(se.TokenType._as) &&
+ (this.tokens.removeToken(), this.tokens.removeToken());
+ return (
+ this.tokens.matchesContextual(Jn.ContextualKeyword._from) &&
+ this.tokens.matches1AtIndex(
+ this.tokens.currentIndex() + 1,
+ se.TokenType.string
+ ) &&
+ (this.tokens.removeToken(),
+ this.tokens.removeToken(),
+ Mh.removeMaybeImportAssertion.call(void 0, this.tokens)),
+ !0
+ );
+ }
+ return !1;
+ }
+ processImportEquals() {
+ let t = this.tokens.identifierNameAtIndex(
+ this.tokens.currentIndex() + 1
+ );
+ return (
+ this.isTypeName(t)
+ ? sx.default.call(void 0, this.tokens)
+ : this.injectCreateRequireForImportRequire
+ ? (this.tokens.replaceToken('const'),
+ this.tokens.copyToken(),
+ this.tokens.copyToken(),
+ this.tokens.replaceToken(
+ this.helperManager.getHelperName('require')
+ ))
+ : this.tokens.replaceToken('const'),
+ !0
+ );
+ }
+ processImport() {
+ if (this.tokens.matches2(se.TokenType._import, se.TokenType.parenL))
+ return !1;
+ let t = this.tokens.snapshot();
+ if (this.removeImportTypeBindings()) {
+ for (
+ this.tokens.restoreToSnapshot(t);
+ !this.tokens.matches1(se.TokenType.string);
+
+ )
+ this.tokens.removeToken();
+ this.tokens.removeToken(),
+ Mh.removeMaybeImportAssertion.call(void 0, this.tokens),
+ this.tokens.matches1(se.TokenType.semi) &&
+ this.tokens.removeToken();
+ }
+ return !0;
+ }
+ removeImportTypeBindings() {
+ if (
+ (this.tokens.copyExpectedToken(se.TokenType._import),
+ this.tokens.matchesContextual(Jn.ContextualKeyword._type) &&
+ !this.tokens.matches1AtIndex(
+ this.tokens.currentIndex() + 1,
+ se.TokenType.comma
+ ) &&
+ !this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 1,
+ Jn.ContextualKeyword._from
+ ))
+ )
+ return !0;
+ if (this.tokens.matches1(se.TokenType.string))
+ return this.tokens.copyToken(), !1;
+ this.tokens.matchesContextual(Jn.ContextualKeyword._module) &&
+ this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 2,
+ Jn.ContextualKeyword._from
+ ) &&
+ this.tokens.copyToken();
+ let t = !1,
+ s = !1;
+ if (
+ (this.tokens.matches1(se.TokenType.name) &&
+ (this.isTypeName(this.tokens.identifierName())
+ ? (this.tokens.removeToken(),
+ this.tokens.matches1(se.TokenType.comma) &&
+ this.tokens.removeToken())
+ : ((t = !0),
+ this.tokens.copyToken(),
+ this.tokens.matches1(se.TokenType.comma) &&
+ ((s = !0), this.tokens.removeToken()))),
+ this.tokens.matches1(se.TokenType.star))
+ )
+ this.isTypeName(this.tokens.identifierNameAtRelativeIndex(2))
+ ? (this.tokens.removeToken(),
+ this.tokens.removeToken(),
+ this.tokens.removeToken())
+ : (s && this.tokens.appendCode(','),
+ (t = !0),
+ this.tokens.copyExpectedToken(se.TokenType.star),
+ this.tokens.copyExpectedToken(se.TokenType.name),
+ this.tokens.copyExpectedToken(se.TokenType.name));
+ else if (this.tokens.matches1(se.TokenType.braceL)) {
+ for (
+ s && this.tokens.appendCode(','), this.tokens.copyToken();
+ !this.tokens.matches1(se.TokenType.braceR);
+
+ ) {
+ let i = Dh.default.call(void 0, this.tokens);
+ if (i.isType || this.isTypeName(i.rightName)) {
+ for (; this.tokens.currentIndex() < i.endIndex; )
+ this.tokens.removeToken();
+ this.tokens.matches1(se.TokenType.comma) &&
+ this.tokens.removeToken();
+ } else {
+ for (t = !0; this.tokens.currentIndex() < i.endIndex; )
+ this.tokens.copyToken();
+ this.tokens.matches1(se.TokenType.comma) &&
+ this.tokens.copyToken();
+ }
+ }
+ this.tokens.copyExpectedToken(se.TokenType.braceR);
+ }
+ return !t;
+ }
+ isTypeName(t) {
+ return (
+ this.isTypeScriptTransformEnabled && !this.nonTypeIdentifiers.has(t)
+ );
+ }
+ processExportDefault() {
+ if (
+ lx.default.call(
+ void 0,
+ this.isTypeScriptTransformEnabled,
+ this.tokens,
+ this.declarationInfo
+ )
+ )
+ return (
+ this.tokens.removeInitialToken(),
+ this.tokens.removeToken(),
+ this.tokens.removeToken(),
+ !0
+ );
+ if (
+ !(
+ this.tokens.matches4(
+ se.TokenType._export,
+ se.TokenType._default,
+ se.TokenType._function,
+ se.TokenType.name
+ ) ||
+ (this.tokens.matches5(
+ se.TokenType._export,
+ se.TokenType._default,
+ se.TokenType.name,
+ se.TokenType._function,
+ se.TokenType.name
+ ) &&
+ this.tokens.matchesContextualAtIndex(
+ this.tokens.currentIndex() + 2,
+ Jn.ContextualKeyword._async
+ )) ||
+ this.tokens.matches4(
+ se.TokenType._export,
+ se.TokenType._default,
+ se.TokenType._class,
+ se.TokenType.name
+ ) ||
+ this.tokens.matches5(
+ se.TokenType._export,
+ se.TokenType._default,
+ se.TokenType._abstract,
+ se.TokenType._class,
+ se.TokenType.name
+ )
+ ) &&
+ this.reactHotLoaderTransformer
+ ) {
+ let s = this.nameManager.claimFreeName('_default');
+ return (
+ this.tokens.replaceToken(`let ${s}; export`),
+ this.tokens.copyToken(),
+ this.tokens.appendCode(` ${s} =`),
+ this.reactHotLoaderTransformer.setExtractedDefaultExportName(s),
+ !0
+ );
+ }
+ return !1;
+ }
+ processNamedExports() {
+ if (!this.isTypeScriptTransformEnabled) return !1;
+ for (
+ this.tokens.copyExpectedToken(se.TokenType._export),
+ this.tokens.copyExpectedToken(se.TokenType.braceL);
+ !this.tokens.matches1(se.TokenType.braceR);
+
+ ) {
+ let t = Dh.default.call(void 0, this.tokens);
+ if (t.isType || this.shouldElideExportedName(t.leftName)) {
+ for (; this.tokens.currentIndex() < t.endIndex; )
+ this.tokens.removeToken();
+ this.tokens.matches1(se.TokenType.comma) &&
+ this.tokens.removeToken();
+ } else {
+ for (; this.tokens.currentIndex() < t.endIndex; )
+ this.tokens.copyToken();
+ this.tokens.matches1(se.TokenType.comma) &&
+ this.tokens.copyToken();
+ }
+ }
+ return this.tokens.copyExpectedToken(se.TokenType.braceR), !0;
+ }
+ shouldElideExportedName(t) {
+ return (
+ this.isTypeScriptTransformEnabled &&
+ this.declarationInfo.typeDeclarations.has(t) &&
+ !this.declarationInfo.valueDeclarations.has(t)
+ );
+ }
+ };
+ cc.default = lc;
+ });
+ var jh = Z((pc) => {
+ 'use strict';
+ Object.defineProperty(pc, '__esModule', {value: !0});
+ function px(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Vh = It(),
+ sn = be(),
+ hx = hn(),
+ fx = px(hx),
+ uc = class extends fx.default {
+ constructor(t, s, i) {
+ super(),
+ (this.rootTransformer = t),
+ (this.tokens = s),
+ (this.isImportsTransformEnabled = i);
+ }
+ process() {
+ return this.rootTransformer.processPossibleArrowParamEnd() ||
+ this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||
+ this.rootTransformer.processPossibleTypeRange()
+ ? !0
+ : this.tokens.matches1(sn.TokenType._enum)
+ ? (this.processEnum(), !0)
+ : this.tokens.matches2(sn.TokenType._export, sn.TokenType._enum)
+ ? (this.processNamedExportEnum(), !0)
+ : this.tokens.matches3(
+ sn.TokenType._export,
+ sn.TokenType._default,
+ sn.TokenType._enum
+ )
+ ? (this.processDefaultExportEnum(), !0)
+ : !1;
+ }
+ processNamedExportEnum() {
+ if (this.isImportsTransformEnabled) {
+ this.tokens.removeInitialToken();
+ let t = this.tokens.identifierNameAtRelativeIndex(1);
+ this.processEnum(), this.tokens.appendCode(` exports.${t} = ${t};`);
+ } else this.tokens.copyToken(), this.processEnum();
+ }
+ processDefaultExportEnum() {
+ this.tokens.removeInitialToken(), this.tokens.removeToken();
+ let t = this.tokens.identifierNameAtRelativeIndex(1);
+ this.processEnum(),
+ this.isImportsTransformEnabled
+ ? this.tokens.appendCode(` exports.default = ${t};`)
+ : this.tokens.appendCode(` export default ${t};`);
+ }
+ processEnum() {
+ this.tokens.replaceToken('const'),
+ this.tokens.copyExpectedToken(sn.TokenType.name);
+ let t = !1;
+ this.tokens.matchesContextual(Vh.ContextualKeyword._of) &&
+ (this.tokens.removeToken(),
+ (t = this.tokens.matchesContextual(Vh.ContextualKeyword._symbol)),
+ this.tokens.removeToken());
+ let s = this.tokens.matches3(
+ sn.TokenType.braceL,
+ sn.TokenType.name,
+ sn.TokenType.eq
+ );
+ this.tokens.appendCode(' = require("flow-enums-runtime")');
+ let i = !t && !s;
+ for (
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ i ? '.Mirrored([' : '({'
+ );
+ !this.tokens.matches1(sn.TokenType.braceR);
+
+ ) {
+ if (this.tokens.matches1(sn.TokenType.ellipsis)) {
+ this.tokens.removeToken();
+ break;
+ }
+ this.processEnumElement(t, s),
+ this.tokens.matches1(sn.TokenType.comma) &&
+ this.tokens.copyToken();
+ }
+ this.tokens.replaceToken(i ? ']);' : '});');
+ }
+ processEnumElement(t, s) {
+ if (t) {
+ let i = this.tokens.identifierName();
+ this.tokens.copyToken(), this.tokens.appendCode(`: Symbol("${i}")`);
+ } else
+ s
+ ? (this.tokens.copyToken(),
+ this.tokens.replaceTokenTrimmingLeftWhitespace(':'),
+ this.tokens.copyToken())
+ : this.tokens.replaceToken(`"${this.tokens.identifierName()}"`);
+ }
+ };
+ pc.default = uc;
+ });
+ var $h = Z((fc) => {
+ 'use strict';
+ Object.defineProperty(fc, '__esModule', {value: !0});
+ function dx(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ function mx(e) {
+ let t,
+ s = e[0],
+ i = 1;
+ for (; i < e.length; ) {
+ let r = e[i],
+ a = e[i + 1];
+ if (
+ ((i += 2),
+ (r === 'optionalAccess' || r === 'optionalCall') && s == null)
+ )
+ return;
+ r === 'access' || r === 'optionalAccess'
+ ? ((t = s), (s = a(s)))
+ : (r === 'call' || r === 'optionalCall') &&
+ ((s = a((...u) => s.call(t, ...u))), (t = void 0));
+ }
+ return s;
+ }
+ var Qn = be(),
+ yx = hn(),
+ Tx = dx(yx),
+ Do = 'jest',
+ kx = ['mock', 'unmock', 'enableAutomock', 'disableAutomock'],
+ hc = class e extends Tx.default {
+ __init() {
+ this.hoistedFunctionNames = [];
+ }
+ constructor(t, s, i, r) {
+ super(),
+ (this.rootTransformer = t),
+ (this.tokens = s),
+ (this.nameManager = i),
+ (this.importProcessor = r),
+ e.prototype.__init.call(this);
+ }
+ process() {
+ return this.tokens.currentToken().scopeDepth === 0 &&
+ this.tokens.matches4(
+ Qn.TokenType.name,
+ Qn.TokenType.dot,
+ Qn.TokenType.name,
+ Qn.TokenType.parenL
+ ) &&
+ this.tokens.identifierName() === Do
+ ? mx([
+ this,
+ 'access',
+ (t) => t.importProcessor,
+ 'optionalAccess',
+ (t) => t.getGlobalNames,
+ 'call',
+ (t) => t(),
+ 'optionalAccess',
+ (t) => t.has,
+ 'call',
+ (t) => t(Do),
+ ])
+ ? !1
+ : this.extractHoistedCalls()
+ : !1;
+ }
+ getHoistedCode() {
+ return this.hoistedFunctionNames.length > 0
+ ? this.hoistedFunctionNames.map((t) => `${t}();`).join('')
+ : '';
+ }
+ extractHoistedCalls() {
+ this.tokens.removeToken();
+ let t = !1;
+ for (
+ ;
+ this.tokens.matches3(
+ Qn.TokenType.dot,
+ Qn.TokenType.name,
+ Qn.TokenType.parenL
+ );
+
+ ) {
+ let s = this.tokens.identifierNameAtIndex(
+ this.tokens.currentIndex() + 1
+ );
+ if (kx.includes(s)) {
+ let r = this.nameManager.claimFreeName('__jestHoist');
+ this.hoistedFunctionNames.push(r),
+ this.tokens.replaceToken(`function ${r}(){${Do}.`),
+ this.tokens.copyToken(),
+ this.tokens.copyToken(),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(Qn.TokenType.parenR),
+ this.tokens.appendCode(';}'),
+ (t = !1);
+ } else
+ t ? this.tokens.copyToken() : this.tokens.replaceToken(`${Do}.`),
+ this.tokens.copyToken(),
+ this.tokens.copyToken(),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(Qn.TokenType.parenR),
+ (t = !0);
+ }
+ return !0;
+ }
+ };
+ fc.default = hc;
+ });
+ var qh = Z((mc) => {
+ 'use strict';
+ Object.defineProperty(mc, '__esModule', {value: !0});
+ function vx(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var xx = be(),
+ gx = hn(),
+ _x = vx(gx),
+ dc = class extends _x.default {
+ constructor(t) {
+ super(), (this.tokens = t);
+ }
+ process() {
+ if (this.tokens.matches1(xx.TokenType.num)) {
+ let t = this.tokens.currentTokenCode();
+ if (t.includes('_'))
+ return this.tokens.replaceToken(t.replace(/_/g, '')), !0;
+ }
+ return !1;
+ }
+ };
+ mc.default = dc;
+ });
+ var Uh = Z((Tc) => {
+ 'use strict';
+ Object.defineProperty(Tc, '__esModule', {value: !0});
+ function bx(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Kh = be(),
+ Cx = hn(),
+ wx = bx(Cx),
+ yc = class extends wx.default {
+ constructor(t, s) {
+ super(), (this.tokens = t), (this.nameManager = s);
+ }
+ process() {
+ return this.tokens.matches2(Kh.TokenType._catch, Kh.TokenType.braceL)
+ ? (this.tokens.copyToken(),
+ this.tokens.appendCode(
+ ` (${this.nameManager.claimFreeName('e')})`
+ ),
+ !0)
+ : !1;
+ }
+ };
+ Tc.default = yc;
+ });
+ var Hh = Z((vc) => {
+ 'use strict';
+ Object.defineProperty(vc, '__esModule', {value: !0});
+ function Sx(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var jt = be(),
+ Ix = hn(),
+ Ex = Sx(Ix),
+ kc = class extends Ex.default {
+ constructor(t, s) {
+ super(), (this.tokens = t), (this.nameManager = s);
+ }
+ process() {
+ if (this.tokens.matches1(jt.TokenType.nullishCoalescing)) {
+ let i = this.tokens.currentToken();
+ return (
+ this.tokens.tokens[i.nullishStartIndex].isAsyncOperation
+ ? this.tokens.replaceTokenTrimmingLeftWhitespace(
+ ', async () => ('
+ )
+ : this.tokens.replaceTokenTrimmingLeftWhitespace(', () => ('),
+ !0
+ );
+ }
+ if (
+ this.tokens.matches1(jt.TokenType._delete) &&
+ this.tokens.tokenAtRelativeIndex(1).isOptionalChainStart
+ )
+ return this.tokens.removeInitialToken(), !0;
+ let s = this.tokens.currentToken().subscriptStartIndex;
+ if (
+ s != null &&
+ this.tokens.tokens[s].isOptionalChainStart &&
+ this.tokens.tokenAtRelativeIndex(-1).type !== jt.TokenType._super
+ ) {
+ let i = this.nameManager.claimFreeName('_'),
+ r;
+ if (
+ (s > 0 &&
+ this.tokens.matches1AtIndex(s - 1, jt.TokenType._delete) &&
+ this.isLastSubscriptInChain()
+ ? (r = `${i} => delete ${i}`)
+ : (r = `${i} => ${i}`),
+ this.tokens.tokens[s].isAsyncOperation && (r = `async ${r}`),
+ this.tokens.matches2(
+ jt.TokenType.questionDot,
+ jt.TokenType.parenL
+ ) ||
+ this.tokens.matches2(
+ jt.TokenType.questionDot,
+ jt.TokenType.lessThan
+ ))
+ )
+ this.justSkippedSuper() && this.tokens.appendCode('.bind(this)'),
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ `, 'optionalCall', ${r}`
+ );
+ else if (
+ this.tokens.matches2(
+ jt.TokenType.questionDot,
+ jt.TokenType.bracketL
+ )
+ )
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ `, 'optionalAccess', ${r}`
+ );
+ else if (this.tokens.matches1(jt.TokenType.questionDot))
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ `, 'optionalAccess', ${r}.`
+ );
+ else if (this.tokens.matches1(jt.TokenType.dot))
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ `, 'access', ${r}.`
+ );
+ else if (this.tokens.matches1(jt.TokenType.bracketL))
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ `, 'access', ${r}[`
+ );
+ else if (this.tokens.matches1(jt.TokenType.parenL))
+ this.justSkippedSuper() && this.tokens.appendCode('.bind(this)'),
+ this.tokens.replaceTokenTrimmingLeftWhitespace(
+ `, 'call', ${r}(`
+ );
+ else
+ throw new Error(
+ 'Unexpected subscript operator in optional chain.'
+ );
+ return !0;
+ }
+ return !1;
+ }
+ isLastSubscriptInChain() {
+ let t = 0;
+ for (let s = this.tokens.currentIndex() + 1; ; s++) {
+ if (s >= this.tokens.tokens.length)
+ throw new Error(
+ 'Reached the end of the code while finding the end of the access chain.'
+ );
+ if (
+ (this.tokens.tokens[s].isOptionalChainStart
+ ? t++
+ : this.tokens.tokens[s].isOptionalChainEnd && t--,
+ t < 0)
+ )
+ return !0;
+ if (t === 0 && this.tokens.tokens[s].subscriptStartIndex != null)
+ return !1;
+ }
+ }
+ justSkippedSuper() {
+ let t = 0,
+ s = this.tokens.currentIndex() - 1;
+ for (;;) {
+ if (s < 0)
+ throw new Error(
+ 'Reached the start of the code while finding the start of the access chain.'
+ );
+ if (
+ (this.tokens.tokens[s].isOptionalChainStart
+ ? t--
+ : this.tokens.tokens[s].isOptionalChainEnd && t++,
+ t < 0)
+ )
+ return !1;
+ if (t === 0 && this.tokens.tokens[s].subscriptStartIndex != null)
+ return this.tokens.tokens[s - 1].type === jt.TokenType._super;
+ s--;
+ }
+ }
+ };
+ vc.default = kc;
+ });
+ var Gh = Z((gc) => {
+ 'use strict';
+ Object.defineProperty(gc, '__esModule', {value: !0});
+ function Ax(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Wh = xt(),
+ Et = be(),
+ Px = hn(),
+ Nx = Ax(Px),
+ xc = class extends Nx.default {
+ constructor(t, s, i, r) {
+ super(),
+ (this.rootTransformer = t),
+ (this.tokens = s),
+ (this.importProcessor = i),
+ (this.options = r);
+ }
+ process() {
+ let t = this.tokens.currentIndex();
+ if (this.tokens.identifierName() === 'createReactClass') {
+ let s =
+ this.importProcessor &&
+ this.importProcessor.getIdentifierReplacement('createReactClass');
+ return (
+ s
+ ? this.tokens.replaceToken(`(0, ${s})`)
+ : this.tokens.copyToken(),
+ this.tryProcessCreateClassCall(t),
+ !0
+ );
+ }
+ if (
+ this.tokens.matches3(
+ Et.TokenType.name,
+ Et.TokenType.dot,
+ Et.TokenType.name
+ ) &&
+ this.tokens.identifierName() === 'React' &&
+ this.tokens.identifierNameAtIndex(
+ this.tokens.currentIndex() + 2
+ ) === 'createClass'
+ ) {
+ let s =
+ (this.importProcessor &&
+ this.importProcessor.getIdentifierReplacement('React')) ||
+ 'React';
+ return (
+ s
+ ? (this.tokens.replaceToken(s),
+ this.tokens.copyToken(),
+ this.tokens.copyToken())
+ : (this.tokens.copyToken(),
+ this.tokens.copyToken(),
+ this.tokens.copyToken()),
+ this.tryProcessCreateClassCall(t),
+ !0
+ );
+ }
+ return !1;
+ }
+ tryProcessCreateClassCall(t) {
+ let s = this.findDisplayName(t);
+ s &&
+ this.classNeedsDisplayName() &&
+ (this.tokens.copyExpectedToken(Et.TokenType.parenL),
+ this.tokens.copyExpectedToken(Et.TokenType.braceL),
+ this.tokens.appendCode(`displayName: '${s}',`),
+ this.rootTransformer.processBalancedCode(),
+ this.tokens.copyExpectedToken(Et.TokenType.braceR),
+ this.tokens.copyExpectedToken(Et.TokenType.parenR));
+ }
+ findDisplayName(t) {
+ return t < 2
+ ? null
+ : this.tokens.matches2AtIndex(
+ t - 2,
+ Et.TokenType.name,
+ Et.TokenType.eq
+ )
+ ? this.tokens.identifierNameAtIndex(t - 2)
+ : t >= 2 &&
+ this.tokens.tokens[t - 2].identifierRole ===
+ Wh.IdentifierRole.ObjectKey
+ ? this.tokens.identifierNameAtIndex(t - 2)
+ : this.tokens.matches2AtIndex(
+ t - 2,
+ Et.TokenType._export,
+ Et.TokenType._default
+ )
+ ? this.getDisplayNameFromFilename()
+ : null;
+ }
+ getDisplayNameFromFilename() {
+ let s = (this.options.filePath || 'unknown').split('/'),
+ i = s[s.length - 1],
+ r = i.lastIndexOf('.'),
+ a = r === -1 ? i : i.slice(0, r);
+ return a === 'index' && s[s.length - 2] ? s[s.length - 2] : a;
+ }
+ classNeedsDisplayName() {
+ let t = this.tokens.currentIndex();
+ if (!this.tokens.matches2(Et.TokenType.parenL, Et.TokenType.braceL))
+ return !1;
+ let s = t + 1,
+ i = this.tokens.tokens[s].contextId;
+ if (i == null)
+ throw new Error(
+ 'Expected non-null context ID on object open-brace.'
+ );
+ for (; t < this.tokens.tokens.length; t++) {
+ let r = this.tokens.tokens[t];
+ if (r.type === Et.TokenType.braceR && r.contextId === i) {
+ t++;
+ break;
+ }
+ if (
+ this.tokens.identifierNameAtIndex(t) === 'displayName' &&
+ this.tokens.tokens[t].identifierRole ===
+ Wh.IdentifierRole.ObjectKey &&
+ r.contextId === i
+ )
+ return !1;
+ }
+ if (t === this.tokens.tokens.length)
+ throw new Error(
+ 'Unexpected end of input when processing React class.'
+ );
+ return (
+ this.tokens.matches1AtIndex(t, Et.TokenType.parenR) ||
+ this.tokens.matches2AtIndex(
+ t,
+ Et.TokenType.comma,
+ Et.TokenType.parenR
+ )
+ );
+ }
+ };
+ gc.default = xc;
+ });
+ var Xh = Z((bc) => {
+ 'use strict';
+ Object.defineProperty(bc, '__esModule', {value: !0});
+ function Rx(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var zh = xt(),
+ Lx = hn(),
+ Ox = Rx(Lx),
+ _c = class e extends Ox.default {
+ __init() {
+ this.extractedDefaultExportName = null;
+ }
+ constructor(t, s) {
+ super(),
+ (this.tokens = t),
+ (this.filePath = s),
+ e.prototype.__init.call(this);
+ }
+ setExtractedDefaultExportName(t) {
+ this.extractedDefaultExportName = t;
+ }
+ getPrefixCode() {
+ return `
+ (function () {
+ var enterModule = require('react-hot-loader').enterModule;
+ enterModule && enterModule(module);
+ })();`
+ .replace(/\s+/g, ' ')
+ .trim();
+ }
+ getSuffixCode() {
+ let t = new Set();
+ for (let i of this.tokens.tokens)
+ !i.isType &&
+ zh.isTopLevelDeclaration.call(void 0, i) &&
+ i.identifierRole !== zh.IdentifierRole.ImportDeclaration &&
+ t.add(this.tokens.identifierNameForToken(i));
+ let s = Array.from(t).map((i) => ({
+ variableName: i,
+ uniqueLocalName: i,
+ }));
+ return (
+ this.extractedDefaultExportName &&
+ s.push({
+ variableName: this.extractedDefaultExportName,
+ uniqueLocalName: 'default',
+ }),
+ `
+;(function () {
+ var reactHotLoader = require('react-hot-loader').default;
+ var leaveModule = require('react-hot-loader').leaveModule;
+ if (!reactHotLoader) {
+ return;
+ }
+${s.map(
+ ({variableName: i, uniqueLocalName: r}) =>
+ ` reactHotLoader.register(${i}, "${r}", ${JSON.stringify(
+ this.filePath || ''
+ )});`
+).join(`
+`)}
+ leaveModule(module);
+})();`
+ );
+ }
+ process() {
+ return !1;
+ }
+ };
+ bc.default = _c;
+ });
+ var Jh = Z((Cc) => {
+ 'use strict';
+ Object.defineProperty(Cc, '__esModule', {value: !0});
+ var Yh = li(),
+ Dx = new Set([
+ 'break',
+ 'case',
+ 'catch',
+ 'class',
+ 'const',
+ 'continue',
+ 'debugger',
+ 'default',
+ 'delete',
+ 'do',
+ 'else',
+ 'export',
+ 'extends',
+ 'finally',
+ 'for',
+ 'function',
+ 'if',
+ 'import',
+ 'in',
+ 'instanceof',
+ 'new',
+ 'return',
+ 'super',
+ 'switch',
+ 'this',
+ 'throw',
+ 'try',
+ 'typeof',
+ 'var',
+ 'void',
+ 'while',
+ 'with',
+ 'yield',
+ 'enum',
+ 'implements',
+ 'interface',
+ 'let',
+ 'package',
+ 'private',
+ 'protected',
+ 'public',
+ 'static',
+ 'await',
+ 'false',
+ 'null',
+ 'true',
+ ]);
+ function Mx(e) {
+ if (e.length === 0 || !Yh.IS_IDENTIFIER_START[e.charCodeAt(0)]) return !1;
+ for (let t = 1; t < e.length; t++)
+ if (!Yh.IS_IDENTIFIER_CHAR[e.charCodeAt(t)]) return !1;
+ return !Dx.has(e);
+ }
+ Cc.default = Mx;
+ });
+ var ef = Z((Sc) => {
+ 'use strict';
+ Object.defineProperty(Sc, '__esModule', {value: !0});
+ function Zh(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var $e = be(),
+ Fx = Jh(),
+ Qh = Zh(Fx),
+ Bx = hn(),
+ Vx = Zh(Bx),
+ wc = class extends Vx.default {
+ constructor(t, s, i) {
+ super(),
+ (this.rootTransformer = t),
+ (this.tokens = s),
+ (this.isImportsTransformEnabled = i);
+ }
+ process() {
+ return this.rootTransformer.processPossibleArrowParamEnd() ||
+ this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||
+ this.rootTransformer.processPossibleTypeRange()
+ ? !0
+ : this.tokens.matches1($e.TokenType._public) ||
+ this.tokens.matches1($e.TokenType._protected) ||
+ this.tokens.matches1($e.TokenType._private) ||
+ this.tokens.matches1($e.TokenType._abstract) ||
+ this.tokens.matches1($e.TokenType._readonly) ||
+ this.tokens.matches1($e.TokenType._override) ||
+ this.tokens.matches1($e.TokenType.nonNullAssertion)
+ ? (this.tokens.removeInitialToken(), !0)
+ : this.tokens.matches1($e.TokenType._enum) ||
+ this.tokens.matches2($e.TokenType._const, $e.TokenType._enum)
+ ? (this.processEnum(), !0)
+ : this.tokens.matches2($e.TokenType._export, $e.TokenType._enum) ||
+ this.tokens.matches3(
+ $e.TokenType._export,
+ $e.TokenType._const,
+ $e.TokenType._enum
+ )
+ ? (this.processEnum(!0), !0)
+ : !1;
+ }
+ processEnum(t = !1) {
+ for (
+ this.tokens.removeInitialToken();
+ this.tokens.matches1($e.TokenType._const) ||
+ this.tokens.matches1($e.TokenType._enum);
+
+ )
+ this.tokens.removeToken();
+ let s = this.tokens.identifierName();
+ this.tokens.removeToken(),
+ t &&
+ !this.isImportsTransformEnabled &&
+ this.tokens.appendCode('export '),
+ this.tokens.appendCode(`var ${s}; (function (${s})`),
+ this.tokens.copyExpectedToken($e.TokenType.braceL),
+ this.processEnumBody(s),
+ this.tokens.copyExpectedToken($e.TokenType.braceR),
+ t && this.isImportsTransformEnabled
+ ? this.tokens.appendCode(`)(${s} || (exports.${s} = ${s} = {}));`)
+ : this.tokens.appendCode(`)(${s} || (${s} = {}));`);
+ }
+ processEnumBody(t) {
+ let s = null;
+ for (; !this.tokens.matches1($e.TokenType.braceR); ) {
+ let {nameStringCode: i, variableName: r} = this.extractEnumKeyInfo(
+ this.tokens.currentToken()
+ );
+ this.tokens.removeInitialToken(),
+ this.tokens.matches3(
+ $e.TokenType.eq,
+ $e.TokenType.string,
+ $e.TokenType.comma
+ ) ||
+ this.tokens.matches3(
+ $e.TokenType.eq,
+ $e.TokenType.string,
+ $e.TokenType.braceR
+ )
+ ? this.processStringLiteralEnumMember(t, i, r)
+ : this.tokens.matches1($e.TokenType.eq)
+ ? this.processExplicitValueEnumMember(t, i, r)
+ : this.processImplicitValueEnumMember(t, i, r, s),
+ this.tokens.matches1($e.TokenType.comma) &&
+ this.tokens.removeToken(),
+ r != null ? (s = r) : (s = `${t}[${i}]`);
+ }
+ }
+ extractEnumKeyInfo(t) {
+ if (t.type === $e.TokenType.name) {
+ let s = this.tokens.identifierNameForToken(t);
+ return {
+ nameStringCode: `"${s}"`,
+ variableName: Qh.default.call(void 0, s) ? s : null,
+ };
+ } else if (t.type === $e.TokenType.string) {
+ let s = this.tokens.stringValueForToken(t);
+ return {
+ nameStringCode: this.tokens.code.slice(t.start, t.end),
+ variableName: Qh.default.call(void 0, s) ? s : null,
+ };
+ } else
+ throw new Error(
+ 'Expected name or string at beginning of enum element.'
+ );
+ }
+ processStringLiteralEnumMember(t, s, i) {
+ i != null
+ ? (this.tokens.appendCode(`const ${i}`),
+ this.tokens.copyToken(),
+ this.tokens.copyToken(),
+ this.tokens.appendCode(`; ${t}[${s}] = ${i};`))
+ : (this.tokens.appendCode(`${t}[${s}]`),
+ this.tokens.copyToken(),
+ this.tokens.copyToken(),
+ this.tokens.appendCode(';'));
+ }
+ processExplicitValueEnumMember(t, s, i) {
+ let r = this.tokens.currentToken().rhsEndIndex;
+ if (r == null)
+ throw new Error('Expected rhsEndIndex on enum assign.');
+ if (i != null) {
+ for (
+ this.tokens.appendCode(`const ${i}`), this.tokens.copyToken();
+ this.tokens.currentIndex() < r;
+
+ )
+ this.rootTransformer.processToken();
+ this.tokens.appendCode(`; ${t}[${t}[${s}] = ${i}] = ${s};`);
+ } else {
+ for (
+ this.tokens.appendCode(`${t}[${t}[${s}]`),
+ this.tokens.copyToken();
+ this.tokens.currentIndex() < r;
+
+ )
+ this.rootTransformer.processToken();
+ this.tokens.appendCode(`] = ${s};`);
+ }
+ }
+ processImplicitValueEnumMember(t, s, i, r) {
+ let a = r != null ? `${r} + 1` : '0';
+ i != null && (this.tokens.appendCode(`const ${i} = ${a}; `), (a = i)),
+ this.tokens.appendCode(`${t}[${t}[${s}] = ${a}] = ${s};`);
+ }
+ };
+ Sc.default = wc;
+ });
+ var tf = Z((Ec) => {
+ 'use strict';
+ Object.defineProperty(Ec, '__esModule', {value: !0});
+ function yn(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var jx = It(),
+ lt = be(),
+ $x = Ah(),
+ qx = yn($x),
+ Kx = Oh(),
+ Ux = yn(Kx),
+ Hx = Bh(),
+ Wx = yn(Hx),
+ Gx = jh(),
+ zx = yn(Gx),
+ Xx = $h(),
+ Yx = yn(Xx),
+ Jx = Da(),
+ Qx = yn(Jx),
+ Zx = qh(),
+ eg = yn(Zx),
+ tg = Uh(),
+ ng = yn(tg),
+ sg = Hh(),
+ ig = yn(sg),
+ rg = Gh(),
+ og = yn(rg),
+ ag = Xh(),
+ lg = yn(ag),
+ cg = ef(),
+ ug = yn(cg),
+ Ic = class e {
+ __init() {
+ this.transformers = [];
+ }
+ __init2() {
+ this.generatedVariables = [];
+ }
+ constructor(t, s, i, r) {
+ e.prototype.__init.call(this),
+ e.prototype.__init2.call(this),
+ (this.nameManager = t.nameManager),
+ (this.helperManager = t.helperManager);
+ let {tokenProcessor: a, importProcessor: u} = t;
+ (this.tokens = a),
+ (this.isImportsTransformEnabled = s.includes('imports')),
+ (this.isReactHotLoaderTransformEnabled =
+ s.includes('react-hot-loader')),
+ (this.disableESTransforms = !!r.disableESTransforms),
+ r.disableESTransforms ||
+ (this.transformers.push(new ig.default(a, this.nameManager)),
+ this.transformers.push(new eg.default(a)),
+ this.transformers.push(new ng.default(a, this.nameManager))),
+ s.includes('jsx') &&
+ (r.jsxRuntime !== 'preserve' &&
+ this.transformers.push(
+ new Qx.default(this, a, u, this.nameManager, r)
+ ),
+ this.transformers.push(new og.default(this, a, u, r)));
+ let d = null;
+ if (s.includes('react-hot-loader')) {
+ if (!r.filePath)
+ throw new Error(
+ 'filePath is required when using the react-hot-loader transform.'
+ );
+ (d = new lg.default(a, r.filePath)), this.transformers.push(d);
+ }
+ if (s.includes('imports')) {
+ if (u === null)
+ throw new Error(
+ 'Expected non-null importProcessor with imports transform enabled.'
+ );
+ this.transformers.push(
+ new Ux.default(
+ this,
+ a,
+ u,
+ this.nameManager,
+ this.helperManager,
+ d,
+ i,
+ !!r.enableLegacyTypeScriptModuleInterop,
+ s.includes('typescript'),
+ !!r.preserveDynamicImport
+ )
+ );
+ } else
+ this.transformers.push(
+ new Wx.default(
+ a,
+ this.nameManager,
+ this.helperManager,
+ d,
+ s.includes('typescript'),
+ r
+ )
+ );
+ s.includes('flow') &&
+ this.transformers.push(
+ new zx.default(this, a, s.includes('imports'))
+ ),
+ s.includes('typescript') &&
+ this.transformers.push(
+ new ug.default(this, a, s.includes('imports'))
+ ),
+ s.includes('jest') &&
+ this.transformers.push(
+ new Yx.default(this, a, this.nameManager, u)
+ );
+ }
+ transform() {
+ this.tokens.reset(), this.processBalancedCode();
+ let s = this.isImportsTransformEnabled ? '"use strict";' : '';
+ for (let u of this.transformers) s += u.getPrefixCode();
+ (s += this.helperManager.emitHelpers()),
+ (s += this.generatedVariables.map((u) => ` var ${u};`).join(''));
+ for (let u of this.transformers) s += u.getHoistedCode();
+ let i = '';
+ for (let u of this.transformers) i += u.getSuffixCode();
+ let r = this.tokens.finish(),
+ {code: a} = r;
+ if (a.startsWith('#!')) {
+ let u = a.indexOf(`
+`);
+ return (
+ u === -1 &&
+ ((u = a.length),
+ (a += `
+`)),
+ {
+ code: a.slice(0, u + 1) + s + a.slice(u + 1) + i,
+ mappings: this.shiftMappings(r.mappings, s.length),
+ }
+ );
+ } else
+ return {
+ code: s + a + i,
+ mappings: this.shiftMappings(r.mappings, s.length),
+ };
+ }
+ processBalancedCode() {
+ let t = 0,
+ s = 0;
+ for (; !this.tokens.isAtEnd(); ) {
+ if (
+ this.tokens.matches1(lt.TokenType.braceL) ||
+ this.tokens.matches1(lt.TokenType.dollarBraceL)
+ )
+ t++;
+ else if (this.tokens.matches1(lt.TokenType.braceR)) {
+ if (t === 0) return;
+ t--;
+ }
+ if (this.tokens.matches1(lt.TokenType.parenL)) s++;
+ else if (this.tokens.matches1(lt.TokenType.parenR)) {
+ if (s === 0) return;
+ s--;
+ }
+ this.processToken();
+ }
+ }
+ processToken() {
+ if (this.tokens.matches1(lt.TokenType._class)) {
+ this.processClass();
+ return;
+ }
+ for (let t of this.transformers) if (t.process()) return;
+ this.tokens.copyToken();
+ }
+ processNamedClass() {
+ if (!this.tokens.matches2(lt.TokenType._class, lt.TokenType.name))
+ throw new Error('Expected identifier for exported class name.');
+ let t = this.tokens.identifierNameAtIndex(
+ this.tokens.currentIndex() + 1
+ );
+ return this.processClass(), t;
+ }
+ processClass() {
+ let t = qx.default.call(
+ void 0,
+ this,
+ this.tokens,
+ this.nameManager,
+ this.disableESTransforms
+ ),
+ s =
+ (t.headerInfo.isExpression || !t.headerInfo.className) &&
+ t.staticInitializerNames.length +
+ t.instanceInitializerNames.length >
+ 0,
+ i = t.headerInfo.className;
+ s &&
+ ((i = this.nameManager.claimFreeName('_class')),
+ this.generatedVariables.push(i),
+ this.tokens.appendCode(` (${i} =`));
+ let a = this.tokens.currentToken().contextId;
+ if (a == null)
+ throw new Error('Expected class to have a context ID.');
+ for (
+ this.tokens.copyExpectedToken(lt.TokenType._class);
+ !this.tokens.matchesContextIdAndLabel(lt.TokenType.braceL, a);
+
+ )
+ this.processToken();
+ this.processClassBody(t, i);
+ let u = t.staticInitializerNames.map((d) => `${i}.${d}()`);
+ s
+ ? this.tokens.appendCode(
+ `, ${u.map((d) => `${d}, `).join('')}${i})`
+ )
+ : t.staticInitializerNames.length > 0 &&
+ this.tokens.appendCode(` ${u.map((d) => `${d};`).join(' ')}`);
+ }
+ processClassBody(t, s) {
+ let {
+ headerInfo: i,
+ constructorInsertPos: r,
+ constructorInitializerStatements: a,
+ fields: u,
+ instanceInitializerNames: d,
+ rangesToRemove: y,
+ } = t,
+ g = 0,
+ L = 0,
+ p = this.tokens.currentToken().contextId;
+ if (p == null)
+ throw new Error('Expected non-null context ID on class.');
+ this.tokens.copyExpectedToken(lt.TokenType.braceL),
+ this.isReactHotLoaderTransformEnabled &&
+ this.tokens.appendCode(
+ '__reactstandin__regenerateByEval(key, code) {this[key] = eval(code);}'
+ );
+ let h = a.length + d.length > 0;
+ if (r === null && h) {
+ let T = this.makeConstructorInitCode(a, d, s);
+ if (i.hasSuperclass) {
+ let x = this.nameManager.claimFreeName('args');
+ this.tokens.appendCode(
+ `constructor(...${x}) { super(...${x}); ${T}; }`
+ );
+ } else this.tokens.appendCode(`constructor() { ${T}; }`);
+ }
+ for (
+ ;
+ !this.tokens.matchesContextIdAndLabel(lt.TokenType.braceR, p);
+
+ )
+ if (g < u.length && this.tokens.currentIndex() === u[g].start) {
+ let T = !1;
+ for (
+ this.tokens.matches1(lt.TokenType.bracketL)
+ ? this.tokens.copyTokenWithPrefix(
+ `${u[g].initializerName}() {this`
+ )
+ : this.tokens.matches1(lt.TokenType.string) ||
+ this.tokens.matches1(lt.TokenType.num)
+ ? (this.tokens.copyTokenWithPrefix(
+ `${u[g].initializerName}() {this[`
+ ),
+ (T = !0))
+ : this.tokens.copyTokenWithPrefix(
+ `${u[g].initializerName}() {this.`
+ );
+ this.tokens.currentIndex() < u[g].end;
+
+ )
+ T &&
+ this.tokens.currentIndex() === u[g].equalsIndex &&
+ this.tokens.appendCode(']'),
+ this.processToken();
+ this.tokens.appendCode('}'), g++;
+ } else if (
+ L < y.length &&
+ this.tokens.currentIndex() >= y[L].start
+ ) {
+ for (
+ this.tokens.currentIndex() < y[L].end &&
+ this.tokens.removeInitialToken();
+ this.tokens.currentIndex() < y[L].end;
+
+ )
+ this.tokens.removeToken();
+ L++;
+ } else
+ this.tokens.currentIndex() === r
+ ? (this.tokens.copyToken(),
+ h &&
+ this.tokens.appendCode(
+ `;${this.makeConstructorInitCode(a, d, s)};`
+ ),
+ this.processToken())
+ : this.processToken();
+ this.tokens.copyExpectedToken(lt.TokenType.braceR);
+ }
+ makeConstructorInitCode(t, s, i) {
+ return [...t, ...s.map((r) => `${i}.prototype.${r}.call(this)`)].join(
+ ';'
+ );
+ }
+ processPossibleArrowParamEnd() {
+ if (
+ this.tokens.matches2(lt.TokenType.parenR, lt.TokenType.colon) &&
+ this.tokens.tokenAtRelativeIndex(1).isType
+ ) {
+ let t = this.tokens.currentIndex() + 1;
+ for (; this.tokens.tokens[t].isType; ) t++;
+ if (this.tokens.matches1AtIndex(t, lt.TokenType.arrow)) {
+ for (
+ this.tokens.removeInitialToken();
+ this.tokens.currentIndex() < t;
+
+ )
+ this.tokens.removeToken();
+ return this.tokens.replaceTokenTrimmingLeftWhitespace(') =>'), !0;
+ }
+ }
+ return !1;
+ }
+ processPossibleAsyncArrowWithTypeParams() {
+ if (
+ !this.tokens.matchesContextual(jx.ContextualKeyword._async) &&
+ !this.tokens.matches1(lt.TokenType._async)
+ )
+ return !1;
+ let t = this.tokens.tokenAtRelativeIndex(1);
+ if (t.type !== lt.TokenType.lessThan || !t.isType) return !1;
+ let s = this.tokens.currentIndex() + 1;
+ for (; this.tokens.tokens[s].isType; ) s++;
+ if (this.tokens.matches1AtIndex(s, lt.TokenType.parenL)) {
+ for (
+ this.tokens.replaceToken('async ('),
+ this.tokens.removeInitialToken();
+ this.tokens.currentIndex() < s;
+
+ )
+ this.tokens.removeToken();
+ return (
+ this.tokens.removeToken(),
+ this.processBalancedCode(),
+ this.processToken(),
+ !0
+ );
+ }
+ return !1;
+ }
+ processPossibleTypeRange() {
+ if (this.tokens.currentToken().isType) {
+ for (
+ this.tokens.removeInitialToken();
+ this.tokens.currentToken().isType;
+
+ )
+ this.tokens.removeToken();
+ return !0;
+ }
+ return !1;
+ }
+ shiftMappings(t, s) {
+ for (let i = 0; i < t.length; i++) {
+ let r = t[i];
+ r !== void 0 && (t[i] = r + s);
+ }
+ return t;
+ }
+ };
+ Ec.default = Ic;
+ });
+ var rf = Z((hr) => {
+ 'use strict';
+ hr.__esModule = !0;
+ hr.LinesAndColumns = void 0;
+ var Mo = `
+`,
+ nf = '\r',
+ sf = (function () {
+ function e(t) {
+ this.string = t;
+ for (var s = [0], i = 0; i < t.length; )
+ switch (t[i]) {
+ case Mo:
+ (i += Mo.length), s.push(i);
+ break;
+ case nf:
+ (i += nf.length), t[i] === Mo && (i += Mo.length), s.push(i);
+ break;
+ default:
+ i++;
+ break;
+ }
+ this.offsets = s;
+ }
+ return (
+ (e.prototype.locationForIndex = function (t) {
+ if (t < 0 || t > this.string.length) return null;
+ for (var s = 0, i = this.offsets; i[s + 1] <= t; ) s++;
+ var r = t - i[s];
+ return {line: s, column: r};
+ }),
+ (e.prototype.indexForLocation = function (t) {
+ var s = t.line,
+ i = t.column;
+ return s < 0 ||
+ s >= this.offsets.length ||
+ i < 0 ||
+ i > this.lengthOfLine(s)
+ ? null
+ : this.offsets[s] + i;
+ }),
+ (e.prototype.lengthOfLine = function (t) {
+ var s = this.offsets[t],
+ i =
+ t === this.offsets.length - 1
+ ? this.string.length
+ : this.offsets[t + 1];
+ return i - s;
+ }),
+ e
+ );
+ })();
+ hr.LinesAndColumns = sf;
+ hr.default = sf;
+ });
+ var of = Z((Ac) => {
+ 'use strict';
+ Object.defineProperty(Ac, '__esModule', {value: !0});
+ function pg(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var hg = rf(),
+ fg = pg(hg),
+ dg = be();
+ function mg(e, t) {
+ if (t.length === 0) return '';
+ let s = Object.keys(t[0]).filter(
+ (h) =>
+ h !== 'type' &&
+ h !== 'value' &&
+ h !== 'start' &&
+ h !== 'end' &&
+ h !== 'loc'
+ ),
+ i = Object.keys(t[0].type).filter(
+ (h) => h !== 'label' && h !== 'keyword'
+ ),
+ r = ['Location', 'Label', 'Raw', ...s, ...i],
+ a = new fg.default(e),
+ u = [r, ...t.map(y)],
+ d = r.map(() => 0);
+ for (let h of u)
+ for (let T = 0; T < h.length; T++) d[T] = Math.max(d[T], h[T].length);
+ return u.map((h) => h.map((T, x) => T.padEnd(d[x])).join(' ')).join(`
+`);
+ function y(h) {
+ let T = e.slice(h.start, h.end);
+ return [
+ L(h.start, h.end),
+ dg.formatTokenType.call(void 0, h.type),
+ yg(String(T), 14),
+ ...s.map((x) => g(h[x], x)),
+ ...i.map((x) => g(h.type[x], x)),
+ ];
+ }
+ function g(h, T) {
+ return h === !0 ? T : h === !1 || h === null ? '' : String(h);
+ }
+ function L(h, T) {
+ return `${p(h)}-${p(T)}`;
+ }
+ function p(h) {
+ let T = a.locationForIndex(h);
+ return T ? `${T.line + 1}:${T.column + 1}` : 'Unknown';
+ }
+ }
+ Ac.default = mg;
+ function yg(e, t) {
+ return e.length > t ? `${e.slice(0, t - 3)}...` : e;
+ }
+ });
+ var af = Z((Pc) => {
+ 'use strict';
+ Object.defineProperty(Pc, '__esModule', {value: !0});
+ function Tg(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var Gt = be(),
+ kg = Wi(),
+ vg = Tg(kg);
+ function xg(e) {
+ let t = new Set();
+ for (let s = 0; s < e.tokens.length; s++)
+ e.matches1AtIndex(s, Gt.TokenType._import) &&
+ !e.matches3AtIndex(
+ s,
+ Gt.TokenType._import,
+ Gt.TokenType.name,
+ Gt.TokenType.eq
+ ) &&
+ gg(e, s, t);
+ return t;
+ }
+ Pc.default = xg;
+ function gg(e, t, s) {
+ t++,
+ !e.matches1AtIndex(t, Gt.TokenType.parenL) &&
+ (e.matches1AtIndex(t, Gt.TokenType.name) &&
+ (s.add(e.identifierNameAtIndex(t)),
+ t++,
+ e.matches1AtIndex(t, Gt.TokenType.comma) && t++),
+ e.matches1AtIndex(t, Gt.TokenType.star) &&
+ ((t += 2), s.add(e.identifierNameAtIndex(t)), t++),
+ e.matches1AtIndex(t, Gt.TokenType.braceL) && (t++, _g(e, t, s)));
+ }
+ function _g(e, t, s) {
+ for (;;) {
+ if (e.matches1AtIndex(t, Gt.TokenType.braceR)) return;
+ let i = vg.default.call(void 0, e, t);
+ if (
+ ((t = i.endIndex),
+ i.isType || s.add(i.rightName),
+ e.matches2AtIndex(t, Gt.TokenType.comma, Gt.TokenType.braceR))
+ )
+ return;
+ if (e.matches1AtIndex(t, Gt.TokenType.braceR)) return;
+ if (e.matches1AtIndex(t, Gt.TokenType.comma)) t++;
+ else
+ throw new Error(`Unexpected token: ${JSON.stringify(e.tokens[t])}`);
+ }
+ }
+ });
+ var uf = Z((fr) => {
+ 'use strict';
+ Object.defineProperty(fr, '__esModule', {value: !0});
+ function vs(e) {
+ return e && e.__esModule ? e : {default: e};
+ }
+ var bg = N1(),
+ Cg = vs(bg),
+ wg = $1(),
+ Sg = vs(wg),
+ Ig = q1(),
+ Eg = H1(),
+ lf = vs(Eg),
+ Ag = G1(),
+ Pg = vs(Ag),
+ Ng = pp(),
+ Rg = Ul(),
+ Lg = Sh(),
+ Og = vs(Lg),
+ Dg = tf(),
+ Mg = vs(Dg),
+ Fg = of(),
+ Bg = vs(Fg),
+ Vg = af(),
+ jg = vs(Vg);
+ function $g() {
+ return '3.32.0';
+ }
+ fr.getVersion = $g;
+ function qg(e, t) {
+ Ng.validateOptions.call(void 0, t);
+ try {
+ let s = cf(e, t),
+ r = new Mg.default(
+ s,
+ t.transforms,
+ !!t.enableLegacyBabel5ModuleInterop,
+ t
+ ).transform(),
+ a = {code: r.code};
+ if (t.sourceMapOptions) {
+ if (!t.filePath)
+ throw new Error(
+ 'filePath must be specified when generating a source map.'
+ );
+ a = {
+ ...a,
+ sourceMap: Sg.default.call(
+ void 0,
+ r,
+ t.filePath,
+ t.sourceMapOptions,
+ e,
+ s.tokenProcessor.tokens
+ ),
+ };
+ }
+ return a;
+ } catch (s) {
+ throw (
+ (t.filePath &&
+ (s.message = `Error transforming ${t.filePath}: ${s.message}`),
+ s)
+ );
+ }
+ }
+ fr.transform = qg;
+ function Kg(e, t) {
+ let s = cf(e, t).tokenProcessor.tokens;
+ return Bg.default.call(void 0, e, s);
+ }
+ fr.getFormattedTokens = Kg;
+ function cf(e, t) {
+ let s = t.transforms.includes('jsx'),
+ i = t.transforms.includes('typescript'),
+ r = t.transforms.includes('flow'),
+ a = t.disableESTransforms === !0,
+ u = Rg.parse.call(void 0, e, s, i, r),
+ d = u.tokens,
+ y = u.scopes,
+ g = new Pg.default(e, d),
+ L = new Ig.HelperManager(g),
+ p = new Og.default(e, d, r, a, L),
+ h = !!t.enableLegacyTypeScriptModuleInterop,
+ T = null;
+ return (
+ t.transforms.includes('imports')
+ ? ((T = new Cg.default(
+ g,
+ p,
+ h,
+ t,
+ t.transforms.includes('typescript'),
+ L
+ )),
+ T.preprocessTokens(),
+ lf.default.call(void 0, p, y, T.getGlobalNames()),
+ t.transforms.includes('typescript') && T.pruneTypeOnlyImports())
+ : t.transforms.includes('typescript') &&
+ lf.default.call(void 0, p, y, jg.default.call(void 0, p)),
+ {
+ tokenProcessor: p,
+ scopes: y,
+ nameManager: g,
+ importProcessor: T,
+ helperManager: L,
+ }
+ );
+ }
+ });
+ var hf = Z((Fo, pf) => {
+ (function (e, t) {
+ typeof Fo == 'object' && typeof pf < 'u'
+ ? t(Fo)
+ : typeof define == 'function' && define.amd
+ ? define(['exports'], t)
+ : ((e = typeof globalThis < 'u' ? globalThis : e || self),
+ t((e.acorn = {})));
+ })(Fo, function (e) {
+ 'use strict';
+ var t = [
+ 509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166,
+ 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2,
+ 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9,
+ 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11,
+ 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8,
+ 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13,
+ 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5,
+ 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3,
+ 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2,
+ 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4,
+ 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0,
+ 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0,
+ 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4,
+ 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15,
+ 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10,
+ 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759,
+ 9, 787719, 239,
+ ],
+ s = [
+ 0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4,
+ 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35,
+ 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2,
+ 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2,
+ 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25,
+ 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27,
+ 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39,
+ 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47,
+ 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0,
+ 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6,
+ 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4,
+ 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45,
+ 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0,
+ 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2,
+ 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0,
+ 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29,
+ 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0,
+ 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071,
+ 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29,
+ 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12,
+ 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290,
+ 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991,
+ 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3,
+ 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30,
+ 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5,
+ 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3,
+ 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2,
+ 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2,
+ 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2,
+ 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153,
+ 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191,
+ ],
+ i =
+ '\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0897-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\u30FB\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F\uFF65',
+ r =
+ '\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC',
+ a = {
+ 3: 'abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile',
+ 5: 'class enum extends super const export import',
+ 6: 'enum',
+ strict:
+ 'implements interface let package private protected public static yield',
+ strictBind: 'eval arguments',
+ },
+ u =
+ 'break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this',
+ d = {
+ 5: u,
+ '5module': u + ' export import',
+ 6: u + ' const class extends export import super',
+ },
+ y = /^in(stanceof)?$/,
+ g = new RegExp('[' + r + ']'),
+ L = new RegExp('[' + r + i + ']');
+ function p(n, o) {
+ for (var l = 65536, f = 0; f < o.length; f += 2) {
+ if (((l += o[f]), l > n)) return !1;
+ if (((l += o[f + 1]), l >= n)) return !0;
+ }
+ return !1;
+ }
+ function h(n, o) {
+ return n < 65
+ ? n === 36
+ : n < 91
+ ? !0
+ : n < 97
+ ? n === 95
+ : n < 123
+ ? !0
+ : n <= 65535
+ ? n >= 170 && g.test(String.fromCharCode(n))
+ : o === !1
+ ? !1
+ : p(n, s);
+ }
+ function T(n, o) {
+ return n < 48
+ ? n === 36
+ : n < 58
+ ? !0
+ : n < 65
+ ? !1
+ : n < 91
+ ? !0
+ : n < 97
+ ? n === 95
+ : n < 123
+ ? !0
+ : n <= 65535
+ ? n >= 170 && L.test(String.fromCharCode(n))
+ : o === !1
+ ? !1
+ : p(n, s) || p(n, t);
+ }
+ var x = function (o, l) {
+ l === void 0 && (l = {}),
+ (this.label = o),
+ (this.keyword = l.keyword),
+ (this.beforeExpr = !!l.beforeExpr),
+ (this.startsExpr = !!l.startsExpr),
+ (this.isLoop = !!l.isLoop),
+ (this.isAssign = !!l.isAssign),
+ (this.prefix = !!l.prefix),
+ (this.postfix = !!l.postfix),
+ (this.binop = l.binop || null),
+ (this.updateContext = null);
+ };
+ function w(n, o) {
+ return new x(n, {beforeExpr: !0, binop: o});
+ }
+ var S = {beforeExpr: !0},
+ A = {startsExpr: !0},
+ U = {};
+ function M(n, o) {
+ return o === void 0 && (o = {}), (o.keyword = n), (U[n] = new x(n, o));
+ }
+ var c = {
+ num: new x('num', A),
+ regexp: new x('regexp', A),
+ string: new x('string', A),
+ name: new x('name', A),
+ privateId: new x('privateId', A),
+ eof: new x('eof'),
+ bracketL: new x('[', {beforeExpr: !0, startsExpr: !0}),
+ bracketR: new x(']'),
+ braceL: new x('{', {beforeExpr: !0, startsExpr: !0}),
+ braceR: new x('}'),
+ parenL: new x('(', {beforeExpr: !0, startsExpr: !0}),
+ parenR: new x(')'),
+ comma: new x(',', S),
+ semi: new x(';', S),
+ colon: new x(':', S),
+ dot: new x('.'),
+ question: new x('?', S),
+ questionDot: new x('?.'),
+ arrow: new x('=>', S),
+ template: new x('template'),
+ invalidTemplate: new x('invalidTemplate'),
+ ellipsis: new x('...', S),
+ backQuote: new x('`', A),
+ dollarBraceL: new x('${', {beforeExpr: !0, startsExpr: !0}),
+ eq: new x('=', {beforeExpr: !0, isAssign: !0}),
+ assign: new x('_=', {beforeExpr: !0, isAssign: !0}),
+ incDec: new x('++/--', {prefix: !0, postfix: !0, startsExpr: !0}),
+ prefix: new x('!/~', {beforeExpr: !0, prefix: !0, startsExpr: !0}),
+ logicalOR: w('||', 1),
+ logicalAND: w('&&', 2),
+ bitwiseOR: w('|', 3),
+ bitwiseXOR: w('^', 4),
+ bitwiseAND: w('&', 5),
+ equality: w('==/!=/===/!==', 6),
+ relational: w('>/<=/>=', 7),
+ bitShift: w('<>>/>>>', 8),
+ plusMin: new x('+/-', {
+ beforeExpr: !0,
+ binop: 9,
+ prefix: !0,
+ startsExpr: !0,
+ }),
+ modulo: w('%', 10),
+ star: w('*', 10),
+ slash: w('/', 10),
+ starstar: new x('**', {beforeExpr: !0}),
+ coalesce: w('??', 1),
+ _break: M('break'),
+ _case: M('case', S),
+ _catch: M('catch'),
+ _continue: M('continue'),
+ _debugger: M('debugger'),
+ _default: M('default', S),
+ _do: M('do', {isLoop: !0, beforeExpr: !0}),
+ _else: M('else', S),
+ _finally: M('finally'),
+ _for: M('for', {isLoop: !0}),
+ _function: M('function', A),
+ _if: M('if'),
+ _return: M('return', S),
+ _switch: M('switch'),
+ _throw: M('throw', S),
+ _try: M('try'),
+ _var: M('var'),
+ _const: M('const'),
+ _while: M('while', {isLoop: !0}),
+ _with: M('with'),
+ _new: M('new', {beforeExpr: !0, startsExpr: !0}),
+ _this: M('this', A),
+ _super: M('super', A),
+ _class: M('class', A),
+ _extends: M('extends', S),
+ _export: M('export'),
+ _import: M('import', A),
+ _null: M('null', A),
+ _true: M('true', A),
+ _false: M('false', A),
+ _in: M('in', {beforeExpr: !0, binop: 7}),
+ _instanceof: M('instanceof', {beforeExpr: !0, binop: 7}),
+ _typeof: M('typeof', {beforeExpr: !0, prefix: !0, startsExpr: !0}),
+ _void: M('void', {beforeExpr: !0, prefix: !0, startsExpr: !0}),
+ _delete: M('delete', {beforeExpr: !0, prefix: !0, startsExpr: !0}),
+ },
+ R = /\r\n?|\n|\u2028|\u2029/,
+ W = new RegExp(R.source, 'g');
+ function X(n) {
+ return n === 10 || n === 13 || n === 8232 || n === 8233;
+ }
+ function ie(n, o, l) {
+ l === void 0 && (l = n.length);
+ for (var f = o; f < l; f++) {
+ var m = n.charCodeAt(f);
+ if (X(m))
+ return f < l - 1 && m === 13 && n.charCodeAt(f + 1) === 10
+ ? f + 2
+ : f + 1;
+ }
+ return -1;
+ }
+ var pe = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/,
+ ae = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,
+ He = Object.prototype,
+ qe = He.hasOwnProperty,
+ Bt = He.toString,
+ mt =
+ Object.hasOwn ||
+ function (n, o) {
+ return qe.call(n, o);
+ },
+ kt =
+ Array.isArray ||
+ function (n) {
+ return Bt.call(n) === '[object Array]';
+ },
+ At = Object.create(null);
+ function tt(n) {
+ return (
+ At[n] || (At[n] = new RegExp('^(?:' + n.replace(/ /g, '|') + ')$'))
+ );
+ }
+ function nt(n) {
+ return n <= 65535
+ ? String.fromCharCode(n)
+ : ((n -= 65536),
+ String.fromCharCode((n >> 10) + 55296, (n & 1023) + 56320));
+ }
+ var _t =
+ /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/,
+ ct = function (o, l) {
+ (this.line = o), (this.column = l);
+ };
+ ct.prototype.offset = function (o) {
+ return new ct(this.line, this.column + o);
+ };
+ var wt = function (o, l, f) {
+ (this.start = l),
+ (this.end = f),
+ o.sourceFile !== null && (this.source = o.sourceFile);
+ };
+ function $t(n, o) {
+ for (var l = 1, f = 0; ; ) {
+ var m = ie(n, f, o);
+ if (m < 0) return new ct(l, o - f);
+ ++l, (f = m);
+ }
+ }
+ var Pt = {
+ ecmaVersion: null,
+ sourceType: 'script',
+ onInsertedSemicolon: null,
+ onTrailingComma: null,
+ allowReserved: null,
+ allowReturnOutsideFunction: !1,
+ allowImportExportEverywhere: !1,
+ allowAwaitOutsideFunction: null,
+ allowSuperOutsideMethod: null,
+ allowHashBang: !1,
+ checkPrivateFields: !0,
+ locations: !1,
+ onToken: null,
+ onComment: null,
+ ranges: !1,
+ program: null,
+ sourceFile: null,
+ directSourceFile: null,
+ preserveParens: !1,
+ },
+ qt = !1;
+ function Tn(n) {
+ var o = {};
+ for (var l in Pt) o[l] = n && mt(n, l) ? n[l] : Pt[l];
+ if (
+ (o.ecmaVersion === 'latest'
+ ? (o.ecmaVersion = 1e8)
+ : o.ecmaVersion == null
+ ? (!qt &&
+ typeof console == 'object' &&
+ console.warn &&
+ ((qt = !0),
+ console.warn(`Since Acorn 8.0.0, options.ecmaVersion is required.
+Defaulting to 2020, but this will stop working in the future.`)),
+ (o.ecmaVersion = 11))
+ : o.ecmaVersion >= 2015 && (o.ecmaVersion -= 2009),
+ o.allowReserved == null && (o.allowReserved = o.ecmaVersion < 5),
+ (!n || n.allowHashBang == null) &&
+ (o.allowHashBang = o.ecmaVersion >= 14),
+ kt(o.onToken))
+ ) {
+ var f = o.onToken;
+ o.onToken = function (m) {
+ return f.push(m);
+ };
+ }
+ return kt(o.onComment) && (o.onComment = V(o, o.onComment)), o;
+ }
+ function V(n, o) {
+ return function (l, f, m, E, O, Y) {
+ var Q = {type: l ? 'Block' : 'Line', value: f, start: m, end: E};
+ n.locations && (Q.loc = new wt(this, O, Y)),
+ n.ranges && (Q.range = [m, E]),
+ o.push(Q);
+ };
+ }
+ var G = 1,
+ J = 2,
+ re = 4,
+ ve = 8,
+ he = 16,
+ Ie = 32,
+ Ee = 64,
+ Le = 128,
+ Xe = 256,
+ We = 512,
+ Ke = G | J | Xe;
+ function ut(n, o) {
+ return J | (n ? re : 0) | (o ? ve : 0);
+ }
+ var pt = 0,
+ bt = 1,
+ yt = 2,
+ vt = 3,
+ bn = 4,
+ Dn = 5,
+ Ge = function (o, l, f) {
+ (this.options = o = Tn(o)),
+ (this.sourceFile = o.sourceFile),
+ (this.keywords = tt(
+ d[
+ o.ecmaVersion >= 6
+ ? 6
+ : o.sourceType === 'module'
+ ? '5module'
+ : 5
+ ]
+ ));
+ var m = '';
+ o.allowReserved !== !0 &&
+ ((m = a[o.ecmaVersion >= 6 ? 6 : o.ecmaVersion === 5 ? 5 : 3]),
+ o.sourceType === 'module' && (m += ' await')),
+ (this.reservedWords = tt(m));
+ var E = (m ? m + ' ' : '') + a.strict;
+ (this.reservedWordsStrict = tt(E)),
+ (this.reservedWordsStrictBind = tt(E + ' ' + a.strictBind)),
+ (this.input = String(l)),
+ (this.containsEsc = !1),
+ f
+ ? ((this.pos = f),
+ (this.lineStart =
+ this.input.lastIndexOf(
+ `
+`,
+ f - 1
+ ) + 1),
+ (this.curLine = this.input
+ .slice(0, this.lineStart)
+ .split(R).length))
+ : ((this.pos = this.lineStart = 0), (this.curLine = 1)),
+ (this.type = c.eof),
+ (this.value = null),
+ (this.start = this.end = this.pos),
+ (this.startLoc = this.endLoc = this.curPosition()),
+ (this.lastTokEndLoc = this.lastTokStartLoc = null),
+ (this.lastTokStart = this.lastTokEnd = this.pos),
+ (this.context = this.initialContext()),
+ (this.exprAllowed = !0),
+ (this.inModule = o.sourceType === 'module'),
+ (this.strict = this.inModule || this.strictDirective(this.pos)),
+ (this.potentialArrowAt = -1),
+ (this.potentialArrowInForAwait = !1),
+ (this.yieldPos = this.awaitPos = this.awaitIdentPos = 0),
+ (this.labels = []),
+ (this.undefinedExports = Object.create(null)),
+ this.pos === 0 &&
+ o.allowHashBang &&
+ this.input.slice(0, 2) === '#!' &&
+ this.skipLineComment(2),
+ (this.scopeStack = []),
+ this.enterScope(G),
+ (this.regexpState = null),
+ (this.privateNameStack = []);
+ },
+ St = {
+ inFunction: {configurable: !0},
+ inGenerator: {configurable: !0},
+ inAsync: {configurable: !0},
+ canAwait: {configurable: !0},
+ allowSuper: {configurable: !0},
+ allowDirectSuper: {configurable: !0},
+ treatFunctionsAsVar: {configurable: !0},
+ allowNewDotTarget: {configurable: !0},
+ inClassStaticBlock: {configurable: !0},
+ };
+ (Ge.prototype.parse = function () {
+ var o = this.options.program || this.startNode();
+ return this.nextToken(), this.parseTopLevel(o);
+ }),
+ (St.inFunction.get = function () {
+ return (this.currentVarScope().flags & J) > 0;
+ }),
+ (St.inGenerator.get = function () {
+ return (this.currentVarScope().flags & ve) > 0;
+ }),
+ (St.inAsync.get = function () {
+ return (this.currentVarScope().flags & re) > 0;
+ }),
+ (St.canAwait.get = function () {
+ for (var n = this.scopeStack.length - 1; n >= 0; n--) {
+ var o = this.scopeStack[n],
+ l = o.flags;
+ if (l & (Xe | We)) return !1;
+ if (l & J) return (l & re) > 0;
+ }
+ return (
+ (this.inModule && this.options.ecmaVersion >= 13) ||
+ this.options.allowAwaitOutsideFunction
+ );
+ }),
+ (St.allowSuper.get = function () {
+ var n = this.currentThisScope(),
+ o = n.flags;
+ return (o & Ee) > 0 || this.options.allowSuperOutsideMethod;
+ }),
+ (St.allowDirectSuper.get = function () {
+ return (this.currentThisScope().flags & Le) > 0;
+ }),
+ (St.treatFunctionsAsVar.get = function () {
+ return this.treatFunctionsAsVarInScope(this.currentScope());
+ }),
+ (St.allowNewDotTarget.get = function () {
+ for (var n = this.scopeStack.length - 1; n >= 0; n--) {
+ var o = this.scopeStack[n],
+ l = o.flags;
+ if (l & (Xe | We) || (l & J && !(l & he))) return !0;
+ }
+ return !1;
+ }),
+ (St.inClassStaticBlock.get = function () {
+ return (this.currentVarScope().flags & Xe) > 0;
+ }),
+ (Ge.extend = function () {
+ for (var o = [], l = arguments.length; l--; ) o[l] = arguments[l];
+ for (var f = this, m = 0; m < o.length; m++) f = o[m](f);
+ return f;
+ }),
+ (Ge.parse = function (o, l) {
+ return new this(l, o).parse();
+ }),
+ (Ge.parseExpressionAt = function (o, l, f) {
+ var m = new this(f, o, l);
+ return m.nextToken(), m.parseExpression();
+ }),
+ (Ge.tokenizer = function (o, l) {
+ return new this(l, o);
+ }),
+ Object.defineProperties(Ge.prototype, St);
+ var ot = Ge.prototype,
+ zt = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/;
+ (ot.strictDirective = function (n) {
+ if (this.options.ecmaVersion < 5) return !1;
+ for (;;) {
+ (ae.lastIndex = n), (n += ae.exec(this.input)[0].length);
+ var o = zt.exec(this.input.slice(n));
+ if (!o) return !1;
+ if ((o[1] || o[2]) === 'use strict') {
+ ae.lastIndex = n + o[0].length;
+ var l = ae.exec(this.input),
+ f = l.index + l[0].length,
+ m = this.input.charAt(f);
+ return (
+ m === ';' ||
+ m === '}' ||
+ (R.test(l[0]) &&
+ !(
+ /[(`.[+\-/*%<>=,?^&]/.test(m) ||
+ (m === '!' && this.input.charAt(f + 1) === '=')
+ ))
+ );
+ }
+ (n += o[0].length),
+ (ae.lastIndex = n),
+ (n += ae.exec(this.input)[0].length),
+ this.input[n] === ';' && n++;
+ }
+ }),
+ (ot.eat = function (n) {
+ return this.type === n ? (this.next(), !0) : !1;
+ }),
+ (ot.isContextual = function (n) {
+ return this.type === c.name && this.value === n && !this.containsEsc;
+ }),
+ (ot.eatContextual = function (n) {
+ return this.isContextual(n) ? (this.next(), !0) : !1;
+ }),
+ (ot.expectContextual = function (n) {
+ this.eatContextual(n) || this.unexpected();
+ }),
+ (ot.canInsertSemicolon = function () {
+ return (
+ this.type === c.eof ||
+ this.type === c.braceR ||
+ R.test(this.input.slice(this.lastTokEnd, this.start))
+ );
+ }),
+ (ot.insertSemicolon = function () {
+ if (this.canInsertSemicolon())
+ return (
+ this.options.onInsertedSemicolon &&
+ this.options.onInsertedSemicolon(
+ this.lastTokEnd,
+ this.lastTokEndLoc
+ ),
+ !0
+ );
+ }),
+ (ot.semicolon = function () {
+ !this.eat(c.semi) && !this.insertSemicolon() && this.unexpected();
+ }),
+ (ot.afterTrailingComma = function (n, o) {
+ if (this.type === n)
+ return (
+ this.options.onTrailingComma &&
+ this.options.onTrailingComma(
+ this.lastTokStart,
+ this.lastTokStartLoc
+ ),
+ o || this.next(),
+ !0
+ );
+ }),
+ (ot.expect = function (n) {
+ this.eat(n) || this.unexpected();
+ }),
+ (ot.unexpected = function (n) {
+ this.raise(n ?? this.start, 'Unexpected token');
+ });
+ var Xt = function () {
+ this.shorthandAssign =
+ this.trailingComma =
+ this.parenthesizedAssign =
+ this.parenthesizedBind =
+ this.doubleProto =
+ -1;
+ };
+ (ot.checkPatternErrors = function (n, o) {
+ if (n) {
+ n.trailingComma > -1 &&
+ this.raiseRecoverable(
+ n.trailingComma,
+ 'Comma is not permitted after the rest element'
+ );
+ var l = o ? n.parenthesizedAssign : n.parenthesizedBind;
+ l > -1 &&
+ this.raiseRecoverable(
+ l,
+ o ? 'Assigning to rvalue' : 'Parenthesized pattern'
+ );
+ }
+ }),
+ (ot.checkExpressionErrors = function (n, o) {
+ if (!n) return !1;
+ var l = n.shorthandAssign,
+ f = n.doubleProto;
+ if (!o) return l >= 0 || f >= 0;
+ l >= 0 &&
+ this.raise(
+ l,
+ 'Shorthand property assignments are valid only in destructuring patterns'
+ ),
+ f >= 0 &&
+ this.raiseRecoverable(f, 'Redefinition of __proto__ property');
+ }),
+ (ot.checkYieldAwaitInDefaultParams = function () {
+ this.yieldPos &&
+ (!this.awaitPos || this.yieldPos < this.awaitPos) &&
+ this.raise(
+ this.yieldPos,
+ 'Yield expression cannot be a default value'
+ ),
+ this.awaitPos &&
+ this.raise(
+ this.awaitPos,
+ 'Await expression cannot be a default value'
+ );
+ }),
+ (ot.isSimpleAssignTarget = function (n) {
+ return n.type === 'ParenthesizedExpression'
+ ? this.isSimpleAssignTarget(n.expression)
+ : n.type === 'Identifier' || n.type === 'MemberExpression';
+ });
+ var te = Ge.prototype;
+ te.parseTopLevel = function (n) {
+ var o = Object.create(null);
+ for (n.body || (n.body = []); this.type !== c.eof; ) {
+ var l = this.parseStatement(null, !0, o);
+ n.body.push(l);
+ }
+ if (this.inModule)
+ for (
+ var f = 0, m = Object.keys(this.undefinedExports);
+ f < m.length;
+ f += 1
+ ) {
+ var E = m[f];
+ this.raiseRecoverable(
+ this.undefinedExports[E].start,
+ "Export '" + E + "' is not defined"
+ );
+ }
+ return (
+ this.adaptDirectivePrologue(n.body),
+ this.next(),
+ (n.sourceType = this.options.sourceType),
+ this.finishNode(n, 'Program')
+ );
+ };
+ var Cn = {kind: 'loop'},
+ Zn = {kind: 'switch'};
+ (te.isLet = function (n) {
+ if (this.options.ecmaVersion < 6 || !this.isContextual('let'))
+ return !1;
+ ae.lastIndex = this.pos;
+ var o = ae.exec(this.input),
+ l = this.pos + o[0].length,
+ f = this.input.charCodeAt(l);
+ if (f === 91 || f === 92) return !0;
+ if (n) return !1;
+ if (f === 123 || (f > 55295 && f < 56320)) return !0;
+ if (h(f, !0)) {
+ for (var m = l + 1; T((f = this.input.charCodeAt(m)), !0); ) ++m;
+ if (f === 92 || (f > 55295 && f < 56320)) return !0;
+ var E = this.input.slice(l, m);
+ if (!y.test(E)) return !0;
+ }
+ return !1;
+ }),
+ (te.isAsyncFunction = function () {
+ if (this.options.ecmaVersion < 8 || !this.isContextual('async'))
+ return !1;
+ ae.lastIndex = this.pos;
+ var n = ae.exec(this.input),
+ o = this.pos + n[0].length,
+ l;
+ return (
+ !R.test(this.input.slice(this.pos, o)) &&
+ this.input.slice(o, o + 8) === 'function' &&
+ (o + 8 === this.input.length ||
+ !(
+ T((l = this.input.charCodeAt(o + 8))) ||
+ (l > 55295 && l < 56320)
+ ))
+ );
+ }),
+ (te.isUsingKeyword = function (n, o) {
+ if (
+ this.options.ecmaVersion < 17 ||
+ !this.isContextual(n ? 'await' : 'using')
+ )
+ return !1;
+ ae.lastIndex = this.pos;
+ var l = ae.exec(this.input),
+ f = this.pos + l[0].length;
+ if (R.test(this.input.slice(this.pos, f))) return !1;
+ if (n) {
+ var m = f + 5,
+ E;
+ if (
+ this.input.slice(f, m) !== 'using' ||
+ m === this.input.length ||
+ T((E = this.input.charCodeAt(m))) ||
+ (E > 55295 && E < 56320)
+ )
+ return !1;
+ ae.lastIndex = m;
+ var O = ae.exec(this.input);
+ if (O && R.test(this.input.slice(m, m + O[0].length))) return !1;
+ }
+ if (o) {
+ var Y = f + 2,
+ Q;
+ if (
+ this.input.slice(f, Y) === 'of' &&
+ (Y === this.input.length ||
+ (!T((Q = this.input.charCodeAt(Y))) &&
+ !(Q > 55295 && Q < 56320)))
+ )
+ return !1;
+ }
+ var Te = this.input.charCodeAt(f);
+ return h(Te, !0) || Te === 92;
+ }),
+ (te.isAwaitUsing = function (n) {
+ return this.isUsingKeyword(!0, n);
+ }),
+ (te.isUsing = function (n) {
+ return this.isUsingKeyword(!1, n);
+ }),
+ (te.parseStatement = function (n, o, l) {
+ var f = this.type,
+ m = this.startNode(),
+ E;
+ switch ((this.isLet(n) && ((f = c._var), (E = 'let')), f)) {
+ case c._break:
+ case c._continue:
+ return this.parseBreakContinueStatement(m, f.keyword);
+ case c._debugger:
+ return this.parseDebuggerStatement(m);
+ case c._do:
+ return this.parseDoStatement(m);
+ case c._for:
+ return this.parseForStatement(m);
+ case c._function:
+ return (
+ n &&
+ (this.strict || (n !== 'if' && n !== 'label')) &&
+ this.options.ecmaVersion >= 6 &&
+ this.unexpected(),
+ this.parseFunctionStatement(m, !1, !n)
+ );
+ case c._class:
+ return n && this.unexpected(), this.parseClass(m, !0);
+ case c._if:
+ return this.parseIfStatement(m);
+ case c._return:
+ return this.parseReturnStatement(m);
+ case c._switch:
+ return this.parseSwitchStatement(m);
+ case c._throw:
+ return this.parseThrowStatement(m);
+ case c._try:
+ return this.parseTryStatement(m);
+ case c._const:
+ case c._var:
+ return (
+ (E = E || this.value),
+ n && E !== 'var' && this.unexpected(),
+ this.parseVarStatement(m, E)
+ );
+ case c._while:
+ return this.parseWhileStatement(m);
+ case c._with:
+ return this.parseWithStatement(m);
+ case c.braceL:
+ return this.parseBlock(!0, m);
+ case c.semi:
+ return this.parseEmptyStatement(m);
+ case c._export:
+ case c._import:
+ if (this.options.ecmaVersion > 10 && f === c._import) {
+ ae.lastIndex = this.pos;
+ var O = ae.exec(this.input),
+ Y = this.pos + O[0].length,
+ Q = this.input.charCodeAt(Y);
+ if (Q === 40 || Q === 46)
+ return this.parseExpressionStatement(
+ m,
+ this.parseExpression()
+ );
+ }
+ return (
+ this.options.allowImportExportEverywhere ||
+ (o ||
+ this.raise(
+ this.start,
+ "'import' and 'export' may only appear at the top level"
+ ),
+ this.inModule ||
+ this.raise(
+ this.start,
+ "'import' and 'export' may appear only with 'sourceType: module'"
+ )),
+ f === c._import ? this.parseImport(m) : this.parseExport(m, l)
+ );
+ default:
+ if (this.isAsyncFunction())
+ return (
+ n && this.unexpected(),
+ this.next(),
+ this.parseFunctionStatement(m, !0, !n)
+ );
+ var Te = this.isAwaitUsing(!1)
+ ? 'await using'
+ : this.isUsing(!1)
+ ? 'using'
+ : null;
+ if (Te)
+ return (
+ o &&
+ this.options.sourceType === 'script' &&
+ this.raise(
+ this.start,
+ 'Using declaration cannot appear in the top level when source type is `script`'
+ ),
+ Te === 'await using' &&
+ (this.canAwait ||
+ this.raise(
+ this.start,
+ 'Await using cannot appear outside of async function'
+ ),
+ this.next()),
+ this.next(),
+ this.parseVar(m, !1, Te),
+ this.semicolon(),
+ this.finishNode(m, 'VariableDeclaration')
+ );
+ var xe = this.value,
+ Ze = this.parseExpression();
+ return f === c.name &&
+ Ze.type === 'Identifier' &&
+ this.eat(c.colon)
+ ? this.parseLabeledStatement(m, xe, Ze, n)
+ : this.parseExpressionStatement(m, Ze);
+ }
+ }),
+ (te.parseBreakContinueStatement = function (n, o) {
+ var l = o === 'break';
+ this.next(),
+ this.eat(c.semi) || this.insertSemicolon()
+ ? (n.label = null)
+ : this.type !== c.name
+ ? this.unexpected()
+ : ((n.label = this.parseIdent()), this.semicolon());
+ for (var f = 0; f < this.labels.length; ++f) {
+ var m = this.labels[f];
+ if (
+ (n.label == null || m.name === n.label.name) &&
+ ((m.kind != null && (l || m.kind === 'loop')) || (n.label && l))
+ )
+ break;
+ }
+ return (
+ f === this.labels.length && this.raise(n.start, 'Unsyntactic ' + o),
+ this.finishNode(n, l ? 'BreakStatement' : 'ContinueStatement')
+ );
+ }),
+ (te.parseDebuggerStatement = function (n) {
+ return (
+ this.next(),
+ this.semicolon(),
+ this.finishNode(n, 'DebuggerStatement')
+ );
+ }),
+ (te.parseDoStatement = function (n) {
+ return (
+ this.next(),
+ this.labels.push(Cn),
+ (n.body = this.parseStatement('do')),
+ this.labels.pop(),
+ this.expect(c._while),
+ (n.test = this.parseParenExpression()),
+ this.options.ecmaVersion >= 6 ? this.eat(c.semi) : this.semicolon(),
+ this.finishNode(n, 'DoWhileStatement')
+ );
+ }),
+ (te.parseForStatement = function (n) {
+ this.next();
+ var o =
+ this.options.ecmaVersion >= 9 &&
+ this.canAwait &&
+ this.eatContextual('await')
+ ? this.lastTokStart
+ : -1;
+ if (
+ (this.labels.push(Cn),
+ this.enterScope(0),
+ this.expect(c.parenL),
+ this.type === c.semi)
+ )
+ return o > -1 && this.unexpected(o), this.parseFor(n, null);
+ var l = this.isLet();
+ if (this.type === c._var || this.type === c._const || l) {
+ var f = this.startNode(),
+ m = l ? 'let' : this.value;
+ return (
+ this.next(),
+ this.parseVar(f, !0, m),
+ this.finishNode(f, 'VariableDeclaration'),
+ this.parseForAfterInit(n, f, o)
+ );
+ }
+ var E = this.isContextual('let'),
+ O = !1,
+ Y = this.isUsing(!0)
+ ? 'using'
+ : this.isAwaitUsing(!0)
+ ? 'await using'
+ : null;
+ if (Y) {
+ var Q = this.startNode();
+ return (
+ this.next(),
+ Y === 'await using' && this.next(),
+ this.parseVar(Q, !0, Y),
+ this.finishNode(Q, 'VariableDeclaration'),
+ this.parseForAfterInit(n, Q, o)
+ );
+ }
+ var Te = this.containsEsc,
+ xe = new Xt(),
+ Ze = this.start,
+ Lt =
+ o > -1
+ ? this.parseExprSubscripts(xe, 'await')
+ : this.parseExpression(!0, xe);
+ return this.type === c._in ||
+ (O = this.options.ecmaVersion >= 6 && this.isContextual('of'))
+ ? (o > -1
+ ? (this.type === c._in && this.unexpected(o), (n.await = !0))
+ : O &&
+ this.options.ecmaVersion >= 8 &&
+ (Lt.start === Ze &&
+ !Te &&
+ Lt.type === 'Identifier' &&
+ Lt.name === 'async'
+ ? this.unexpected()
+ : this.options.ecmaVersion >= 9 && (n.await = !1)),
+ E &&
+ O &&
+ this.raise(
+ Lt.start,
+ "The left-hand side of a for-of loop may not start with 'let'."
+ ),
+ this.toAssignable(Lt, !1, xe),
+ this.checkLValPattern(Lt),
+ this.parseForIn(n, Lt))
+ : (this.checkExpressionErrors(xe, !0),
+ o > -1 && this.unexpected(o),
+ this.parseFor(n, Lt));
+ }),
+ (te.parseForAfterInit = function (n, o, l) {
+ return (this.type === c._in ||
+ (this.options.ecmaVersion >= 6 && this.isContextual('of'))) &&
+ o.declarations.length === 1
+ ? (this.options.ecmaVersion >= 9 &&
+ (this.type === c._in
+ ? l > -1 && this.unexpected(l)
+ : (n.await = l > -1)),
+ this.parseForIn(n, o))
+ : (l > -1 && this.unexpected(l), this.parseFor(n, o));
+ }),
+ (te.parseFunctionStatement = function (n, o, l) {
+ return this.next(), this.parseFunction(n, Mn | (l ? 0 : xs), !1, o);
+ }),
+ (te.parseIfStatement = function (n) {
+ return (
+ this.next(),
+ (n.test = this.parseParenExpression()),
+ (n.consequent = this.parseStatement('if')),
+ (n.alternate = this.eat(c._else)
+ ? this.parseStatement('if')
+ : null),
+ this.finishNode(n, 'IfStatement')
+ );
+ }),
+ (te.parseReturnStatement = function (n) {
+ return (
+ !this.inFunction &&
+ !this.options.allowReturnOutsideFunction &&
+ this.raise(this.start, "'return' outside of function"),
+ this.next(),
+ this.eat(c.semi) || this.insertSemicolon()
+ ? (n.argument = null)
+ : ((n.argument = this.parseExpression()), this.semicolon()),
+ this.finishNode(n, 'ReturnStatement')
+ );
+ }),
+ (te.parseSwitchStatement = function (n) {
+ this.next(),
+ (n.discriminant = this.parseParenExpression()),
+ (n.cases = []),
+ this.expect(c.braceL),
+ this.labels.push(Zn),
+ this.enterScope(0);
+ for (var o, l = !1; this.type !== c.braceR; )
+ if (this.type === c._case || this.type === c._default) {
+ var f = this.type === c._case;
+ o && this.finishNode(o, 'SwitchCase'),
+ n.cases.push((o = this.startNode())),
+ (o.consequent = []),
+ this.next(),
+ f
+ ? (o.test = this.parseExpression())
+ : (l &&
+ this.raiseRecoverable(
+ this.lastTokStart,
+ 'Multiple default clauses'
+ ),
+ (l = !0),
+ (o.test = null)),
+ this.expect(c.colon);
+ } else
+ o || this.unexpected(),
+ o.consequent.push(this.parseStatement(null));
+ return (
+ this.exitScope(),
+ o && this.finishNode(o, 'SwitchCase'),
+ this.next(),
+ this.labels.pop(),
+ this.finishNode(n, 'SwitchStatement')
+ );
+ }),
+ (te.parseThrowStatement = function (n) {
+ return (
+ this.next(),
+ R.test(this.input.slice(this.lastTokEnd, this.start)) &&
+ this.raise(this.lastTokEnd, 'Illegal newline after throw'),
+ (n.argument = this.parseExpression()),
+ this.semicolon(),
+ this.finishNode(n, 'ThrowStatement')
+ );
+ });
+ var _i = [];
+ (te.parseCatchClauseParam = function () {
+ var n = this.parseBindingAtom(),
+ o = n.type === 'Identifier';
+ return (
+ this.enterScope(o ? Ie : 0),
+ this.checkLValPattern(n, o ? bn : yt),
+ this.expect(c.parenR),
+ n
+ );
+ }),
+ (te.parseTryStatement = function (n) {
+ if (
+ (this.next(),
+ (n.block = this.parseBlock()),
+ (n.handler = null),
+ this.type === c._catch)
+ ) {
+ var o = this.startNode();
+ this.next(),
+ this.eat(c.parenL)
+ ? (o.param = this.parseCatchClauseParam())
+ : (this.options.ecmaVersion < 10 && this.unexpected(),
+ (o.param = null),
+ this.enterScope(0)),
+ (o.body = this.parseBlock(!1)),
+ this.exitScope(),
+ (n.handler = this.finishNode(o, 'CatchClause'));
+ }
+ return (
+ (n.finalizer = this.eat(c._finally) ? this.parseBlock() : null),
+ !n.handler &&
+ !n.finalizer &&
+ this.raise(n.start, 'Missing catch or finally clause'),
+ this.finishNode(n, 'TryStatement')
+ );
+ }),
+ (te.parseVarStatement = function (n, o, l) {
+ return (
+ this.next(),
+ this.parseVar(n, !1, o, l),
+ this.semicolon(),
+ this.finishNode(n, 'VariableDeclaration')
+ );
+ }),
+ (te.parseWhileStatement = function (n) {
+ return (
+ this.next(),
+ (n.test = this.parseParenExpression()),
+ this.labels.push(Cn),
+ (n.body = this.parseStatement('while')),
+ this.labels.pop(),
+ this.finishNode(n, 'WhileStatement')
+ );
+ }),
+ (te.parseWithStatement = function (n) {
+ return (
+ this.strict && this.raise(this.start, "'with' in strict mode"),
+ this.next(),
+ (n.object = this.parseParenExpression()),
+ (n.body = this.parseStatement('with')),
+ this.finishNode(n, 'WithStatement')
+ );
+ }),
+ (te.parseEmptyStatement = function (n) {
+ return this.next(), this.finishNode(n, 'EmptyStatement');
+ }),
+ (te.parseLabeledStatement = function (n, o, l, f) {
+ for (var m = 0, E = this.labels; m < E.length; m += 1) {
+ var O = E[m];
+ O.name === o &&
+ this.raise(l.start, "Label '" + o + "' is already declared");
+ }
+ for (
+ var Y = this.type.isLoop
+ ? 'loop'
+ : this.type === c._switch
+ ? 'switch'
+ : null,
+ Q = this.labels.length - 1;
+ Q >= 0;
+ Q--
+ ) {
+ var Te = this.labels[Q];
+ if (Te.statementStart === n.start)
+ (Te.statementStart = this.start), (Te.kind = Y);
+ else break;
+ }
+ return (
+ this.labels.push({name: o, kind: Y, statementStart: this.start}),
+ (n.body = this.parseStatement(
+ f ? (f.indexOf('label') === -1 ? f + 'label' : f) : 'label'
+ )),
+ this.labels.pop(),
+ (n.label = l),
+ this.finishNode(n, 'LabeledStatement')
+ );
+ }),
+ (te.parseExpressionStatement = function (n, o) {
+ return (
+ (n.expression = o),
+ this.semicolon(),
+ this.finishNode(n, 'ExpressionStatement')
+ );
+ }),
+ (te.parseBlock = function (n, o, l) {
+ for (
+ n === void 0 && (n = !0),
+ o === void 0 && (o = this.startNode()),
+ o.body = [],
+ this.expect(c.braceL),
+ n && this.enterScope(0);
+ this.type !== c.braceR;
+
+ ) {
+ var f = this.parseStatement(null);
+ o.body.push(f);
+ }
+ return (
+ l && (this.strict = !1),
+ this.next(),
+ n && this.exitScope(),
+ this.finishNode(o, 'BlockStatement')
+ );
+ }),
+ (te.parseFor = function (n, o) {
+ return (
+ (n.init = o),
+ this.expect(c.semi),
+ (n.test = this.type === c.semi ? null : this.parseExpression()),
+ this.expect(c.semi),
+ (n.update = this.type === c.parenR ? null : this.parseExpression()),
+ this.expect(c.parenR),
+ (n.body = this.parseStatement('for')),
+ this.exitScope(),
+ this.labels.pop(),
+ this.finishNode(n, 'ForStatement')
+ );
+ }),
+ (te.parseForIn = function (n, o) {
+ var l = this.type === c._in;
+ return (
+ this.next(),
+ o.type === 'VariableDeclaration' &&
+ o.declarations[0].init != null &&
+ (!l ||
+ this.options.ecmaVersion < 8 ||
+ this.strict ||
+ o.kind !== 'var' ||
+ o.declarations[0].id.type !== 'Identifier') &&
+ this.raise(
+ o.start,
+ (l ? 'for-in' : 'for-of') +
+ ' loop variable declaration may not have an initializer'
+ ),
+ (n.left = o),
+ (n.right = l ? this.parseExpression() : this.parseMaybeAssign()),
+ this.expect(c.parenR),
+ (n.body = this.parseStatement('for')),
+ this.exitScope(),
+ this.labels.pop(),
+ this.finishNode(n, l ? 'ForInStatement' : 'ForOfStatement')
+ );
+ }),
+ (te.parseVar = function (n, o, l, f) {
+ for (n.declarations = [], n.kind = l; ; ) {
+ var m = this.startNode();
+ if (
+ (this.parseVarId(m, l),
+ this.eat(c.eq)
+ ? (m.init = this.parseMaybeAssign(o))
+ : !f &&
+ l === 'const' &&
+ !(
+ this.type === c._in ||
+ (this.options.ecmaVersion >= 6 && this.isContextual('of'))
+ )
+ ? this.unexpected()
+ : !f &&
+ (l === 'using' || l === 'await using') &&
+ this.options.ecmaVersion >= 17 &&
+ this.type !== c._in &&
+ !this.isContextual('of')
+ ? this.raise(
+ this.lastTokEnd,
+ 'Missing initializer in ' + l + ' declaration'
+ )
+ : !f &&
+ m.id.type !== 'Identifier' &&
+ !(o && (this.type === c._in || this.isContextual('of')))
+ ? this.raise(
+ this.lastTokEnd,
+ 'Complex binding patterns require an initialization value'
+ )
+ : (m.init = null),
+ n.declarations.push(this.finishNode(m, 'VariableDeclarator')),
+ !this.eat(c.comma))
+ )
+ break;
+ }
+ return n;
+ }),
+ (te.parseVarId = function (n, o) {
+ (n.id =
+ o === 'using' || o === 'await using'
+ ? this.parseIdent()
+ : this.parseBindingAtom()),
+ this.checkLValPattern(n.id, o === 'var' ? bt : yt, !1);
+ });
+ var Mn = 1,
+ xs = 2,
+ Ds = 4;
+ (te.parseFunction = function (n, o, l, f, m) {
+ this.initFunction(n),
+ (this.options.ecmaVersion >= 9 ||
+ (this.options.ecmaVersion >= 6 && !f)) &&
+ (this.type === c.star && o & xs && this.unexpected(),
+ (n.generator = this.eat(c.star))),
+ this.options.ecmaVersion >= 8 && (n.async = !!f),
+ o & Mn &&
+ ((n.id = o & Ds && this.type !== c.name ? null : this.parseIdent()),
+ n.id &&
+ !(o & xs) &&
+ this.checkLValSimple(
+ n.id,
+ this.strict || n.generator || n.async
+ ? this.treatFunctionsAsVar
+ ? bt
+ : yt
+ : vt
+ ));
+ var E = this.yieldPos,
+ O = this.awaitPos,
+ Y = this.awaitIdentPos;
+ return (
+ (this.yieldPos = 0),
+ (this.awaitPos = 0),
+ (this.awaitIdentPos = 0),
+ this.enterScope(ut(n.async, n.generator)),
+ o & Mn || (n.id = this.type === c.name ? this.parseIdent() : null),
+ this.parseFunctionParams(n),
+ this.parseFunctionBody(n, l, !1, m),
+ (this.yieldPos = E),
+ (this.awaitPos = O),
+ (this.awaitIdentPos = Y),
+ this.finishNode(
+ n,
+ o & Mn ? 'FunctionDeclaration' : 'FunctionExpression'
+ )
+ );
+ }),
+ (te.parseFunctionParams = function (n) {
+ this.expect(c.parenL),
+ (n.params = this.parseBindingList(
+ c.parenR,
+ !1,
+ this.options.ecmaVersion >= 8
+ )),
+ this.checkYieldAwaitInDefaultParams();
+ }),
+ (te.parseClass = function (n, o) {
+ this.next();
+ var l = this.strict;
+ (this.strict = !0), this.parseClassId(n, o), this.parseClassSuper(n);
+ var f = this.enterClassBody(),
+ m = this.startNode(),
+ E = !1;
+ for (m.body = [], this.expect(c.braceL); this.type !== c.braceR; ) {
+ var O = this.parseClassElement(n.superClass !== null);
+ O &&
+ (m.body.push(O),
+ O.type === 'MethodDefinition' && O.kind === 'constructor'
+ ? (E &&
+ this.raiseRecoverable(
+ O.start,
+ 'Duplicate constructor in the same class'
+ ),
+ (E = !0))
+ : O.key &&
+ O.key.type === 'PrivateIdentifier' &&
+ bi(f, O) &&
+ this.raiseRecoverable(
+ O.key.start,
+ "Identifier '#" + O.key.name + "' has already been declared"
+ ));
+ }
+ return (
+ (this.strict = l),
+ this.next(),
+ (n.body = this.finishNode(m, 'ClassBody')),
+ this.exitClassBody(),
+ this.finishNode(n, o ? 'ClassDeclaration' : 'ClassExpression')
+ );
+ }),
+ (te.parseClassElement = function (n) {
+ if (this.eat(c.semi)) return null;
+ var o = this.options.ecmaVersion,
+ l = this.startNode(),
+ f = '',
+ m = !1,
+ E = !1,
+ O = 'method',
+ Y = !1;
+ if (this.eatContextual('static')) {
+ if (o >= 13 && this.eat(c.braceL))
+ return this.parseClassStaticBlock(l), l;
+ this.isClassElementNameStart() || this.type === c.star
+ ? (Y = !0)
+ : (f = 'static');
+ }
+ if (
+ ((l.static = Y),
+ !f &&
+ o >= 8 &&
+ this.eatContextual('async') &&
+ ((this.isClassElementNameStart() || this.type === c.star) &&
+ !this.canInsertSemicolon()
+ ? (E = !0)
+ : (f = 'async')),
+ !f && (o >= 9 || !E) && this.eat(c.star) && (m = !0),
+ !f && !E && !m)
+ ) {
+ var Q = this.value;
+ (this.eatContextual('get') || this.eatContextual('set')) &&
+ (this.isClassElementNameStart() ? (O = Q) : (f = Q));
+ }
+ if (
+ (f
+ ? ((l.computed = !1),
+ (l.key = this.startNodeAt(
+ this.lastTokStart,
+ this.lastTokStartLoc
+ )),
+ (l.key.name = f),
+ this.finishNode(l.key, 'Identifier'))
+ : this.parseClassElementName(l),
+ o < 13 || this.type === c.parenL || O !== 'method' || m || E)
+ ) {
+ var Te = !l.static && es(l, 'constructor'),
+ xe = Te && n;
+ Te &&
+ O !== 'method' &&
+ this.raise(
+ l.key.start,
+ "Constructor can't have get/set modifier"
+ ),
+ (l.kind = Te ? 'constructor' : O),
+ this.parseClassMethod(l, m, E, xe);
+ } else this.parseClassField(l);
+ return l;
+ }),
+ (te.isClassElementNameStart = function () {
+ return (
+ this.type === c.name ||
+ this.type === c.privateId ||
+ this.type === c.num ||
+ this.type === c.string ||
+ this.type === c.bracketL ||
+ this.type.keyword
+ );
+ }),
+ (te.parseClassElementName = function (n) {
+ this.type === c.privateId
+ ? (this.value === 'constructor' &&
+ this.raise(
+ this.start,
+ "Classes can't have an element named '#constructor'"
+ ),
+ (n.computed = !1),
+ (n.key = this.parsePrivateIdent()))
+ : this.parsePropertyName(n);
+ }),
+ (te.parseClassMethod = function (n, o, l, f) {
+ var m = n.key;
+ n.kind === 'constructor'
+ ? (o && this.raise(m.start, "Constructor can't be a generator"),
+ l && this.raise(m.start, "Constructor can't be an async method"))
+ : n.static &&
+ es(n, 'prototype') &&
+ this.raise(
+ m.start,
+ 'Classes may not have a static property named prototype'
+ );
+ var E = (n.value = this.parseMethod(o, l, f));
+ return (
+ n.kind === 'get' &&
+ E.params.length !== 0 &&
+ this.raiseRecoverable(E.start, 'getter should have no params'),
+ n.kind === 'set' &&
+ E.params.length !== 1 &&
+ this.raiseRecoverable(
+ E.start,
+ 'setter should have exactly one param'
+ ),
+ n.kind === 'set' &&
+ E.params[0].type === 'RestElement' &&
+ this.raiseRecoverable(
+ E.params[0].start,
+ 'Setter cannot use rest params'
+ ),
+ this.finishNode(n, 'MethodDefinition')
+ );
+ }),
+ (te.parseClassField = function (n) {
+ return (
+ es(n, 'constructor')
+ ? this.raise(
+ n.key.start,
+ "Classes can't have a field named 'constructor'"
+ )
+ : n.static &&
+ es(n, 'prototype') &&
+ this.raise(
+ n.key.start,
+ "Classes can't have a static field named 'prototype'"
+ ),
+ this.eat(c.eq)
+ ? (this.enterScope(We | Ee),
+ (n.value = this.parseMaybeAssign()),
+ this.exitScope())
+ : (n.value = null),
+ this.semicolon(),
+ this.finishNode(n, 'PropertyDefinition')
+ );
+ }),
+ (te.parseClassStaticBlock = function (n) {
+ n.body = [];
+ var o = this.labels;
+ for (
+ this.labels = [], this.enterScope(Xe | Ee);
+ this.type !== c.braceR;
+
+ ) {
+ var l = this.parseStatement(null);
+ n.body.push(l);
+ }
+ return (
+ this.next(),
+ this.exitScope(),
+ (this.labels = o),
+ this.finishNode(n, 'StaticBlock')
+ );
+ }),
+ (te.parseClassId = function (n, o) {
+ this.type === c.name
+ ? ((n.id = this.parseIdent()),
+ o && this.checkLValSimple(n.id, yt, !1))
+ : (o === !0 && this.unexpected(), (n.id = null));
+ }),
+ (te.parseClassSuper = function (n) {
+ n.superClass = this.eat(c._extends)
+ ? this.parseExprSubscripts(null, !1)
+ : null;
+ }),
+ (te.enterClassBody = function () {
+ var n = {declared: Object.create(null), used: []};
+ return this.privateNameStack.push(n), n.declared;
+ }),
+ (te.exitClassBody = function () {
+ var n = this.privateNameStack.pop(),
+ o = n.declared,
+ l = n.used;
+ if (this.options.checkPrivateFields)
+ for (
+ var f = this.privateNameStack.length,
+ m = f === 0 ? null : this.privateNameStack[f - 1],
+ E = 0;
+ E < l.length;
+ ++E
+ ) {
+ var O = l[E];
+ mt(o, O.name) ||
+ (m
+ ? m.used.push(O)
+ : this.raiseRecoverable(
+ O.start,
+ "Private field '#" +
+ O.name +
+ "' must be declared in an enclosing class"
+ ));
+ }
+ });
+ function bi(n, o) {
+ var l = o.key.name,
+ f = n[l],
+ m = 'true';
+ return (
+ o.type === 'MethodDefinition' &&
+ (o.kind === 'get' || o.kind === 'set') &&
+ (m = (o.static ? 's' : 'i') + o.kind),
+ (f === 'iget' && m === 'iset') ||
+ (f === 'iset' && m === 'iget') ||
+ (f === 'sget' && m === 'sset') ||
+ (f === 'sset' && m === 'sget')
+ ? ((n[l] = 'true'), !1)
+ : f
+ ? !0
+ : ((n[l] = m), !1)
+ );
+ }
+ function es(n, o) {
+ var l = n.computed,
+ f = n.key;
+ return (
+ !l &&
+ ((f.type === 'Identifier' && f.name === o) ||
+ (f.type === 'Literal' && f.value === o))
+ );
+ }
+ (te.parseExportAllDeclaration = function (n, o) {
+ return (
+ this.options.ecmaVersion >= 11 &&
+ (this.eatContextual('as')
+ ? ((n.exported = this.parseModuleExportName()),
+ this.checkExport(o, n.exported, this.lastTokStart))
+ : (n.exported = null)),
+ this.expectContextual('from'),
+ this.type !== c.string && this.unexpected(),
+ (n.source = this.parseExprAtom()),
+ this.options.ecmaVersion >= 16 &&
+ (n.attributes = this.parseWithClause()),
+ this.semicolon(),
+ this.finishNode(n, 'ExportAllDeclaration')
+ );
+ }),
+ (te.parseExport = function (n, o) {
+ if ((this.next(), this.eat(c.star)))
+ return this.parseExportAllDeclaration(n, o);
+ if (this.eat(c._default))
+ return (
+ this.checkExport(o, 'default', this.lastTokStart),
+ (n.declaration = this.parseExportDefaultDeclaration()),
+ this.finishNode(n, 'ExportDefaultDeclaration')
+ );
+ if (this.shouldParseExportStatement())
+ (n.declaration = this.parseExportDeclaration(n)),
+ n.declaration.type === 'VariableDeclaration'
+ ? this.checkVariableExport(o, n.declaration.declarations)
+ : this.checkExport(o, n.declaration.id, n.declaration.id.start),
+ (n.specifiers = []),
+ (n.source = null),
+ this.options.ecmaVersion >= 16 && (n.attributes = []);
+ else {
+ if (
+ ((n.declaration = null),
+ (n.specifiers = this.parseExportSpecifiers(o)),
+ this.eatContextual('from'))
+ )
+ this.type !== c.string && this.unexpected(),
+ (n.source = this.parseExprAtom()),
+ this.options.ecmaVersion >= 16 &&
+ (n.attributes = this.parseWithClause());
+ else {
+ for (var l = 0, f = n.specifiers; l < f.length; l += 1) {
+ var m = f[l];
+ this.checkUnreserved(m.local),
+ this.checkLocalExport(m.local),
+ m.local.type === 'Literal' &&
+ this.raise(
+ m.local.start,
+ 'A string literal cannot be used as an exported binding without `from`.'
+ );
+ }
+ (n.source = null),
+ this.options.ecmaVersion >= 16 && (n.attributes = []);
+ }
+ this.semicolon();
+ }
+ return this.finishNode(n, 'ExportNamedDeclaration');
+ }),
+ (te.parseExportDeclaration = function (n) {
+ return this.parseStatement(null);
+ }),
+ (te.parseExportDefaultDeclaration = function () {
+ var n;
+ if (this.type === c._function || (n = this.isAsyncFunction())) {
+ var o = this.startNode();
+ return (
+ this.next(),
+ n && this.next(),
+ this.parseFunction(o, Mn | Ds, !1, n)
+ );
+ } else if (this.type === c._class) {
+ var l = this.startNode();
+ return this.parseClass(l, 'nullableID');
+ } else {
+ var f = this.parseMaybeAssign();
+ return this.semicolon(), f;
+ }
+ }),
+ (te.checkExport = function (n, o, l) {
+ n &&
+ (typeof o != 'string' &&
+ (o = o.type === 'Identifier' ? o.name : o.value),
+ mt(n, o) &&
+ this.raiseRecoverable(l, "Duplicate export '" + o + "'"),
+ (n[o] = !0));
+ }),
+ (te.checkPatternExport = function (n, o) {
+ var l = o.type;
+ if (l === 'Identifier') this.checkExport(n, o, o.start);
+ else if (l === 'ObjectPattern')
+ for (var f = 0, m = o.properties; f < m.length; f += 1) {
+ var E = m[f];
+ this.checkPatternExport(n, E);
+ }
+ else if (l === 'ArrayPattern')
+ for (var O = 0, Y = o.elements; O < Y.length; O += 1) {
+ var Q = Y[O];
+ Q && this.checkPatternExport(n, Q);
+ }
+ else
+ l === 'Property'
+ ? this.checkPatternExport(n, o.value)
+ : l === 'AssignmentPattern'
+ ? this.checkPatternExport(n, o.left)
+ : l === 'RestElement' && this.checkPatternExport(n, o.argument);
+ }),
+ (te.checkVariableExport = function (n, o) {
+ if (n)
+ for (var l = 0, f = o; l < f.length; l += 1) {
+ var m = f[l];
+ this.checkPatternExport(n, m.id);
+ }
+ }),
+ (te.shouldParseExportStatement = function () {
+ return (
+ this.type.keyword === 'var' ||
+ this.type.keyword === 'const' ||
+ this.type.keyword === 'class' ||
+ this.type.keyword === 'function' ||
+ this.isLet() ||
+ this.isAsyncFunction()
+ );
+ }),
+ (te.parseExportSpecifier = function (n) {
+ var o = this.startNode();
+ return (
+ (o.local = this.parseModuleExportName()),
+ (o.exported = this.eatContextual('as')
+ ? this.parseModuleExportName()
+ : o.local),
+ this.checkExport(n, o.exported, o.exported.start),
+ this.finishNode(o, 'ExportSpecifier')
+ );
+ }),
+ (te.parseExportSpecifiers = function (n) {
+ var o = [],
+ l = !0;
+ for (this.expect(c.braceL); !this.eat(c.braceR); ) {
+ if (l) l = !1;
+ else if ((this.expect(c.comma), this.afterTrailingComma(c.braceR)))
+ break;
+ o.push(this.parseExportSpecifier(n));
+ }
+ return o;
+ }),
+ (te.parseImport = function (n) {
+ return (
+ this.next(),
+ this.type === c.string
+ ? ((n.specifiers = _i), (n.source = this.parseExprAtom()))
+ : ((n.specifiers = this.parseImportSpecifiers()),
+ this.expectContextual('from'),
+ (n.source =
+ this.type === c.string
+ ? this.parseExprAtom()
+ : this.unexpected())),
+ this.options.ecmaVersion >= 16 &&
+ (n.attributes = this.parseWithClause()),
+ this.semicolon(),
+ this.finishNode(n, 'ImportDeclaration')
+ );
+ }),
+ (te.parseImportSpecifier = function () {
+ var n = this.startNode();
+ return (
+ (n.imported = this.parseModuleExportName()),
+ this.eatContextual('as')
+ ? (n.local = this.parseIdent())
+ : (this.checkUnreserved(n.imported), (n.local = n.imported)),
+ this.checkLValSimple(n.local, yt),
+ this.finishNode(n, 'ImportSpecifier')
+ );
+ }),
+ (te.parseImportDefaultSpecifier = function () {
+ var n = this.startNode();
+ return (
+ (n.local = this.parseIdent()),
+ this.checkLValSimple(n.local, yt),
+ this.finishNode(n, 'ImportDefaultSpecifier')
+ );
+ }),
+ (te.parseImportNamespaceSpecifier = function () {
+ var n = this.startNode();
+ return (
+ this.next(),
+ this.expectContextual('as'),
+ (n.local = this.parseIdent()),
+ this.checkLValSimple(n.local, yt),
+ this.finishNode(n, 'ImportNamespaceSpecifier')
+ );
+ }),
+ (te.parseImportSpecifiers = function () {
+ var n = [],
+ o = !0;
+ if (
+ this.type === c.name &&
+ (n.push(this.parseImportDefaultSpecifier()), !this.eat(c.comma))
+ )
+ return n;
+ if (this.type === c.star)
+ return n.push(this.parseImportNamespaceSpecifier()), n;
+ for (this.expect(c.braceL); !this.eat(c.braceR); ) {
+ if (o) o = !1;
+ else if ((this.expect(c.comma), this.afterTrailingComma(c.braceR)))
+ break;
+ n.push(this.parseImportSpecifier());
+ }
+ return n;
+ }),
+ (te.parseWithClause = function () {
+ var n = [];
+ if (!this.eat(c._with)) return n;
+ this.expect(c.braceL);
+ for (var o = {}, l = !0; !this.eat(c.braceR); ) {
+ if (l) l = !1;
+ else if ((this.expect(c.comma), this.afterTrailingComma(c.braceR)))
+ break;
+ var f = this.parseImportAttribute(),
+ m = f.key.type === 'Identifier' ? f.key.name : f.key.value;
+ mt(o, m) &&
+ this.raiseRecoverable(
+ f.key.start,
+ "Duplicate attribute key '" + m + "'"
+ ),
+ (o[m] = !0),
+ n.push(f);
+ }
+ return n;
+ }),
+ (te.parseImportAttribute = function () {
+ var n = this.startNode();
+ return (
+ (n.key =
+ this.type === c.string
+ ? this.parseExprAtom()
+ : this.parseIdent(this.options.allowReserved !== 'never')),
+ this.expect(c.colon),
+ this.type !== c.string && this.unexpected(),
+ (n.value = this.parseExprAtom()),
+ this.finishNode(n, 'ImportAttribute')
+ );
+ }),
+ (te.parseModuleExportName = function () {
+ if (this.options.ecmaVersion >= 13 && this.type === c.string) {
+ var n = this.parseLiteral(this.value);
+ return (
+ _t.test(n.value) &&
+ this.raise(
+ n.start,
+ 'An export name cannot include a lone surrogate.'
+ ),
+ n
+ );
+ }
+ return this.parseIdent(!0);
+ }),
+ (te.adaptDirectivePrologue = function (n) {
+ for (var o = 0; o < n.length && this.isDirectiveCandidate(n[o]); ++o)
+ n[o].directive = n[o].expression.raw.slice(1, -1);
+ }),
+ (te.isDirectiveCandidate = function (n) {
+ return (
+ this.options.ecmaVersion >= 5 &&
+ n.type === 'ExpressionStatement' &&
+ n.expression.type === 'Literal' &&
+ typeof n.expression.value == 'string' &&
+ (this.input[n.start] === '"' || this.input[n.start] === "'")
+ );
+ });
+ var Nt = Ge.prototype;
+ (Nt.toAssignable = function (n, o, l) {
+ if (this.options.ecmaVersion >= 6 && n)
+ switch (n.type) {
+ case 'Identifier':
+ this.inAsync &&
+ n.name === 'await' &&
+ this.raise(
+ n.start,
+ "Cannot use 'await' as identifier inside an async function"
+ );
+ break;
+ case 'ObjectPattern':
+ case 'ArrayPattern':
+ case 'AssignmentPattern':
+ case 'RestElement':
+ break;
+ case 'ObjectExpression':
+ (n.type = 'ObjectPattern'), l && this.checkPatternErrors(l, !0);
+ for (var f = 0, m = n.properties; f < m.length; f += 1) {
+ var E = m[f];
+ this.toAssignable(E, o),
+ E.type === 'RestElement' &&
+ (E.argument.type === 'ArrayPattern' ||
+ E.argument.type === 'ObjectPattern') &&
+ this.raise(E.argument.start, 'Unexpected token');
+ }
+ break;
+ case 'Property':
+ n.kind !== 'init' &&
+ this.raise(
+ n.key.start,
+ "Object pattern can't contain getter or setter"
+ ),
+ this.toAssignable(n.value, o);
+ break;
+ case 'ArrayExpression':
+ (n.type = 'ArrayPattern'),
+ l && this.checkPatternErrors(l, !0),
+ this.toAssignableList(n.elements, o);
+ break;
+ case 'SpreadElement':
+ (n.type = 'RestElement'),
+ this.toAssignable(n.argument, o),
+ n.argument.type === 'AssignmentPattern' &&
+ this.raise(
+ n.argument.start,
+ 'Rest elements cannot have a default value'
+ );
+ break;
+ case 'AssignmentExpression':
+ n.operator !== '=' &&
+ this.raise(
+ n.left.end,
+ "Only '=' operator can be used for specifying default value."
+ ),
+ (n.type = 'AssignmentPattern'),
+ delete n.operator,
+ this.toAssignable(n.left, o);
+ break;
+ case 'ParenthesizedExpression':
+ this.toAssignable(n.expression, o, l);
+ break;
+ case 'ChainExpression':
+ this.raiseRecoverable(
+ n.start,
+ 'Optional chaining cannot appear in left-hand side'
+ );
+ break;
+ case 'MemberExpression':
+ if (!o) break;
+ default:
+ this.raise(n.start, 'Assigning to rvalue');
+ }
+ else l && this.checkPatternErrors(l, !0);
+ return n;
+ }),
+ (Nt.toAssignableList = function (n, o) {
+ for (var l = n.length, f = 0; f < l; f++) {
+ var m = n[f];
+ m && this.toAssignable(m, o);
+ }
+ if (l) {
+ var E = n[l - 1];
+ this.options.ecmaVersion === 6 &&
+ o &&
+ E &&
+ E.type === 'RestElement' &&
+ E.argument.type !== 'Identifier' &&
+ this.unexpected(E.argument.start);
+ }
+ return n;
+ }),
+ (Nt.parseSpread = function (n) {
+ var o = this.startNode();
+ return (
+ this.next(),
+ (o.argument = this.parseMaybeAssign(!1, n)),
+ this.finishNode(o, 'SpreadElement')
+ );
+ }),
+ (Nt.parseRestBinding = function () {
+ var n = this.startNode();
+ return (
+ this.next(),
+ this.options.ecmaVersion === 6 &&
+ this.type !== c.name &&
+ this.unexpected(),
+ (n.argument = this.parseBindingAtom()),
+ this.finishNode(n, 'RestElement')
+ );
+ }),
+ (Nt.parseBindingAtom = function () {
+ if (this.options.ecmaVersion >= 6)
+ switch (this.type) {
+ case c.bracketL:
+ var n = this.startNode();
+ return (
+ this.next(),
+ (n.elements = this.parseBindingList(c.bracketR, !0, !0)),
+ this.finishNode(n, 'ArrayPattern')
+ );
+ case c.braceL:
+ return this.parseObj(!0);
+ }
+ return this.parseIdent();
+ }),
+ (Nt.parseBindingList = function (n, o, l, f) {
+ for (var m = [], E = !0; !this.eat(n); )
+ if (
+ (E ? (E = !1) : this.expect(c.comma), o && this.type === c.comma)
+ )
+ m.push(null);
+ else {
+ if (l && this.afterTrailingComma(n)) break;
+ if (this.type === c.ellipsis) {
+ var O = this.parseRestBinding();
+ this.parseBindingListItem(O),
+ m.push(O),
+ this.type === c.comma &&
+ this.raiseRecoverable(
+ this.start,
+ 'Comma is not permitted after the rest element'
+ ),
+ this.expect(n);
+ break;
+ } else m.push(this.parseAssignableListItem(f));
+ }
+ return m;
+ }),
+ (Nt.parseAssignableListItem = function (n) {
+ var o = this.parseMaybeDefault(this.start, this.startLoc);
+ return this.parseBindingListItem(o), o;
+ }),
+ (Nt.parseBindingListItem = function (n) {
+ return n;
+ }),
+ (Nt.parseMaybeDefault = function (n, o, l) {
+ if (
+ ((l = l || this.parseBindingAtom()),
+ this.options.ecmaVersion < 6 || !this.eat(c.eq))
+ )
+ return l;
+ var f = this.startNodeAt(n, o);
+ return (
+ (f.left = l),
+ (f.right = this.parseMaybeAssign()),
+ this.finishNode(f, 'AssignmentPattern')
+ );
+ }),
+ (Nt.checkLValSimple = function (n, o, l) {
+ o === void 0 && (o = pt);
+ var f = o !== pt;
+ switch (n.type) {
+ case 'Identifier':
+ this.strict &&
+ this.reservedWordsStrictBind.test(n.name) &&
+ this.raiseRecoverable(
+ n.start,
+ (f ? 'Binding ' : 'Assigning to ') +
+ n.name +
+ ' in strict mode'
+ ),
+ f &&
+ (o === yt &&
+ n.name === 'let' &&
+ this.raiseRecoverable(
+ n.start,
+ 'let is disallowed as a lexically bound name'
+ ),
+ l &&
+ (mt(l, n.name) &&
+ this.raiseRecoverable(n.start, 'Argument name clash'),
+ (l[n.name] = !0)),
+ o !== Dn && this.declareName(n.name, o, n.start));
+ break;
+ case 'ChainExpression':
+ this.raiseRecoverable(
+ n.start,
+ 'Optional chaining cannot appear in left-hand side'
+ );
+ break;
+ case 'MemberExpression':
+ f && this.raiseRecoverable(n.start, 'Binding member expression');
+ break;
+ case 'ParenthesizedExpression':
+ return (
+ f &&
+ this.raiseRecoverable(
+ n.start,
+ 'Binding parenthesized expression'
+ ),
+ this.checkLValSimple(n.expression, o, l)
+ );
+ default:
+ this.raise(n.start, (f ? 'Binding' : 'Assigning to') + ' rvalue');
+ }
+ }),
+ (Nt.checkLValPattern = function (n, o, l) {
+ switch ((o === void 0 && (o = pt), n.type)) {
+ case 'ObjectPattern':
+ for (var f = 0, m = n.properties; f < m.length; f += 1) {
+ var E = m[f];
+ this.checkLValInnerPattern(E, o, l);
+ }
+ break;
+ case 'ArrayPattern':
+ for (var O = 0, Y = n.elements; O < Y.length; O += 1) {
+ var Q = Y[O];
+ Q && this.checkLValInnerPattern(Q, o, l);
+ }
+ break;
+ default:
+ this.checkLValSimple(n, o, l);
+ }
+ }),
+ (Nt.checkLValInnerPattern = function (n, o, l) {
+ switch ((o === void 0 && (o = pt), n.type)) {
+ case 'Property':
+ this.checkLValInnerPattern(n.value, o, l);
+ break;
+ case 'AssignmentPattern':
+ this.checkLValPattern(n.left, o, l);
+ break;
+ case 'RestElement':
+ this.checkLValPattern(n.argument, o, l);
+ break;
+ default:
+ this.checkLValPattern(n, o, l);
+ }
+ });
+ var Rt = function (o, l, f, m, E) {
+ (this.token = o),
+ (this.isExpr = !!l),
+ (this.preserveSpace = !!f),
+ (this.override = m),
+ (this.generator = !!E);
+ },
+ Ue = {
+ b_stat: new Rt('{', !1),
+ b_expr: new Rt('{', !0),
+ b_tmpl: new Rt('${', !1),
+ p_stat: new Rt('(', !1),
+ p_expr: new Rt('(', !0),
+ q_tmpl: new Rt('`', !0, !0, function (n) {
+ return n.tryReadTemplateToken();
+ }),
+ f_stat: new Rt('function', !1),
+ f_expr: new Rt('function', !0),
+ f_expr_gen: new Rt('function', !0, !1, null, !0),
+ f_gen: new Rt('function', !1, !1, null, !0),
+ },
+ wn = Ge.prototype;
+ (wn.initialContext = function () {
+ return [Ue.b_stat];
+ }),
+ (wn.curContext = function () {
+ return this.context[this.context.length - 1];
+ }),
+ (wn.braceIsBlock = function (n) {
+ var o = this.curContext();
+ return o === Ue.f_expr || o === Ue.f_stat
+ ? !0
+ : n === c.colon && (o === Ue.b_stat || o === Ue.b_expr)
+ ? !o.isExpr
+ : n === c._return || (n === c.name && this.exprAllowed)
+ ? R.test(this.input.slice(this.lastTokEnd, this.start))
+ : n === c._else ||
+ n === c.semi ||
+ n === c.eof ||
+ n === c.parenR ||
+ n === c.arrow
+ ? !0
+ : n === c.braceL
+ ? o === Ue.b_stat
+ : n === c._var || n === c._const || n === c.name
+ ? !1
+ : !this.exprAllowed;
+ }),
+ (wn.inGeneratorContext = function () {
+ for (var n = this.context.length - 1; n >= 1; n--) {
+ var o = this.context[n];
+ if (o.token === 'function') return o.generator;
+ }
+ return !1;
+ }),
+ (wn.updateContext = function (n) {
+ var o,
+ l = this.type;
+ l.keyword && n === c.dot
+ ? (this.exprAllowed = !1)
+ : (o = l.updateContext)
+ ? o.call(this, n)
+ : (this.exprAllowed = l.beforeExpr);
+ }),
+ (wn.overrideContext = function (n) {
+ this.curContext() !== n &&
+ (this.context[this.context.length - 1] = n);
+ }),
+ (c.parenR.updateContext = c.braceR.updateContext =
+ function () {
+ if (this.context.length === 1) {
+ this.exprAllowed = !0;
+ return;
+ }
+ var n = this.context.pop();
+ n === Ue.b_stat &&
+ this.curContext().token === 'function' &&
+ (n = this.context.pop()),
+ (this.exprAllowed = !n.isExpr);
+ }),
+ (c.braceL.updateContext = function (n) {
+ this.context.push(this.braceIsBlock(n) ? Ue.b_stat : Ue.b_expr),
+ (this.exprAllowed = !0);
+ }),
+ (c.dollarBraceL.updateContext = function () {
+ this.context.push(Ue.b_tmpl), (this.exprAllowed = !0);
+ }),
+ (c.parenL.updateContext = function (n) {
+ var o =
+ n === c._if || n === c._for || n === c._with || n === c._while;
+ this.context.push(o ? Ue.p_stat : Ue.p_expr), (this.exprAllowed = !0);
+ }),
+ (c.incDec.updateContext = function () {}),
+ (c._function.updateContext = c._class.updateContext =
+ function (n) {
+ n.beforeExpr &&
+ n !== c._else &&
+ !(n === c.semi && this.curContext() !== Ue.p_stat) &&
+ !(
+ n === c._return &&
+ R.test(this.input.slice(this.lastTokEnd, this.start))
+ ) &&
+ !(
+ (n === c.colon || n === c.braceL) &&
+ this.curContext() === Ue.b_stat
+ )
+ ? this.context.push(Ue.f_expr)
+ : this.context.push(Ue.f_stat),
+ (this.exprAllowed = !1);
+ }),
+ (c.colon.updateContext = function () {
+ this.curContext().token === 'function' && this.context.pop(),
+ (this.exprAllowed = !0);
+ }),
+ (c.backQuote.updateContext = function () {
+ this.curContext() === Ue.q_tmpl
+ ? this.context.pop()
+ : this.context.push(Ue.q_tmpl),
+ (this.exprAllowed = !1);
+ }),
+ (c.star.updateContext = function (n) {
+ if (n === c._function) {
+ var o = this.context.length - 1;
+ this.context[o] === Ue.f_expr
+ ? (this.context[o] = Ue.f_expr_gen)
+ : (this.context[o] = Ue.f_gen);
+ }
+ this.exprAllowed = !0;
+ }),
+ (c.name.updateContext = function (n) {
+ var o = !1;
+ this.options.ecmaVersion >= 6 &&
+ n !== c.dot &&
+ ((this.value === 'of' && !this.exprAllowed) ||
+ (this.value === 'yield' && this.inGeneratorContext())) &&
+ (o = !0),
+ (this.exprAllowed = o);
+ });
+ var de = Ge.prototype;
+ (de.checkPropClash = function (n, o, l) {
+ if (
+ !(this.options.ecmaVersion >= 9 && n.type === 'SpreadElement') &&
+ !(
+ this.options.ecmaVersion >= 6 &&
+ (n.computed || n.method || n.shorthand)
+ )
+ ) {
+ var f = n.key,
+ m;
+ switch (f.type) {
+ case 'Identifier':
+ m = f.name;
+ break;
+ case 'Literal':
+ m = String(f.value);
+ break;
+ default:
+ return;
+ }
+ var E = n.kind;
+ if (this.options.ecmaVersion >= 6) {
+ m === '__proto__' &&
+ E === 'init' &&
+ (o.proto &&
+ (l
+ ? l.doubleProto < 0 && (l.doubleProto = f.start)
+ : this.raiseRecoverable(
+ f.start,
+ 'Redefinition of __proto__ property'
+ )),
+ (o.proto = !0));
+ return;
+ }
+ m = '$' + m;
+ var O = o[m];
+ if (O) {
+ var Y;
+ E === 'init'
+ ? (Y = (this.strict && O.init) || O.get || O.set)
+ : (Y = O.init || O[E]),
+ Y && this.raiseRecoverable(f.start, 'Redefinition of property');
+ } else O = o[m] = {init: !1, get: !1, set: !1};
+ O[E] = !0;
+ }
+ }),
+ (de.parseExpression = function (n, o) {
+ var l = this.start,
+ f = this.startLoc,
+ m = this.parseMaybeAssign(n, o);
+ if (this.type === c.comma) {
+ var E = this.startNodeAt(l, f);
+ for (E.expressions = [m]; this.eat(c.comma); )
+ E.expressions.push(this.parseMaybeAssign(n, o));
+ return this.finishNode(E, 'SequenceExpression');
+ }
+ return m;
+ }),
+ (de.parseMaybeAssign = function (n, o, l) {
+ if (this.isContextual('yield')) {
+ if (this.inGenerator) return this.parseYield(n);
+ this.exprAllowed = !1;
+ }
+ var f = !1,
+ m = -1,
+ E = -1,
+ O = -1;
+ o
+ ? ((m = o.parenthesizedAssign),
+ (E = o.trailingComma),
+ (O = o.doubleProto),
+ (o.parenthesizedAssign = o.trailingComma = -1))
+ : ((o = new Xt()), (f = !0));
+ var Y = this.start,
+ Q = this.startLoc;
+ (this.type === c.parenL || this.type === c.name) &&
+ ((this.potentialArrowAt = this.start),
+ (this.potentialArrowInForAwait = n === 'await'));
+ var Te = this.parseMaybeConditional(n, o);
+ if ((l && (Te = l.call(this, Te, Y, Q)), this.type.isAssign)) {
+ var xe = this.startNodeAt(Y, Q);
+ return (
+ (xe.operator = this.value),
+ this.type === c.eq && (Te = this.toAssignable(Te, !1, o)),
+ f ||
+ (o.parenthesizedAssign = o.trailingComma = o.doubleProto = -1),
+ o.shorthandAssign >= Te.start && (o.shorthandAssign = -1),
+ this.type === c.eq
+ ? this.checkLValPattern(Te)
+ : this.checkLValSimple(Te),
+ (xe.left = Te),
+ this.next(),
+ (xe.right = this.parseMaybeAssign(n)),
+ O > -1 && (o.doubleProto = O),
+ this.finishNode(xe, 'AssignmentExpression')
+ );
+ } else f && this.checkExpressionErrors(o, !0);
+ return (
+ m > -1 && (o.parenthesizedAssign = m),
+ E > -1 && (o.trailingComma = E),
+ Te
+ );
+ }),
+ (de.parseMaybeConditional = function (n, o) {
+ var l = this.start,
+ f = this.startLoc,
+ m = this.parseExprOps(n, o);
+ if (this.checkExpressionErrors(o)) return m;
+ if (this.eat(c.question)) {
+ var E = this.startNodeAt(l, f);
+ return (
+ (E.test = m),
+ (E.consequent = this.parseMaybeAssign()),
+ this.expect(c.colon),
+ (E.alternate = this.parseMaybeAssign(n)),
+ this.finishNode(E, 'ConditionalExpression')
+ );
+ }
+ return m;
+ }),
+ (de.parseExprOps = function (n, o) {
+ var l = this.start,
+ f = this.startLoc,
+ m = this.parseMaybeUnary(o, !1, !1, n);
+ return this.checkExpressionErrors(o) ||
+ (m.start === l && m.type === 'ArrowFunctionExpression')
+ ? m
+ : this.parseExprOp(m, l, f, -1, n);
+ }),
+ (de.parseExprOp = function (n, o, l, f, m) {
+ var E = this.type.binop;
+ if (E != null && (!m || this.type !== c._in) && E > f) {
+ var O = this.type === c.logicalOR || this.type === c.logicalAND,
+ Y = this.type === c.coalesce;
+ Y && (E = c.logicalAND.binop);
+ var Q = this.value;
+ this.next();
+ var Te = this.start,
+ xe = this.startLoc,
+ Ze = this.parseExprOp(
+ this.parseMaybeUnary(null, !1, !1, m),
+ Te,
+ xe,
+ E,
+ m
+ ),
+ Lt = this.buildBinary(o, l, n, Ze, Q, O || Y);
+ return (
+ ((O && this.type === c.coalesce) ||
+ (Y &&
+ (this.type === c.logicalOR || this.type === c.logicalAND))) &&
+ this.raiseRecoverable(
+ this.start,
+ 'Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses'
+ ),
+ this.parseExprOp(Lt, o, l, f, m)
+ );
+ }
+ return n;
+ }),
+ (de.buildBinary = function (n, o, l, f, m, E) {
+ f.type === 'PrivateIdentifier' &&
+ this.raise(
+ f.start,
+ 'Private identifier can only be left side of binary expression'
+ );
+ var O = this.startNodeAt(n, o);
+ return (
+ (O.left = l),
+ (O.operator = m),
+ (O.right = f),
+ this.finishNode(O, E ? 'LogicalExpression' : 'BinaryExpression')
+ );
+ }),
+ (de.parseMaybeUnary = function (n, o, l, f) {
+ var m = this.start,
+ E = this.startLoc,
+ O;
+ if (this.isContextual('await') && this.canAwait)
+ (O = this.parseAwait(f)), (o = !0);
+ else if (this.type.prefix) {
+ var Y = this.startNode(),
+ Q = this.type === c.incDec;
+ (Y.operator = this.value),
+ (Y.prefix = !0),
+ this.next(),
+ (Y.argument = this.parseMaybeUnary(null, !0, Q, f)),
+ this.checkExpressionErrors(n, !0),
+ Q
+ ? this.checkLValSimple(Y.argument)
+ : this.strict && Y.operator === 'delete' && Ms(Y.argument)
+ ? this.raiseRecoverable(
+ Y.start,
+ 'Deleting local variable in strict mode'
+ )
+ : Y.operator === 'delete' && gs(Y.argument)
+ ? this.raiseRecoverable(
+ Y.start,
+ 'Private fields can not be deleted'
+ )
+ : (o = !0),
+ (O = this.finishNode(
+ Y,
+ Q ? 'UpdateExpression' : 'UnaryExpression'
+ ));
+ } else if (!o && this.type === c.privateId)
+ (f || this.privateNameStack.length === 0) &&
+ this.options.checkPrivateFields &&
+ this.unexpected(),
+ (O = this.parsePrivateIdent()),
+ this.type !== c._in && this.unexpected();
+ else {
+ if (
+ ((O = this.parseExprSubscripts(n, f)),
+ this.checkExpressionErrors(n))
+ )
+ return O;
+ for (; this.type.postfix && !this.canInsertSemicolon(); ) {
+ var Te = this.startNodeAt(m, E);
+ (Te.operator = this.value),
+ (Te.prefix = !1),
+ (Te.argument = O),
+ this.checkLValSimple(O),
+ this.next(),
+ (O = this.finishNode(Te, 'UpdateExpression'));
+ }
+ }
+ if (!l && this.eat(c.starstar))
+ if (o) this.unexpected(this.lastTokStart);
+ else
+ return this.buildBinary(
+ m,
+ E,
+ O,
+ this.parseMaybeUnary(null, !1, !1, f),
+ '**',
+ !1
+ );
+ else return O;
+ });
+ function Ms(n) {
+ return (
+ n.type === 'Identifier' ||
+ (n.type === 'ParenthesizedExpression' && Ms(n.expression))
+ );
+ }
+ function gs(n) {
+ return (
+ (n.type === 'MemberExpression' &&
+ n.property.type === 'PrivateIdentifier') ||
+ (n.type === 'ChainExpression' && gs(n.expression)) ||
+ (n.type === 'ParenthesizedExpression' && gs(n.expression))
+ );
+ }
+ (de.parseExprSubscripts = function (n, o) {
+ var l = this.start,
+ f = this.startLoc,
+ m = this.parseExprAtom(n, o);
+ if (
+ m.type === 'ArrowFunctionExpression' &&
+ this.input.slice(this.lastTokStart, this.lastTokEnd) !== ')'
+ )
+ return m;
+ var E = this.parseSubscripts(m, l, f, !1, o);
+ return (
+ n &&
+ E.type === 'MemberExpression' &&
+ (n.parenthesizedAssign >= E.start && (n.parenthesizedAssign = -1),
+ n.parenthesizedBind >= E.start && (n.parenthesizedBind = -1),
+ n.trailingComma >= E.start && (n.trailingComma = -1)),
+ E
+ );
+ }),
+ (de.parseSubscripts = function (n, o, l, f, m) {
+ for (
+ var E =
+ this.options.ecmaVersion >= 8 &&
+ n.type === 'Identifier' &&
+ n.name === 'async' &&
+ this.lastTokEnd === n.end &&
+ !this.canInsertSemicolon() &&
+ n.end - n.start === 5 &&
+ this.potentialArrowAt === n.start,
+ O = !1;
+ ;
+
+ ) {
+ var Y = this.parseSubscript(n, o, l, f, E, O, m);
+ if (
+ (Y.optional && (O = !0),
+ Y === n || Y.type === 'ArrowFunctionExpression')
+ ) {
+ if (O) {
+ var Q = this.startNodeAt(o, l);
+ (Q.expression = Y), (Y = this.finishNode(Q, 'ChainExpression'));
+ }
+ return Y;
+ }
+ n = Y;
+ }
+ }),
+ (de.shouldParseAsyncArrow = function () {
+ return !this.canInsertSemicolon() && this.eat(c.arrow);
+ }),
+ (de.parseSubscriptAsyncArrow = function (n, o, l, f) {
+ return this.parseArrowExpression(this.startNodeAt(n, o), l, !0, f);
+ }),
+ (de.parseSubscript = function (n, o, l, f, m, E, O) {
+ var Y = this.options.ecmaVersion >= 11,
+ Q = Y && this.eat(c.questionDot);
+ f &&
+ Q &&
+ this.raise(
+ this.lastTokStart,
+ 'Optional chaining cannot appear in the callee of new expressions'
+ );
+ var Te = this.eat(c.bracketL);
+ if (
+ Te ||
+ (Q && this.type !== c.parenL && this.type !== c.backQuote) ||
+ this.eat(c.dot)
+ ) {
+ var xe = this.startNodeAt(o, l);
+ (xe.object = n),
+ Te
+ ? ((xe.property = this.parseExpression()),
+ this.expect(c.bracketR))
+ : this.type === c.privateId && n.type !== 'Super'
+ ? (xe.property = this.parsePrivateIdent())
+ : (xe.property = this.parseIdent(
+ this.options.allowReserved !== 'never'
+ )),
+ (xe.computed = !!Te),
+ Y && (xe.optional = Q),
+ (n = this.finishNode(xe, 'MemberExpression'));
+ } else if (!f && this.eat(c.parenL)) {
+ var Ze = new Xt(),
+ Lt = this.yieldPos,
+ Ri = this.awaitPos,
+ Ys = this.awaitIdentPos;
+ (this.yieldPos = 0), (this.awaitPos = 0), (this.awaitIdentPos = 0);
+ var gr = this.parseExprList(
+ c.parenR,
+ this.options.ecmaVersion >= 8,
+ !1,
+ Ze
+ );
+ if (m && !Q && this.shouldParseAsyncArrow())
+ return (
+ this.checkPatternErrors(Ze, !1),
+ this.checkYieldAwaitInDefaultParams(),
+ this.awaitIdentPos > 0 &&
+ this.raise(
+ this.awaitIdentPos,
+ "Cannot use 'await' as identifier inside an async function"
+ ),
+ (this.yieldPos = Lt),
+ (this.awaitPos = Ri),
+ (this.awaitIdentPos = Ys),
+ this.parseSubscriptAsyncArrow(o, l, gr, O)
+ );
+ this.checkExpressionErrors(Ze, !0),
+ (this.yieldPos = Lt || this.yieldPos),
+ (this.awaitPos = Ri || this.awaitPos),
+ (this.awaitIdentPos = Ys || this.awaitIdentPos);
+ var Js = this.startNodeAt(o, l);
+ (Js.callee = n),
+ (Js.arguments = gr),
+ Y && (Js.optional = Q),
+ (n = this.finishNode(Js, 'CallExpression'));
+ } else if (this.type === c.backQuote) {
+ (Q || E) &&
+ this.raise(
+ this.start,
+ 'Optional chaining cannot appear in the tag of tagged template expressions'
+ );
+ var Qs = this.startNodeAt(o, l);
+ (Qs.tag = n),
+ (Qs.quasi = this.parseTemplate({isTagged: !0})),
+ (n = this.finishNode(Qs, 'TaggedTemplateExpression'));
+ }
+ return n;
+ }),
+ (de.parseExprAtom = function (n, o, l) {
+ this.type === c.slash && this.readRegexp();
+ var f,
+ m = this.potentialArrowAt === this.start;
+ switch (this.type) {
+ case c._super:
+ return (
+ this.allowSuper ||
+ this.raise(this.start, "'super' keyword outside a method"),
+ (f = this.startNode()),
+ this.next(),
+ this.type === c.parenL &&
+ !this.allowDirectSuper &&
+ this.raise(
+ f.start,
+ 'super() call outside constructor of a subclass'
+ ),
+ this.type !== c.dot &&
+ this.type !== c.bracketL &&
+ this.type !== c.parenL &&
+ this.unexpected(),
+ this.finishNode(f, 'Super')
+ );
+ case c._this:
+ return (
+ (f = this.startNode()),
+ this.next(),
+ this.finishNode(f, 'ThisExpression')
+ );
+ case c.name:
+ var E = this.start,
+ O = this.startLoc,
+ Y = this.containsEsc,
+ Q = this.parseIdent(!1);
+ if (
+ this.options.ecmaVersion >= 8 &&
+ !Y &&
+ Q.name === 'async' &&
+ !this.canInsertSemicolon() &&
+ this.eat(c._function)
+ )
+ return (
+ this.overrideContext(Ue.f_expr),
+ this.parseFunction(this.startNodeAt(E, O), 0, !1, !0, o)
+ );
+ if (m && !this.canInsertSemicolon()) {
+ if (this.eat(c.arrow))
+ return this.parseArrowExpression(
+ this.startNodeAt(E, O),
+ [Q],
+ !1,
+ o
+ );
+ if (
+ this.options.ecmaVersion >= 8 &&
+ Q.name === 'async' &&
+ this.type === c.name &&
+ !Y &&
+ (!this.potentialArrowInForAwait ||
+ this.value !== 'of' ||
+ this.containsEsc)
+ )
+ return (
+ (Q = this.parseIdent(!1)),
+ (this.canInsertSemicolon() || !this.eat(c.arrow)) &&
+ this.unexpected(),
+ this.parseArrowExpression(
+ this.startNodeAt(E, O),
+ [Q],
+ !0,
+ o
+ )
+ );
+ }
+ return Q;
+ case c.regexp:
+ var Te = this.value;
+ return (
+ (f = this.parseLiteral(Te.value)),
+ (f.regex = {pattern: Te.pattern, flags: Te.flags}),
+ f
+ );
+ case c.num:
+ case c.string:
+ return this.parseLiteral(this.value);
+ case c._null:
+ case c._true:
+ case c._false:
+ return (
+ (f = this.startNode()),
+ (f.value =
+ this.type === c._null ? null : this.type === c._true),
+ (f.raw = this.type.keyword),
+ this.next(),
+ this.finishNode(f, 'Literal')
+ );
+ case c.parenL:
+ var xe = this.start,
+ Ze = this.parseParenAndDistinguishExpression(m, o);
+ return (
+ n &&
+ (n.parenthesizedAssign < 0 &&
+ !this.isSimpleAssignTarget(Ze) &&
+ (n.parenthesizedAssign = xe),
+ n.parenthesizedBind < 0 && (n.parenthesizedBind = xe)),
+ Ze
+ );
+ case c.bracketL:
+ return (
+ (f = this.startNode()),
+ this.next(),
+ (f.elements = this.parseExprList(c.bracketR, !0, !0, n)),
+ this.finishNode(f, 'ArrayExpression')
+ );
+ case c.braceL:
+ return this.overrideContext(Ue.b_expr), this.parseObj(!1, n);
+ case c._function:
+ return (
+ (f = this.startNode()), this.next(), this.parseFunction(f, 0)
+ );
+ case c._class:
+ return this.parseClass(this.startNode(), !1);
+ case c._new:
+ return this.parseNew();
+ case c.backQuote:
+ return this.parseTemplate();
+ case c._import:
+ return this.options.ecmaVersion >= 11
+ ? this.parseExprImport(l)
+ : this.unexpected();
+ default:
+ return this.parseExprAtomDefault();
+ }
+ }),
+ (de.parseExprAtomDefault = function () {
+ this.unexpected();
+ }),
+ (de.parseExprImport = function (n) {
+ var o = this.startNode();
+ if (
+ (this.containsEsc &&
+ this.raiseRecoverable(
+ this.start,
+ 'Escape sequence in keyword import'
+ ),
+ this.next(),
+ this.type === c.parenL && !n)
+ )
+ return this.parseDynamicImport(o);
+ if (this.type === c.dot) {
+ var l = this.startNodeAt(o.start, o.loc && o.loc.start);
+ return (
+ (l.name = 'import'),
+ (o.meta = this.finishNode(l, 'Identifier')),
+ this.parseImportMeta(o)
+ );
+ } else this.unexpected();
+ }),
+ (de.parseDynamicImport = function (n) {
+ if (
+ (this.next(),
+ (n.source = this.parseMaybeAssign()),
+ this.options.ecmaVersion >= 16)
+ )
+ this.eat(c.parenR)
+ ? (n.options = null)
+ : (this.expect(c.comma),
+ this.afterTrailingComma(c.parenR)
+ ? (n.options = null)
+ : ((n.options = this.parseMaybeAssign()),
+ this.eat(c.parenR) ||
+ (this.expect(c.comma),
+ this.afterTrailingComma(c.parenR) || this.unexpected())));
+ else if (!this.eat(c.parenR)) {
+ var o = this.start;
+ this.eat(c.comma) && this.eat(c.parenR)
+ ? this.raiseRecoverable(
+ o,
+ 'Trailing comma is not allowed in import()'
+ )
+ : this.unexpected(o);
+ }
+ return this.finishNode(n, 'ImportExpression');
+ }),
+ (de.parseImportMeta = function (n) {
+ this.next();
+ var o = this.containsEsc;
+ return (
+ (n.property = this.parseIdent(!0)),
+ n.property.name !== 'meta' &&
+ this.raiseRecoverable(
+ n.property.start,
+ "The only valid meta property for import is 'import.meta'"
+ ),
+ o &&
+ this.raiseRecoverable(
+ n.start,
+ "'import.meta' must not contain escaped characters"
+ ),
+ this.options.sourceType !== 'module' &&
+ !this.options.allowImportExportEverywhere &&
+ this.raiseRecoverable(
+ n.start,
+ "Cannot use 'import.meta' outside a module"
+ ),
+ this.finishNode(n, 'MetaProperty')
+ );
+ }),
+ (de.parseLiteral = function (n) {
+ var o = this.startNode();
+ return (
+ (o.value = n),
+ (o.raw = this.input.slice(this.start, this.end)),
+ o.raw.charCodeAt(o.raw.length - 1) === 110 &&
+ (o.bigint =
+ o.value != null
+ ? o.value.toString()
+ : o.raw.slice(0, -1).replace(/_/g, '')),
+ this.next(),
+ this.finishNode(o, 'Literal')
+ );
+ }),
+ (de.parseParenExpression = function () {
+ this.expect(c.parenL);
+ var n = this.parseExpression();
+ return this.expect(c.parenR), n;
+ }),
+ (de.shouldParseArrow = function (n) {
+ return !this.canInsertSemicolon();
+ }),
+ (de.parseParenAndDistinguishExpression = function (n, o) {
+ var l = this.start,
+ f = this.startLoc,
+ m,
+ E = this.options.ecmaVersion >= 8;
+ if (this.options.ecmaVersion >= 6) {
+ this.next();
+ var O = this.start,
+ Y = this.startLoc,
+ Q = [],
+ Te = !0,
+ xe = !1,
+ Ze = new Xt(),
+ Lt = this.yieldPos,
+ Ri = this.awaitPos,
+ Ys;
+ for (this.yieldPos = 0, this.awaitPos = 0; this.type !== c.parenR; )
+ if (
+ (Te ? (Te = !1) : this.expect(c.comma),
+ E && this.afterTrailingComma(c.parenR, !0))
+ ) {
+ xe = !0;
+ break;
+ } else if (this.type === c.ellipsis) {
+ (Ys = this.start),
+ Q.push(this.parseParenItem(this.parseRestBinding())),
+ this.type === c.comma &&
+ this.raiseRecoverable(
+ this.start,
+ 'Comma is not permitted after the rest element'
+ );
+ break;
+ } else Q.push(this.parseMaybeAssign(!1, Ze, this.parseParenItem));
+ var gr = this.lastTokEnd,
+ Js = this.lastTokEndLoc;
+ if (
+ (this.expect(c.parenR),
+ n && this.shouldParseArrow(Q) && this.eat(c.arrow))
+ )
+ return (
+ this.checkPatternErrors(Ze, !1),
+ this.checkYieldAwaitInDefaultParams(),
+ (this.yieldPos = Lt),
+ (this.awaitPos = Ri),
+ this.parseParenArrowList(l, f, Q, o)
+ );
+ (!Q.length || xe) && this.unexpected(this.lastTokStart),
+ Ys && this.unexpected(Ys),
+ this.checkExpressionErrors(Ze, !0),
+ (this.yieldPos = Lt || this.yieldPos),
+ (this.awaitPos = Ri || this.awaitPos),
+ Q.length > 1
+ ? ((m = this.startNodeAt(O, Y)),
+ (m.expressions = Q),
+ this.finishNodeAt(m, 'SequenceExpression', gr, Js))
+ : (m = Q[0]);
+ } else m = this.parseParenExpression();
+ if (this.options.preserveParens) {
+ var Qs = this.startNodeAt(l, f);
+ return (
+ (Qs.expression = m),
+ this.finishNode(Qs, 'ParenthesizedExpression')
+ );
+ } else return m;
+ }),
+ (de.parseParenItem = function (n) {
+ return n;
+ }),
+ (de.parseParenArrowList = function (n, o, l, f) {
+ return this.parseArrowExpression(this.startNodeAt(n, o), l, !1, f);
+ });
+ var Ci = [];
+ (de.parseNew = function () {
+ this.containsEsc &&
+ this.raiseRecoverable(this.start, 'Escape sequence in keyword new');
+ var n = this.startNode();
+ if (
+ (this.next(), this.options.ecmaVersion >= 6 && this.type === c.dot)
+ ) {
+ var o = this.startNodeAt(n.start, n.loc && n.loc.start);
+ (o.name = 'new'),
+ (n.meta = this.finishNode(o, 'Identifier')),
+ this.next();
+ var l = this.containsEsc;
+ return (
+ (n.property = this.parseIdent(!0)),
+ n.property.name !== 'target' &&
+ this.raiseRecoverable(
+ n.property.start,
+ "The only valid meta property for new is 'new.target'"
+ ),
+ l &&
+ this.raiseRecoverable(
+ n.start,
+ "'new.target' must not contain escaped characters"
+ ),
+ this.allowNewDotTarget ||
+ this.raiseRecoverable(
+ n.start,
+ "'new.target' can only be used in functions and class static block"
+ ),
+ this.finishNode(n, 'MetaProperty')
+ );
+ }
+ var f = this.start,
+ m = this.startLoc;
+ return (
+ (n.callee = this.parseSubscripts(
+ this.parseExprAtom(null, !1, !0),
+ f,
+ m,
+ !0,
+ !1
+ )),
+ this.eat(c.parenL)
+ ? (n.arguments = this.parseExprList(
+ c.parenR,
+ this.options.ecmaVersion >= 8,
+ !1
+ ))
+ : (n.arguments = Ci),
+ this.finishNode(n, 'NewExpression')
+ );
+ }),
+ (de.parseTemplateElement = function (n) {
+ var o = n.isTagged,
+ l = this.startNode();
+ return (
+ this.type === c.invalidTemplate
+ ? (o ||
+ this.raiseRecoverable(
+ this.start,
+ 'Bad escape sequence in untagged template literal'
+ ),
+ (l.value = {
+ raw: this.value.replace(
+ /\r\n?/g,
+ `
+`
+ ),
+ cooked: null,
+ }))
+ : (l.value = {
+ raw: this.input.slice(this.start, this.end).replace(
+ /\r\n?/g,
+ `
+`
+ ),
+ cooked: this.value,
+ }),
+ this.next(),
+ (l.tail = this.type === c.backQuote),
+ this.finishNode(l, 'TemplateElement')
+ );
+ }),
+ (de.parseTemplate = function (n) {
+ n === void 0 && (n = {});
+ var o = n.isTagged;
+ o === void 0 && (o = !1);
+ var l = this.startNode();
+ this.next(), (l.expressions = []);
+ var f = this.parseTemplateElement({isTagged: o});
+ for (l.quasis = [f]; !f.tail; )
+ this.type === c.eof &&
+ this.raise(this.pos, 'Unterminated template literal'),
+ this.expect(c.dollarBraceL),
+ l.expressions.push(this.parseExpression()),
+ this.expect(c.braceR),
+ l.quasis.push((f = this.parseTemplateElement({isTagged: o})));
+ return this.next(), this.finishNode(l, 'TemplateLiteral');
+ }),
+ (de.isAsyncProp = function (n) {
+ return (
+ !n.computed &&
+ n.key.type === 'Identifier' &&
+ n.key.name === 'async' &&
+ (this.type === c.name ||
+ this.type === c.num ||
+ this.type === c.string ||
+ this.type === c.bracketL ||
+ this.type.keyword ||
+ (this.options.ecmaVersion >= 9 && this.type === c.star)) &&
+ !R.test(this.input.slice(this.lastTokEnd, this.start))
+ );
+ }),
+ (de.parseObj = function (n, o) {
+ var l = this.startNode(),
+ f = !0,
+ m = {};
+ for (l.properties = [], this.next(); !this.eat(c.braceR); ) {
+ if (f) f = !1;
+ else if (
+ (this.expect(c.comma),
+ this.options.ecmaVersion >= 5 &&
+ this.afterTrailingComma(c.braceR))
+ )
+ break;
+ var E = this.parseProperty(n, o);
+ n || this.checkPropClash(E, m, o), l.properties.push(E);
+ }
+ return this.finishNode(l, n ? 'ObjectPattern' : 'ObjectExpression');
+ }),
+ (de.parseProperty = function (n, o) {
+ var l = this.startNode(),
+ f,
+ m,
+ E,
+ O;
+ if (this.options.ecmaVersion >= 9 && this.eat(c.ellipsis))
+ return n
+ ? ((l.argument = this.parseIdent(!1)),
+ this.type === c.comma &&
+ this.raiseRecoverable(
+ this.start,
+ 'Comma is not permitted after the rest element'
+ ),
+ this.finishNode(l, 'RestElement'))
+ : ((l.argument = this.parseMaybeAssign(!1, o)),
+ this.type === c.comma &&
+ o &&
+ o.trailingComma < 0 &&
+ (o.trailingComma = this.start),
+ this.finishNode(l, 'SpreadElement'));
+ this.options.ecmaVersion >= 6 &&
+ ((l.method = !1),
+ (l.shorthand = !1),
+ (n || o) && ((E = this.start), (O = this.startLoc)),
+ n || (f = this.eat(c.star)));
+ var Y = this.containsEsc;
+ return (
+ this.parsePropertyName(l),
+ !n &&
+ !Y &&
+ this.options.ecmaVersion >= 8 &&
+ !f &&
+ this.isAsyncProp(l)
+ ? ((m = !0),
+ (f = this.options.ecmaVersion >= 9 && this.eat(c.star)),
+ this.parsePropertyName(l))
+ : (m = !1),
+ this.parsePropertyValue(l, n, f, m, E, O, o, Y),
+ this.finishNode(l, 'Property')
+ );
+ }),
+ (de.parseGetterSetter = function (n) {
+ var o = n.key.name;
+ this.parsePropertyName(n),
+ (n.value = this.parseMethod(!1)),
+ (n.kind = o);
+ var l = n.kind === 'get' ? 0 : 1;
+ if (n.value.params.length !== l) {
+ var f = n.value.start;
+ n.kind === 'get'
+ ? this.raiseRecoverable(f, 'getter should have no params')
+ : this.raiseRecoverable(
+ f,
+ 'setter should have exactly one param'
+ );
+ } else
+ n.kind === 'set' &&
+ n.value.params[0].type === 'RestElement' &&
+ this.raiseRecoverable(
+ n.value.params[0].start,
+ 'Setter cannot use rest params'
+ );
+ }),
+ (de.parsePropertyValue = function (n, o, l, f, m, E, O, Y) {
+ (l || f) && this.type === c.colon && this.unexpected(),
+ this.eat(c.colon)
+ ? ((n.value = o
+ ? this.parseMaybeDefault(this.start, this.startLoc)
+ : this.parseMaybeAssign(!1, O)),
+ (n.kind = 'init'))
+ : this.options.ecmaVersion >= 6 && this.type === c.parenL
+ ? (o && this.unexpected(),
+ (n.method = !0),
+ (n.value = this.parseMethod(l, f)),
+ (n.kind = 'init'))
+ : !o &&
+ !Y &&
+ this.options.ecmaVersion >= 5 &&
+ !n.computed &&
+ n.key.type === 'Identifier' &&
+ (n.key.name === 'get' || n.key.name === 'set') &&
+ this.type !== c.comma &&
+ this.type !== c.braceR &&
+ this.type !== c.eq
+ ? ((l || f) && this.unexpected(), this.parseGetterSetter(n))
+ : this.options.ecmaVersion >= 6 &&
+ !n.computed &&
+ n.key.type === 'Identifier'
+ ? ((l || f) && this.unexpected(),
+ this.checkUnreserved(n.key),
+ n.key.name === 'await' &&
+ !this.awaitIdentPos &&
+ (this.awaitIdentPos = m),
+ o
+ ? (n.value = this.parseMaybeDefault(
+ m,
+ E,
+ this.copyNode(n.key)
+ ))
+ : this.type === c.eq && O
+ ? (O.shorthandAssign < 0 && (O.shorthandAssign = this.start),
+ (n.value = this.parseMaybeDefault(
+ m,
+ E,
+ this.copyNode(n.key)
+ )))
+ : (n.value = this.copyNode(n.key)),
+ (n.kind = 'init'),
+ (n.shorthand = !0))
+ : this.unexpected();
+ }),
+ (de.parsePropertyName = function (n) {
+ if (this.options.ecmaVersion >= 6) {
+ if (this.eat(c.bracketL))
+ return (
+ (n.computed = !0),
+ (n.key = this.parseMaybeAssign()),
+ this.expect(c.bracketR),
+ n.key
+ );
+ n.computed = !1;
+ }
+ return (n.key =
+ this.type === c.num || this.type === c.string
+ ? this.parseExprAtom()
+ : this.parseIdent(this.options.allowReserved !== 'never'));
+ }),
+ (de.initFunction = function (n) {
+ (n.id = null),
+ this.options.ecmaVersion >= 6 && (n.generator = n.expression = !1),
+ this.options.ecmaVersion >= 8 && (n.async = !1);
+ }),
+ (de.parseMethod = function (n, o, l) {
+ var f = this.startNode(),
+ m = this.yieldPos,
+ E = this.awaitPos,
+ O = this.awaitIdentPos;
+ return (
+ this.initFunction(f),
+ this.options.ecmaVersion >= 6 && (f.generator = n),
+ this.options.ecmaVersion >= 8 && (f.async = !!o),
+ (this.yieldPos = 0),
+ (this.awaitPos = 0),
+ (this.awaitIdentPos = 0),
+ this.enterScope(ut(o, f.generator) | Ee | (l ? Le : 0)),
+ this.expect(c.parenL),
+ (f.params = this.parseBindingList(
+ c.parenR,
+ !1,
+ this.options.ecmaVersion >= 8
+ )),
+ this.checkYieldAwaitInDefaultParams(),
+ this.parseFunctionBody(f, !1, !0, !1),
+ (this.yieldPos = m),
+ (this.awaitPos = E),
+ (this.awaitIdentPos = O),
+ this.finishNode(f, 'FunctionExpression')
+ );
+ }),
+ (de.parseArrowExpression = function (n, o, l, f) {
+ var m = this.yieldPos,
+ E = this.awaitPos,
+ O = this.awaitIdentPos;
+ return (
+ this.enterScope(ut(l, !1) | he),
+ this.initFunction(n),
+ this.options.ecmaVersion >= 8 && (n.async = !!l),
+ (this.yieldPos = 0),
+ (this.awaitPos = 0),
+ (this.awaitIdentPos = 0),
+ (n.params = this.toAssignableList(o, !0)),
+ this.parseFunctionBody(n, !0, !1, f),
+ (this.yieldPos = m),
+ (this.awaitPos = E),
+ (this.awaitIdentPos = O),
+ this.finishNode(n, 'ArrowFunctionExpression')
+ );
+ }),
+ (de.parseFunctionBody = function (n, o, l, f) {
+ var m = o && this.type !== c.braceL,
+ E = this.strict,
+ O = !1;
+ if (m)
+ (n.body = this.parseMaybeAssign(f)),
+ (n.expression = !0),
+ this.checkParams(n, !1);
+ else {
+ var Y =
+ this.options.ecmaVersion >= 7 &&
+ !this.isSimpleParamList(n.params);
+ (!E || Y) &&
+ ((O = this.strictDirective(this.end)),
+ O &&
+ Y &&
+ this.raiseRecoverable(
+ n.start,
+ "Illegal 'use strict' directive in function with non-simple parameter list"
+ ));
+ var Q = this.labels;
+ (this.labels = []),
+ O && (this.strict = !0),
+ this.checkParams(
+ n,
+ !E && !O && !o && !l && this.isSimpleParamList(n.params)
+ ),
+ this.strict && n.id && this.checkLValSimple(n.id, Dn),
+ (n.body = this.parseBlock(!1, void 0, O && !E)),
+ (n.expression = !1),
+ this.adaptDirectivePrologue(n.body.body),
+ (this.labels = Q);
+ }
+ this.exitScope();
+ }),
+ (de.isSimpleParamList = function (n) {
+ for (var o = 0, l = n; o < l.length; o += 1) {
+ var f = l[o];
+ if (f.type !== 'Identifier') return !1;
+ }
+ return !0;
+ }),
+ (de.checkParams = function (n, o) {
+ for (
+ var l = Object.create(null), f = 0, m = n.params;
+ f < m.length;
+ f += 1
+ ) {
+ var E = m[f];
+ this.checkLValInnerPattern(E, bt, o ? null : l);
+ }
+ }),
+ (de.parseExprList = function (n, o, l, f) {
+ for (var m = [], E = !0; !this.eat(n); ) {
+ if (E) E = !1;
+ else if ((this.expect(c.comma), o && this.afterTrailingComma(n)))
+ break;
+ var O = void 0;
+ l && this.type === c.comma
+ ? (O = null)
+ : this.type === c.ellipsis
+ ? ((O = this.parseSpread(f)),
+ f &&
+ this.type === c.comma &&
+ f.trailingComma < 0 &&
+ (f.trailingComma = this.start))
+ : (O = this.parseMaybeAssign(!1, f)),
+ m.push(O);
+ }
+ return m;
+ }),
+ (de.checkUnreserved = function (n) {
+ var o = n.start,
+ l = n.end,
+ f = n.name;
+ if (
+ (this.inGenerator &&
+ f === 'yield' &&
+ this.raiseRecoverable(
+ o,
+ "Cannot use 'yield' as identifier inside a generator"
+ ),
+ this.inAsync &&
+ f === 'await' &&
+ this.raiseRecoverable(
+ o,
+ "Cannot use 'await' as identifier inside an async function"
+ ),
+ !(this.currentThisScope().flags & Ke) &&
+ f === 'arguments' &&
+ this.raiseRecoverable(
+ o,
+ "Cannot use 'arguments' in class field initializer"
+ ),
+ this.inClassStaticBlock &&
+ (f === 'arguments' || f === 'await') &&
+ this.raise(
+ o,
+ 'Cannot use ' + f + ' in class static initialization block'
+ ),
+ this.keywords.test(f) &&
+ this.raise(o, "Unexpected keyword '" + f + "'"),
+ !(
+ this.options.ecmaVersion < 6 &&
+ this.input.slice(o, l).indexOf('\\') !== -1
+ ))
+ ) {
+ var m = this.strict ? this.reservedWordsStrict : this.reservedWords;
+ m.test(f) &&
+ (!this.inAsync &&
+ f === 'await' &&
+ this.raiseRecoverable(
+ o,
+ "Cannot use keyword 'await' outside an async function"
+ ),
+ this.raiseRecoverable(o, "The keyword '" + f + "' is reserved"));
+ }
+ }),
+ (de.parseIdent = function (n) {
+ var o = this.parseIdentNode();
+ return (
+ this.next(!!n),
+ this.finishNode(o, 'Identifier'),
+ n ||
+ (this.checkUnreserved(o),
+ o.name === 'await' &&
+ !this.awaitIdentPos &&
+ (this.awaitIdentPos = o.start)),
+ o
+ );
+ }),
+ (de.parseIdentNode = function () {
+ var n = this.startNode();
+ return (
+ this.type === c.name
+ ? (n.name = this.value)
+ : this.type.keyword
+ ? ((n.name = this.type.keyword),
+ (n.name === 'class' || n.name === 'function') &&
+ (this.lastTokEnd !== this.lastTokStart + 1 ||
+ this.input.charCodeAt(this.lastTokStart) !== 46) &&
+ this.context.pop(),
+ (this.type = c.name))
+ : this.unexpected(),
+ n
+ );
+ }),
+ (de.parsePrivateIdent = function () {
+ var n = this.startNode();
+ return (
+ this.type === c.privateId
+ ? (n.name = this.value)
+ : this.unexpected(),
+ this.next(),
+ this.finishNode(n, 'PrivateIdentifier'),
+ this.options.checkPrivateFields &&
+ (this.privateNameStack.length === 0
+ ? this.raise(
+ n.start,
+ "Private field '#" +
+ n.name +
+ "' must be declared in an enclosing class"
+ )
+ : this.privateNameStack[
+ this.privateNameStack.length - 1
+ ].used.push(n)),
+ n
+ );
+ }),
+ (de.parseYield = function (n) {
+ this.yieldPos || (this.yieldPos = this.start);
+ var o = this.startNode();
+ return (
+ this.next(),
+ this.type === c.semi ||
+ this.canInsertSemicolon() ||
+ (this.type !== c.star && !this.type.startsExpr)
+ ? ((o.delegate = !1), (o.argument = null))
+ : ((o.delegate = this.eat(c.star)),
+ (o.argument = this.parseMaybeAssign(n))),
+ this.finishNode(o, 'YieldExpression')
+ );
+ }),
+ (de.parseAwait = function (n) {
+ this.awaitPos || (this.awaitPos = this.start);
+ var o = this.startNode();
+ return (
+ this.next(),
+ (o.argument = this.parseMaybeUnary(null, !0, !1, n)),
+ this.finishNode(o, 'AwaitExpression')
+ );
+ });
+ var ts = Ge.prototype;
+ (ts.raise = function (n, o) {
+ var l = $t(this.input, n);
+ (o += ' (' + l.line + ':' + l.column + ')'),
+ this.sourceFile && (o += ' in ' + this.sourceFile);
+ var f = new SyntaxError(o);
+ throw ((f.pos = n), (f.loc = l), (f.raisedAt = this.pos), f);
+ }),
+ (ts.raiseRecoverable = ts.raise),
+ (ts.curPosition = function () {
+ if (this.options.locations)
+ return new ct(this.curLine, this.pos - this.lineStart);
+ });
+ var rn = Ge.prototype,
+ wi = function (o) {
+ (this.flags = o),
+ (this.var = []),
+ (this.lexical = []),
+ (this.functions = []);
+ };
+ (rn.enterScope = function (n) {
+ this.scopeStack.push(new wi(n));
+ }),
+ (rn.exitScope = function () {
+ this.scopeStack.pop();
+ }),
+ (rn.treatFunctionsAsVarInScope = function (n) {
+ return n.flags & J || (!this.inModule && n.flags & G);
+ }),
+ (rn.declareName = function (n, o, l) {
+ var f = !1;
+ if (o === yt) {
+ var m = this.currentScope();
+ (f =
+ m.lexical.indexOf(n) > -1 ||
+ m.functions.indexOf(n) > -1 ||
+ m.var.indexOf(n) > -1),
+ m.lexical.push(n),
+ this.inModule && m.flags & G && delete this.undefinedExports[n];
+ } else if (o === bn) {
+ var E = this.currentScope();
+ E.lexical.push(n);
+ } else if (o === vt) {
+ var O = this.currentScope();
+ this.treatFunctionsAsVar
+ ? (f = O.lexical.indexOf(n) > -1)
+ : (f = O.lexical.indexOf(n) > -1 || O.var.indexOf(n) > -1),
+ O.functions.push(n);
+ } else
+ for (var Y = this.scopeStack.length - 1; Y >= 0; --Y) {
+ var Q = this.scopeStack[Y];
+ if (
+ (Q.lexical.indexOf(n) > -1 &&
+ !(Q.flags & Ie && Q.lexical[0] === n)) ||
+ (!this.treatFunctionsAsVarInScope(Q) &&
+ Q.functions.indexOf(n) > -1)
+ ) {
+ f = !0;
+ break;
+ }
+ if (
+ (Q.var.push(n),
+ this.inModule && Q.flags & G && delete this.undefinedExports[n],
+ Q.flags & Ke)
+ )
+ break;
+ }
+ f &&
+ this.raiseRecoverable(
+ l,
+ "Identifier '" + n + "' has already been declared"
+ );
+ }),
+ (rn.checkLocalExport = function (n) {
+ this.scopeStack[0].lexical.indexOf(n.name) === -1 &&
+ this.scopeStack[0].var.indexOf(n.name) === -1 &&
+ (this.undefinedExports[n.name] = n);
+ }),
+ (rn.currentScope = function () {
+ return this.scopeStack[this.scopeStack.length - 1];
+ }),
+ (rn.currentVarScope = function () {
+ for (var n = this.scopeStack.length - 1; ; n--) {
+ var o = this.scopeStack[n];
+ if (o.flags & (Ke | We | Xe)) return o;
+ }
+ }),
+ (rn.currentThisScope = function () {
+ for (var n = this.scopeStack.length - 1; ; n--) {
+ var o = this.scopeStack[n];
+ if (o.flags & (Ke | We | Xe) && !(o.flags & he)) return o;
+ }
+ });
+ var Fn = function (o, l, f) {
+ (this.type = ''),
+ (this.start = l),
+ (this.end = 0),
+ o.options.locations && (this.loc = new wt(o, f)),
+ o.options.directSourceFile &&
+ (this.sourceFile = o.options.directSourceFile),
+ o.options.ranges && (this.range = [l, 0]);
+ },
+ Bn = Ge.prototype;
+ (Bn.startNode = function () {
+ return new Fn(this, this.start, this.startLoc);
+ }),
+ (Bn.startNodeAt = function (n, o) {
+ return new Fn(this, n, o);
+ });
+ function Fs(n, o, l, f) {
+ return (
+ (n.type = o),
+ (n.end = l),
+ this.options.locations && (n.loc.end = f),
+ this.options.ranges && (n.range[1] = l),
+ n
+ );
+ }
+ (Bn.finishNode = function (n, o) {
+ return Fs.call(this, n, o, this.lastTokEnd, this.lastTokEndLoc);
+ }),
+ (Bn.finishNodeAt = function (n, o, l, f) {
+ return Fs.call(this, n, o, l, f);
+ }),
+ (Bn.copyNode = function (n) {
+ var o = new Fn(this, n.start, this.startLoc);
+ for (var l in n) o[l] = n[l];
+ return o;
+ });
+ var Si =
+ 'Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz',
+ Bs =
+ 'ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS',
+ Vs = Bs + ' Extended_Pictographic',
+ js = Vs,
+ $s = js + ' EBase EComp EMod EPres ExtPict',
+ qs = $s,
+ Ii = qs,
+ Ei = {9: Bs, 10: Vs, 11: js, 12: $s, 13: qs, 14: Ii},
+ Ai =
+ 'Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji',
+ Pi = {9: '', 10: '', 11: '', 12: '', 13: '', 14: Ai},
+ Ks =
+ 'Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu',
+ Us =
+ 'Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb',
+ Hs =
+ Us +
+ ' Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd',
+ Ws =
+ Hs +
+ ' Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho',
+ Gs =
+ Ws +
+ ' Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi',
+ zs =
+ Gs +
+ ' Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith',
+ jo = zs + ' ' + Si,
+ $o = {9: Us, 10: Hs, 11: Ws, 12: Gs, 13: zs, 14: jo},
+ mr = {};
+ function qo(n) {
+ var o = (mr[n] = {
+ binary: tt(Ei[n] + ' ' + Ks),
+ binaryOfStrings: tt(Pi[n]),
+ nonBinary: {General_Category: tt(Ks), Script: tt($o[n])},
+ });
+ (o.nonBinary.Script_Extensions = o.nonBinary.Script),
+ (o.nonBinary.gc = o.nonBinary.General_Category),
+ (o.nonBinary.sc = o.nonBinary.Script),
+ (o.nonBinary.scx = o.nonBinary.Script_Extensions);
+ }
+ for (var Ni = 0, yr = [9, 10, 11, 12, 13, 14]; Ni < yr.length; Ni += 1) {
+ var Ko = yr[Ni];
+ qo(Ko);
+ }
+ var le = Ge.prototype,
+ Xs = function (o, l) {
+ (this.parent = o), (this.base = l || this);
+ };
+ (Xs.prototype.separatedFrom = function (o) {
+ for (var l = this; l; l = l.parent)
+ for (var f = o; f; f = f.parent)
+ if (l.base === f.base && l !== f) return !0;
+ return !1;
+ }),
+ (Xs.prototype.sibling = function () {
+ return new Xs(this.parent, this.base);
+ });
+ var on = function (o) {
+ (this.parser = o),
+ (this.validFlags =
+ 'gim' +
+ (o.options.ecmaVersion >= 6 ? 'uy' : '') +
+ (o.options.ecmaVersion >= 9 ? 's' : '') +
+ (o.options.ecmaVersion >= 13 ? 'd' : '') +
+ (o.options.ecmaVersion >= 15 ? 'v' : '')),
+ (this.unicodeProperties =
+ mr[o.options.ecmaVersion >= 14 ? 14 : o.options.ecmaVersion]),
+ (this.source = ''),
+ (this.flags = ''),
+ (this.start = 0),
+ (this.switchU = !1),
+ (this.switchV = !1),
+ (this.switchN = !1),
+ (this.pos = 0),
+ (this.lastIntValue = 0),
+ (this.lastStringValue = ''),
+ (this.lastAssertionIsQuantifiable = !1),
+ (this.numCapturingParens = 0),
+ (this.maxBackReference = 0),
+ (this.groupNames = Object.create(null)),
+ (this.backReferenceNames = []),
+ (this.branchID = null);
+ };
+ (on.prototype.reset = function (o, l, f) {
+ var m = f.indexOf('v') !== -1,
+ E = f.indexOf('u') !== -1;
+ (this.start = o | 0),
+ (this.source = l + ''),
+ (this.flags = f),
+ m && this.parser.options.ecmaVersion >= 15
+ ? ((this.switchU = !0), (this.switchV = !0), (this.switchN = !0))
+ : ((this.switchU = E && this.parser.options.ecmaVersion >= 6),
+ (this.switchV = !1),
+ (this.switchN = E && this.parser.options.ecmaVersion >= 9));
+ }),
+ (on.prototype.raise = function (o) {
+ this.parser.raiseRecoverable(
+ this.start,
+ 'Invalid regular expression: /' + this.source + '/: ' + o
+ );
+ }),
+ (on.prototype.at = function (o, l) {
+ l === void 0 && (l = !1);
+ var f = this.source,
+ m = f.length;
+ if (o >= m) return -1;
+ var E = f.charCodeAt(o);
+ if (!(l || this.switchU) || E <= 55295 || E >= 57344 || o + 1 >= m)
+ return E;
+ var O = f.charCodeAt(o + 1);
+ return O >= 56320 && O <= 57343 ? (E << 10) + O - 56613888 : E;
+ }),
+ (on.prototype.nextIndex = function (o, l) {
+ l === void 0 && (l = !1);
+ var f = this.source,
+ m = f.length;
+ if (o >= m) return m;
+ var E = f.charCodeAt(o),
+ O;
+ return !(l || this.switchU) ||
+ E <= 55295 ||
+ E >= 57344 ||
+ o + 1 >= m ||
+ (O = f.charCodeAt(o + 1)) < 56320 ||
+ O > 57343
+ ? o + 1
+ : o + 2;
+ }),
+ (on.prototype.current = function (o) {
+ return o === void 0 && (o = !1), this.at(this.pos, o);
+ }),
+ (on.prototype.lookahead = function (o) {
+ return (
+ o === void 0 && (o = !1), this.at(this.nextIndex(this.pos, o), o)
+ );
+ }),
+ (on.prototype.advance = function (o) {
+ o === void 0 && (o = !1), (this.pos = this.nextIndex(this.pos, o));
+ }),
+ (on.prototype.eat = function (o, l) {
+ return (
+ l === void 0 && (l = !1),
+ this.current(l) === o ? (this.advance(l), !0) : !1
+ );
+ }),
+ (on.prototype.eatChars = function (o, l) {
+ l === void 0 && (l = !1);
+ for (var f = this.pos, m = 0, E = o; m < E.length; m += 1) {
+ var O = E[m],
+ Y = this.at(f, l);
+ if (Y === -1 || Y !== O) return !1;
+ f = this.nextIndex(f, l);
+ }
+ return (this.pos = f), !0;
+ }),
+ (le.validateRegExpFlags = function (n) {
+ for (
+ var o = n.validFlags, l = n.flags, f = !1, m = !1, E = 0;
+ E < l.length;
+ E++
+ ) {
+ var O = l.charAt(E);
+ o.indexOf(O) === -1 &&
+ this.raise(n.start, 'Invalid regular expression flag'),
+ l.indexOf(O, E + 1) > -1 &&
+ this.raise(n.start, 'Duplicate regular expression flag'),
+ O === 'u' && (f = !0),
+ O === 'v' && (m = !0);
+ }
+ this.options.ecmaVersion >= 15 &&
+ f &&
+ m &&
+ this.raise(n.start, 'Invalid regular expression flag');
+ });
+ function Uo(n) {
+ for (var o in n) return !0;
+ return !1;
+ }
+ (le.validateRegExpPattern = function (n) {
+ this.regexp_pattern(n),
+ !n.switchN &&
+ this.options.ecmaVersion >= 9 &&
+ Uo(n.groupNames) &&
+ ((n.switchN = !0), this.regexp_pattern(n));
+ }),
+ (le.regexp_pattern = function (n) {
+ (n.pos = 0),
+ (n.lastIntValue = 0),
+ (n.lastStringValue = ''),
+ (n.lastAssertionIsQuantifiable = !1),
+ (n.numCapturingParens = 0),
+ (n.maxBackReference = 0),
+ (n.groupNames = Object.create(null)),
+ (n.backReferenceNames.length = 0),
+ (n.branchID = null),
+ this.regexp_disjunction(n),
+ n.pos !== n.source.length &&
+ (n.eat(41) && n.raise("Unmatched ')'"),
+ (n.eat(93) || n.eat(125)) && n.raise('Lone quantifier brackets')),
+ n.maxBackReference > n.numCapturingParens &&
+ n.raise('Invalid escape');
+ for (var o = 0, l = n.backReferenceNames; o < l.length; o += 1) {
+ var f = l[o];
+ n.groupNames[f] || n.raise('Invalid named capture referenced');
+ }
+ }),
+ (le.regexp_disjunction = function (n) {
+ var o = this.options.ecmaVersion >= 16;
+ for (
+ o && (n.branchID = new Xs(n.branchID, null)),
+ this.regexp_alternative(n);
+ n.eat(124);
+
+ )
+ o && (n.branchID = n.branchID.sibling()),
+ this.regexp_alternative(n);
+ o && (n.branchID = n.branchID.parent),
+ this.regexp_eatQuantifier(n, !0) && n.raise('Nothing to repeat'),
+ n.eat(123) && n.raise('Lone quantifier brackets');
+ }),
+ (le.regexp_alternative = function (n) {
+ for (; n.pos < n.source.length && this.regexp_eatTerm(n); );
+ }),
+ (le.regexp_eatTerm = function (n) {
+ return this.regexp_eatAssertion(n)
+ ? (n.lastAssertionIsQuantifiable &&
+ this.regexp_eatQuantifier(n) &&
+ n.switchU &&
+ n.raise('Invalid quantifier'),
+ !0)
+ : (
+ n.switchU
+ ? this.regexp_eatAtom(n)
+ : this.regexp_eatExtendedAtom(n)
+ )
+ ? (this.regexp_eatQuantifier(n), !0)
+ : !1;
+ }),
+ (le.regexp_eatAssertion = function (n) {
+ var o = n.pos;
+ if (((n.lastAssertionIsQuantifiable = !1), n.eat(94) || n.eat(36)))
+ return !0;
+ if (n.eat(92)) {
+ if (n.eat(66) || n.eat(98)) return !0;
+ n.pos = o;
+ }
+ if (n.eat(40) && n.eat(63)) {
+ var l = !1;
+ if (
+ (this.options.ecmaVersion >= 9 && (l = n.eat(60)),
+ n.eat(61) || n.eat(33))
+ )
+ return (
+ this.regexp_disjunction(n),
+ n.eat(41) || n.raise('Unterminated group'),
+ (n.lastAssertionIsQuantifiable = !l),
+ !0
+ );
+ }
+ return (n.pos = o), !1;
+ }),
+ (le.regexp_eatQuantifier = function (n, o) {
+ return (
+ o === void 0 && (o = !1),
+ this.regexp_eatQuantifierPrefix(n, o) ? (n.eat(63), !0) : !1
+ );
+ }),
+ (le.regexp_eatQuantifierPrefix = function (n, o) {
+ return (
+ n.eat(42) ||
+ n.eat(43) ||
+ n.eat(63) ||
+ this.regexp_eatBracedQuantifier(n, o)
+ );
+ }),
+ (le.regexp_eatBracedQuantifier = function (n, o) {
+ var l = n.pos;
+ if (n.eat(123)) {
+ var f = 0,
+ m = -1;
+ if (
+ this.regexp_eatDecimalDigits(n) &&
+ ((f = n.lastIntValue),
+ n.eat(44) &&
+ this.regexp_eatDecimalDigits(n) &&
+ (m = n.lastIntValue),
+ n.eat(125))
+ )
+ return (
+ m !== -1 &&
+ m < f &&
+ !o &&
+ n.raise('numbers out of order in {} quantifier'),
+ !0
+ );
+ n.switchU && !o && n.raise('Incomplete quantifier'), (n.pos = l);
+ }
+ return !1;
+ }),
+ (le.regexp_eatAtom = function (n) {
+ return (
+ this.regexp_eatPatternCharacters(n) ||
+ n.eat(46) ||
+ this.regexp_eatReverseSolidusAtomEscape(n) ||
+ this.regexp_eatCharacterClass(n) ||
+ this.regexp_eatUncapturingGroup(n) ||
+ this.regexp_eatCapturingGroup(n)
+ );
+ }),
+ (le.regexp_eatReverseSolidusAtomEscape = function (n) {
+ var o = n.pos;
+ if (n.eat(92)) {
+ if (this.regexp_eatAtomEscape(n)) return !0;
+ n.pos = o;
+ }
+ return !1;
+ }),
+ (le.regexp_eatUncapturingGroup = function (n) {
+ var o = n.pos;
+ if (n.eat(40)) {
+ if (n.eat(63)) {
+ if (this.options.ecmaVersion >= 16) {
+ var l = this.regexp_eatModifiers(n),
+ f = n.eat(45);
+ if (l || f) {
+ for (var m = 0; m < l.length; m++) {
+ var E = l.charAt(m);
+ l.indexOf(E, m + 1) > -1 &&
+ n.raise('Duplicate regular expression modifiers');
+ }
+ if (f) {
+ var O = this.regexp_eatModifiers(n);
+ !l &&
+ !O &&
+ n.current() === 58 &&
+ n.raise('Invalid regular expression modifiers');
+ for (var Y = 0; Y < O.length; Y++) {
+ var Q = O.charAt(Y);
+ (O.indexOf(Q, Y + 1) > -1 || l.indexOf(Q) > -1) &&
+ n.raise('Duplicate regular expression modifiers');
+ }
+ }
+ }
+ }
+ if (n.eat(58)) {
+ if ((this.regexp_disjunction(n), n.eat(41))) return !0;
+ n.raise('Unterminated group');
+ }
+ }
+ n.pos = o;
+ }
+ return !1;
+ }),
+ (le.regexp_eatCapturingGroup = function (n) {
+ if (n.eat(40)) {
+ if (
+ (this.options.ecmaVersion >= 9
+ ? this.regexp_groupSpecifier(n)
+ : n.current() === 63 && n.raise('Invalid group'),
+ this.regexp_disjunction(n),
+ n.eat(41))
+ )
+ return (n.numCapturingParens += 1), !0;
+ n.raise('Unterminated group');
+ }
+ return !1;
+ }),
+ (le.regexp_eatModifiers = function (n) {
+ for (var o = '', l = 0; (l = n.current()) !== -1 && Ho(l); )
+ (o += nt(l)), n.advance();
+ return o;
+ });
+ function Ho(n) {
+ return n === 105 || n === 109 || n === 115;
+ }
+ (le.regexp_eatExtendedAtom = function (n) {
+ return (
+ n.eat(46) ||
+ this.regexp_eatReverseSolidusAtomEscape(n) ||
+ this.regexp_eatCharacterClass(n) ||
+ this.regexp_eatUncapturingGroup(n) ||
+ this.regexp_eatCapturingGroup(n) ||
+ this.regexp_eatInvalidBracedQuantifier(n) ||
+ this.regexp_eatExtendedPatternCharacter(n)
+ );
+ }),
+ (le.regexp_eatInvalidBracedQuantifier = function (n) {
+ return (
+ this.regexp_eatBracedQuantifier(n, !0) &&
+ n.raise('Nothing to repeat'),
+ !1
+ );
+ }),
+ (le.regexp_eatSyntaxCharacter = function (n) {
+ var o = n.current();
+ return Tr(o) ? ((n.lastIntValue = o), n.advance(), !0) : !1;
+ });
+ function Tr(n) {
+ return (
+ n === 36 ||
+ (n >= 40 && n <= 43) ||
+ n === 46 ||
+ n === 63 ||
+ (n >= 91 && n <= 94) ||
+ (n >= 123 && n <= 125)
+ );
+ }
+ (le.regexp_eatPatternCharacters = function (n) {
+ for (var o = n.pos, l = 0; (l = n.current()) !== -1 && !Tr(l); )
+ n.advance();
+ return n.pos !== o;
+ }),
+ (le.regexp_eatExtendedPatternCharacter = function (n) {
+ var o = n.current();
+ return o !== -1 &&
+ o !== 36 &&
+ !(o >= 40 && o <= 43) &&
+ o !== 46 &&
+ o !== 63 &&
+ o !== 91 &&
+ o !== 94 &&
+ o !== 124
+ ? (n.advance(), !0)
+ : !1;
+ }),
+ (le.regexp_groupSpecifier = function (n) {
+ if (n.eat(63)) {
+ this.regexp_eatGroupName(n) || n.raise('Invalid group');
+ var o = this.options.ecmaVersion >= 16,
+ l = n.groupNames[n.lastStringValue];
+ if (l)
+ if (o)
+ for (var f = 0, m = l; f < m.length; f += 1) {
+ var E = m[f];
+ E.separatedFrom(n.branchID) ||
+ n.raise('Duplicate capture group name');
+ }
+ else n.raise('Duplicate capture group name');
+ o
+ ? (l || (n.groupNames[n.lastStringValue] = [])).push(n.branchID)
+ : (n.groupNames[n.lastStringValue] = !0);
+ }
+ }),
+ (le.regexp_eatGroupName = function (n) {
+ if (((n.lastStringValue = ''), n.eat(60))) {
+ if (this.regexp_eatRegExpIdentifierName(n) && n.eat(62)) return !0;
+ n.raise('Invalid capture group name');
+ }
+ return !1;
+ }),
+ (le.regexp_eatRegExpIdentifierName = function (n) {
+ if (
+ ((n.lastStringValue = ''), this.regexp_eatRegExpIdentifierStart(n))
+ ) {
+ for (
+ n.lastStringValue += nt(n.lastIntValue);
+ this.regexp_eatRegExpIdentifierPart(n);
+
+ )
+ n.lastStringValue += nt(n.lastIntValue);
+ return !0;
+ }
+ return !1;
+ }),
+ (le.regexp_eatRegExpIdentifierStart = function (n) {
+ var o = n.pos,
+ l = this.options.ecmaVersion >= 11,
+ f = n.current(l);
+ return (
+ n.advance(l),
+ f === 92 &&
+ this.regexp_eatRegExpUnicodeEscapeSequence(n, l) &&
+ (f = n.lastIntValue),
+ Wo(f) ? ((n.lastIntValue = f), !0) : ((n.pos = o), !1)
+ );
+ });
+ function Wo(n) {
+ return h(n, !0) || n === 36 || n === 95;
+ }
+ le.regexp_eatRegExpIdentifierPart = function (n) {
+ var o = n.pos,
+ l = this.options.ecmaVersion >= 11,
+ f = n.current(l);
+ return (
+ n.advance(l),
+ f === 92 &&
+ this.regexp_eatRegExpUnicodeEscapeSequence(n, l) &&
+ (f = n.lastIntValue),
+ Go(f) ? ((n.lastIntValue = f), !0) : ((n.pos = o), !1)
+ );
+ };
+ function Go(n) {
+ return T(n, !0) || n === 36 || n === 95 || n === 8204 || n === 8205;
+ }
+ (le.regexp_eatAtomEscape = function (n) {
+ return this.regexp_eatBackReference(n) ||
+ this.regexp_eatCharacterClassEscape(n) ||
+ this.regexp_eatCharacterEscape(n) ||
+ (n.switchN && this.regexp_eatKGroupName(n))
+ ? !0
+ : (n.switchU &&
+ (n.current() === 99 && n.raise('Invalid unicode escape'),
+ n.raise('Invalid escape')),
+ !1);
+ }),
+ (le.regexp_eatBackReference = function (n) {
+ var o = n.pos;
+ if (this.regexp_eatDecimalEscape(n)) {
+ var l = n.lastIntValue;
+ if (n.switchU)
+ return l > n.maxBackReference && (n.maxBackReference = l), !0;
+ if (l <= n.numCapturingParens) return !0;
+ n.pos = o;
+ }
+ return !1;
+ }),
+ (le.regexp_eatKGroupName = function (n) {
+ if (n.eat(107)) {
+ if (this.regexp_eatGroupName(n))
+ return n.backReferenceNames.push(n.lastStringValue), !0;
+ n.raise('Invalid named reference');
+ }
+ return !1;
+ }),
+ (le.regexp_eatCharacterEscape = function (n) {
+ return (
+ this.regexp_eatControlEscape(n) ||
+ this.regexp_eatCControlLetter(n) ||
+ this.regexp_eatZero(n) ||
+ this.regexp_eatHexEscapeSequence(n) ||
+ this.regexp_eatRegExpUnicodeEscapeSequence(n, !1) ||
+ (!n.switchU && this.regexp_eatLegacyOctalEscapeSequence(n)) ||
+ this.regexp_eatIdentityEscape(n)
+ );
+ }),
+ (le.regexp_eatCControlLetter = function (n) {
+ var o = n.pos;
+ if (n.eat(99)) {
+ if (this.regexp_eatControlLetter(n)) return !0;
+ n.pos = o;
+ }
+ return !1;
+ }),
+ (le.regexp_eatZero = function (n) {
+ return n.current() === 48 && !vr(n.lookahead())
+ ? ((n.lastIntValue = 0), n.advance(), !0)
+ : !1;
+ }),
+ (le.regexp_eatControlEscape = function (n) {
+ var o = n.current();
+ return o === 116
+ ? ((n.lastIntValue = 9), n.advance(), !0)
+ : o === 110
+ ? ((n.lastIntValue = 10), n.advance(), !0)
+ : o === 118
+ ? ((n.lastIntValue = 11), n.advance(), !0)
+ : o === 102
+ ? ((n.lastIntValue = 12), n.advance(), !0)
+ : o === 114
+ ? ((n.lastIntValue = 13), n.advance(), !0)
+ : !1;
+ }),
+ (le.regexp_eatControlLetter = function (n) {
+ var o = n.current();
+ return kr(o) ? ((n.lastIntValue = o % 32), n.advance(), !0) : !1;
+ });
+ function kr(n) {
+ return (n >= 65 && n <= 90) || (n >= 97 && n <= 122);
+ }
+ le.regexp_eatRegExpUnicodeEscapeSequence = function (n, o) {
+ o === void 0 && (o = !1);
+ var l = n.pos,
+ f = o || n.switchU;
+ if (n.eat(117)) {
+ if (this.regexp_eatFixedHexDigits(n, 4)) {
+ var m = n.lastIntValue;
+ if (f && m >= 55296 && m <= 56319) {
+ var E = n.pos;
+ if (
+ n.eat(92) &&
+ n.eat(117) &&
+ this.regexp_eatFixedHexDigits(n, 4)
+ ) {
+ var O = n.lastIntValue;
+ if (O >= 56320 && O <= 57343)
+ return (
+ (n.lastIntValue = (m - 55296) * 1024 + (O - 56320) + 65536),
+ !0
+ );
+ }
+ (n.pos = E), (n.lastIntValue = m);
+ }
+ return !0;
+ }
+ if (
+ f &&
+ n.eat(123) &&
+ this.regexp_eatHexDigits(n) &&
+ n.eat(125) &&
+ vf(n.lastIntValue)
+ )
+ return !0;
+ f && n.raise('Invalid unicode escape'), (n.pos = l);
+ }
+ return !1;
+ };
+ function vf(n) {
+ return n >= 0 && n <= 1114111;
+ }
+ (le.regexp_eatIdentityEscape = function (n) {
+ if (n.switchU)
+ return this.regexp_eatSyntaxCharacter(n)
+ ? !0
+ : n.eat(47)
+ ? ((n.lastIntValue = 47), !0)
+ : !1;
+ var o = n.current();
+ return o !== 99 && (!n.switchN || o !== 107)
+ ? ((n.lastIntValue = o), n.advance(), !0)
+ : !1;
+ }),
+ (le.regexp_eatDecimalEscape = function (n) {
+ n.lastIntValue = 0;
+ var o = n.current();
+ if (o >= 49 && o <= 57) {
+ do (n.lastIntValue = 10 * n.lastIntValue + (o - 48)), n.advance();
+ while ((o = n.current()) >= 48 && o <= 57);
+ return !0;
+ }
+ return !1;
+ });
+ var Rc = 0,
+ Vn = 1,
+ an = 2;
+ le.regexp_eatCharacterClassEscape = function (n) {
+ var o = n.current();
+ if (xf(o)) return (n.lastIntValue = -1), n.advance(), Vn;
+ var l = !1;
+ if (
+ n.switchU &&
+ this.options.ecmaVersion >= 9 &&
+ ((l = o === 80) || o === 112)
+ ) {
+ (n.lastIntValue = -1), n.advance();
+ var f;
+ if (
+ n.eat(123) &&
+ (f = this.regexp_eatUnicodePropertyValueExpression(n)) &&
+ n.eat(125)
+ )
+ return l && f === an && n.raise('Invalid property name'), f;
+ n.raise('Invalid property name');
+ }
+ return Rc;
+ };
+ function xf(n) {
+ return (
+ n === 100 ||
+ n === 68 ||
+ n === 115 ||
+ n === 83 ||
+ n === 119 ||
+ n === 87
+ );
+ }
+ (le.regexp_eatUnicodePropertyValueExpression = function (n) {
+ var o = n.pos;
+ if (this.regexp_eatUnicodePropertyName(n) && n.eat(61)) {
+ var l = n.lastStringValue;
+ if (this.regexp_eatUnicodePropertyValue(n)) {
+ var f = n.lastStringValue;
+ return this.regexp_validateUnicodePropertyNameAndValue(n, l, f), Vn;
+ }
+ }
+ if (((n.pos = o), this.regexp_eatLoneUnicodePropertyNameOrValue(n))) {
+ var m = n.lastStringValue;
+ return this.regexp_validateUnicodePropertyNameOrValue(n, m);
+ }
+ return Rc;
+ }),
+ (le.regexp_validateUnicodePropertyNameAndValue = function (n, o, l) {
+ mt(n.unicodeProperties.nonBinary, o) ||
+ n.raise('Invalid property name'),
+ n.unicodeProperties.nonBinary[o].test(l) ||
+ n.raise('Invalid property value');
+ }),
+ (le.regexp_validateUnicodePropertyNameOrValue = function (n, o) {
+ if (n.unicodeProperties.binary.test(o)) return Vn;
+ if (n.switchV && n.unicodeProperties.binaryOfStrings.test(o))
+ return an;
+ n.raise('Invalid property name');
+ }),
+ (le.regexp_eatUnicodePropertyName = function (n) {
+ var o = 0;
+ for (n.lastStringValue = ''; Lc((o = n.current())); )
+ (n.lastStringValue += nt(o)), n.advance();
+ return n.lastStringValue !== '';
+ });
+ function Lc(n) {
+ return kr(n) || n === 95;
+ }
+ le.regexp_eatUnicodePropertyValue = function (n) {
+ var o = 0;
+ for (n.lastStringValue = ''; gf((o = n.current())); )
+ (n.lastStringValue += nt(o)), n.advance();
+ return n.lastStringValue !== '';
+ };
+ function gf(n) {
+ return Lc(n) || vr(n);
+ }
+ (le.regexp_eatLoneUnicodePropertyNameOrValue = function (n) {
+ return this.regexp_eatUnicodePropertyValue(n);
+ }),
+ (le.regexp_eatCharacterClass = function (n) {
+ if (n.eat(91)) {
+ var o = n.eat(94),
+ l = this.regexp_classContents(n);
+ return (
+ n.eat(93) || n.raise('Unterminated character class'),
+ o &&
+ l === an &&
+ n.raise('Negated character class may contain strings'),
+ !0
+ );
+ }
+ return !1;
+ }),
+ (le.regexp_classContents = function (n) {
+ return n.current() === 93
+ ? Vn
+ : n.switchV
+ ? this.regexp_classSetExpression(n)
+ : (this.regexp_nonEmptyClassRanges(n), Vn);
+ }),
+ (le.regexp_nonEmptyClassRanges = function (n) {
+ for (; this.regexp_eatClassAtom(n); ) {
+ var o = n.lastIntValue;
+ if (n.eat(45) && this.regexp_eatClassAtom(n)) {
+ var l = n.lastIntValue;
+ n.switchU &&
+ (o === -1 || l === -1) &&
+ n.raise('Invalid character class'),
+ o !== -1 &&
+ l !== -1 &&
+ o > l &&
+ n.raise('Range out of order in character class');
+ }
+ }
+ }),
+ (le.regexp_eatClassAtom = function (n) {
+ var o = n.pos;
+ if (n.eat(92)) {
+ if (this.regexp_eatClassEscape(n)) return !0;
+ if (n.switchU) {
+ var l = n.current();
+ (l === 99 || Mc(l)) && n.raise('Invalid class escape'),
+ n.raise('Invalid escape');
+ }
+ n.pos = o;
+ }
+ var f = n.current();
+ return f !== 93 ? ((n.lastIntValue = f), n.advance(), !0) : !1;
+ }),
+ (le.regexp_eatClassEscape = function (n) {
+ var o = n.pos;
+ if (n.eat(98)) return (n.lastIntValue = 8), !0;
+ if (n.switchU && n.eat(45)) return (n.lastIntValue = 45), !0;
+ if (!n.switchU && n.eat(99)) {
+ if (this.regexp_eatClassControlLetter(n)) return !0;
+ n.pos = o;
+ }
+ return (
+ this.regexp_eatCharacterClassEscape(n) ||
+ this.regexp_eatCharacterEscape(n)
+ );
+ }),
+ (le.regexp_classSetExpression = function (n) {
+ var o = Vn,
+ l;
+ if (!this.regexp_eatClassSetRange(n))
+ if ((l = this.regexp_eatClassSetOperand(n))) {
+ l === an && (o = an);
+ for (var f = n.pos; n.eatChars([38, 38]); ) {
+ if (
+ n.current() !== 38 &&
+ (l = this.regexp_eatClassSetOperand(n))
+ ) {
+ l !== an && (o = Vn);
+ continue;
+ }
+ n.raise('Invalid character in character class');
+ }
+ if (f !== n.pos) return o;
+ for (; n.eatChars([45, 45]); )
+ this.regexp_eatClassSetOperand(n) ||
+ n.raise('Invalid character in character class');
+ if (f !== n.pos) return o;
+ } else n.raise('Invalid character in character class');
+ for (;;)
+ if (!this.regexp_eatClassSetRange(n)) {
+ if (((l = this.regexp_eatClassSetOperand(n)), !l)) return o;
+ l === an && (o = an);
+ }
+ }),
+ (le.regexp_eatClassSetRange = function (n) {
+ var o = n.pos;
+ if (this.regexp_eatClassSetCharacter(n)) {
+ var l = n.lastIntValue;
+ if (n.eat(45) && this.regexp_eatClassSetCharacter(n)) {
+ var f = n.lastIntValue;
+ return (
+ l !== -1 &&
+ f !== -1 &&
+ l > f &&
+ n.raise('Range out of order in character class'),
+ !0
+ );
+ }
+ n.pos = o;
+ }
+ return !1;
+ }),
+ (le.regexp_eatClassSetOperand = function (n) {
+ return this.regexp_eatClassSetCharacter(n)
+ ? Vn
+ : this.regexp_eatClassStringDisjunction(n) ||
+ this.regexp_eatNestedClass(n);
+ }),
+ (le.regexp_eatNestedClass = function (n) {
+ var o = n.pos;
+ if (n.eat(91)) {
+ var l = n.eat(94),
+ f = this.regexp_classContents(n);
+ if (n.eat(93))
+ return (
+ l &&
+ f === an &&
+ n.raise('Negated character class may contain strings'),
+ f
+ );
+ n.pos = o;
+ }
+ if (n.eat(92)) {
+ var m = this.regexp_eatCharacterClassEscape(n);
+ if (m) return m;
+ n.pos = o;
+ }
+ return null;
+ }),
+ (le.regexp_eatClassStringDisjunction = function (n) {
+ var o = n.pos;
+ if (n.eatChars([92, 113])) {
+ if (n.eat(123)) {
+ var l = this.regexp_classStringDisjunctionContents(n);
+ if (n.eat(125)) return l;
+ } else n.raise('Invalid escape');
+ n.pos = o;
+ }
+ return null;
+ }),
+ (le.regexp_classStringDisjunctionContents = function (n) {
+ for (var o = this.regexp_classString(n); n.eat(124); )
+ this.regexp_classString(n) === an && (o = an);
+ return o;
+ }),
+ (le.regexp_classString = function (n) {
+ for (var o = 0; this.regexp_eatClassSetCharacter(n); ) o++;
+ return o === 1 ? Vn : an;
+ }),
+ (le.regexp_eatClassSetCharacter = function (n) {
+ var o = n.pos;
+ if (n.eat(92))
+ return this.regexp_eatCharacterEscape(n) ||
+ this.regexp_eatClassSetReservedPunctuator(n)
+ ? !0
+ : n.eat(98)
+ ? ((n.lastIntValue = 8), !0)
+ : ((n.pos = o), !1);
+ var l = n.current();
+ return l < 0 || (l === n.lookahead() && _f(l)) || bf(l)
+ ? !1
+ : (n.advance(), (n.lastIntValue = l), !0);
+ });
+ function _f(n) {
+ return (
+ n === 33 ||
+ (n >= 35 && n <= 38) ||
+ (n >= 42 && n <= 44) ||
+ n === 46 ||
+ (n >= 58 && n <= 64) ||
+ n === 94 ||
+ n === 96 ||
+ n === 126
+ );
+ }
+ function bf(n) {
+ return (
+ n === 40 ||
+ n === 41 ||
+ n === 45 ||
+ n === 47 ||
+ (n >= 91 && n <= 93) ||
+ (n >= 123 && n <= 125)
+ );
+ }
+ le.regexp_eatClassSetReservedPunctuator = function (n) {
+ var o = n.current();
+ return Cf(o) ? ((n.lastIntValue = o), n.advance(), !0) : !1;
+ };
+ function Cf(n) {
+ return (
+ n === 33 ||
+ n === 35 ||
+ n === 37 ||
+ n === 38 ||
+ n === 44 ||
+ n === 45 ||
+ (n >= 58 && n <= 62) ||
+ n === 64 ||
+ n === 96 ||
+ n === 126
+ );
+ }
+ (le.regexp_eatClassControlLetter = function (n) {
+ var o = n.current();
+ return vr(o) || o === 95
+ ? ((n.lastIntValue = o % 32), n.advance(), !0)
+ : !1;
+ }),
+ (le.regexp_eatHexEscapeSequence = function (n) {
+ var o = n.pos;
+ if (n.eat(120)) {
+ if (this.regexp_eatFixedHexDigits(n, 2)) return !0;
+ n.switchU && n.raise('Invalid escape'), (n.pos = o);
+ }
+ return !1;
+ }),
+ (le.regexp_eatDecimalDigits = function (n) {
+ var o = n.pos,
+ l = 0;
+ for (n.lastIntValue = 0; vr((l = n.current())); )
+ (n.lastIntValue = 10 * n.lastIntValue + (l - 48)), n.advance();
+ return n.pos !== o;
+ });
+ function vr(n) {
+ return n >= 48 && n <= 57;
+ }
+ le.regexp_eatHexDigits = function (n) {
+ var o = n.pos,
+ l = 0;
+ for (n.lastIntValue = 0; Oc((l = n.current())); )
+ (n.lastIntValue = 16 * n.lastIntValue + Dc(l)), n.advance();
+ return n.pos !== o;
+ };
+ function Oc(n) {
+ return (
+ (n >= 48 && n <= 57) || (n >= 65 && n <= 70) || (n >= 97 && n <= 102)
+ );
+ }
+ function Dc(n) {
+ return n >= 65 && n <= 70
+ ? 10 + (n - 65)
+ : n >= 97 && n <= 102
+ ? 10 + (n - 97)
+ : n - 48;
+ }
+ (le.regexp_eatLegacyOctalEscapeSequence = function (n) {
+ if (this.regexp_eatOctalDigit(n)) {
+ var o = n.lastIntValue;
+ if (this.regexp_eatOctalDigit(n)) {
+ var l = n.lastIntValue;
+ o <= 3 && this.regexp_eatOctalDigit(n)
+ ? (n.lastIntValue = o * 64 + l * 8 + n.lastIntValue)
+ : (n.lastIntValue = o * 8 + l);
+ } else n.lastIntValue = o;
+ return !0;
+ }
+ return !1;
+ }),
+ (le.regexp_eatOctalDigit = function (n) {
+ var o = n.current();
+ return Mc(o)
+ ? ((n.lastIntValue = o - 48), n.advance(), !0)
+ : ((n.lastIntValue = 0), !1);
+ });
+ function Mc(n) {
+ return n >= 48 && n <= 55;
+ }
+ le.regexp_eatFixedHexDigits = function (n, o) {
+ var l = n.pos;
+ n.lastIntValue = 0;
+ for (var f = 0; f < o; ++f) {
+ var m = n.current();
+ if (!Oc(m)) return (n.pos = l), !1;
+ (n.lastIntValue = 16 * n.lastIntValue + Dc(m)), n.advance();
+ }
+ return !0;
+ };
+ var xr = function (o) {
+ (this.type = o.type),
+ (this.value = o.value),
+ (this.start = o.start),
+ (this.end = o.end),
+ o.options.locations && (this.loc = new wt(o, o.startLoc, o.endLoc)),
+ o.options.ranges && (this.range = [o.start, o.end]);
+ },
+ Ae = Ge.prototype;
+ (Ae.next = function (n) {
+ !n &&
+ this.type.keyword &&
+ this.containsEsc &&
+ this.raiseRecoverable(
+ this.start,
+ 'Escape sequence in keyword ' + this.type.keyword
+ ),
+ this.options.onToken && this.options.onToken(new xr(this)),
+ (this.lastTokEnd = this.end),
+ (this.lastTokStart = this.start),
+ (this.lastTokEndLoc = this.endLoc),
+ (this.lastTokStartLoc = this.startLoc),
+ this.nextToken();
+ }),
+ (Ae.getToken = function () {
+ return this.next(), new xr(this);
+ }),
+ typeof Symbol < 'u' &&
+ (Ae[Symbol.iterator] = function () {
+ var n = this;
+ return {
+ next: function () {
+ var o = n.getToken();
+ return {done: o.type === c.eof, value: o};
+ },
+ };
+ }),
+ (Ae.nextToken = function () {
+ var n = this.curContext();
+ if (
+ ((!n || !n.preserveSpace) && this.skipSpace(),
+ (this.start = this.pos),
+ this.options.locations && (this.startLoc = this.curPosition()),
+ this.pos >= this.input.length)
+ )
+ return this.finishToken(c.eof);
+ if (n.override) return n.override(this);
+ this.readToken(this.fullCharCodeAtPos());
+ }),
+ (Ae.readToken = function (n) {
+ return h(n, this.options.ecmaVersion >= 6) || n === 92
+ ? this.readWord()
+ : this.getTokenFromCode(n);
+ }),
+ (Ae.fullCharCodeAtPos = function () {
+ var n = this.input.charCodeAt(this.pos);
+ if (n <= 55295 || n >= 56320) return n;
+ var o = this.input.charCodeAt(this.pos + 1);
+ return o <= 56319 || o >= 57344 ? n : (n << 10) + o - 56613888;
+ }),
+ (Ae.skipBlockComment = function () {
+ var n = this.options.onComment && this.curPosition(),
+ o = this.pos,
+ l = this.input.indexOf('*/', (this.pos += 2));
+ if (
+ (l === -1 && this.raise(this.pos - 2, 'Unterminated comment'),
+ (this.pos = l + 2),
+ this.options.locations)
+ )
+ for (
+ var f = void 0, m = o;
+ (f = ie(this.input, m, this.pos)) > -1;
+
+ )
+ ++this.curLine, (m = this.lineStart = f);
+ this.options.onComment &&
+ this.options.onComment(
+ !0,
+ this.input.slice(o + 2, l),
+ o,
+ this.pos,
+ n,
+ this.curPosition()
+ );
+ }),
+ (Ae.skipLineComment = function (n) {
+ for (
+ var o = this.pos,
+ l = this.options.onComment && this.curPosition(),
+ f = this.input.charCodeAt((this.pos += n));
+ this.pos < this.input.length && !X(f);
+
+ )
+ f = this.input.charCodeAt(++this.pos);
+ this.options.onComment &&
+ this.options.onComment(
+ !1,
+ this.input.slice(o + n, this.pos),
+ o,
+ this.pos,
+ l,
+ this.curPosition()
+ );
+ }),
+ (Ae.skipSpace = function () {
+ e: for (; this.pos < this.input.length; ) {
+ var n = this.input.charCodeAt(this.pos);
+ switch (n) {
+ case 32:
+ case 160:
+ ++this.pos;
+ break;
+ case 13:
+ this.input.charCodeAt(this.pos + 1) === 10 && ++this.pos;
+ case 10:
+ case 8232:
+ case 8233:
+ ++this.pos,
+ this.options.locations &&
+ (++this.curLine, (this.lineStart = this.pos));
+ break;
+ case 47:
+ switch (this.input.charCodeAt(this.pos + 1)) {
+ case 42:
+ this.skipBlockComment();
+ break;
+ case 47:
+ this.skipLineComment(2);
+ break;
+ default:
+ break e;
+ }
+ break;
+ default:
+ if (
+ (n > 8 && n < 14) ||
+ (n >= 5760 && pe.test(String.fromCharCode(n)))
+ )
+ ++this.pos;
+ else break e;
+ }
+ }
+ }),
+ (Ae.finishToken = function (n, o) {
+ (this.end = this.pos),
+ this.options.locations && (this.endLoc = this.curPosition());
+ var l = this.type;
+ (this.type = n), (this.value = o), this.updateContext(l);
+ }),
+ (Ae.readToken_dot = function () {
+ var n = this.input.charCodeAt(this.pos + 1);
+ if (n >= 48 && n <= 57) return this.readNumber(!0);
+ var o = this.input.charCodeAt(this.pos + 2);
+ return this.options.ecmaVersion >= 6 && n === 46 && o === 46
+ ? ((this.pos += 3), this.finishToken(c.ellipsis))
+ : (++this.pos, this.finishToken(c.dot));
+ }),
+ (Ae.readToken_slash = function () {
+ var n = this.input.charCodeAt(this.pos + 1);
+ return this.exprAllowed
+ ? (++this.pos, this.readRegexp())
+ : n === 61
+ ? this.finishOp(c.assign, 2)
+ : this.finishOp(c.slash, 1);
+ }),
+ (Ae.readToken_mult_modulo_exp = function (n) {
+ var o = this.input.charCodeAt(this.pos + 1),
+ l = 1,
+ f = n === 42 ? c.star : c.modulo;
+ return (
+ this.options.ecmaVersion >= 7 &&
+ n === 42 &&
+ o === 42 &&
+ (++l,
+ (f = c.starstar),
+ (o = this.input.charCodeAt(this.pos + 2))),
+ o === 61 ? this.finishOp(c.assign, l + 1) : this.finishOp(f, l)
+ );
+ }),
+ (Ae.readToken_pipe_amp = function (n) {
+ var o = this.input.charCodeAt(this.pos + 1);
+ if (o === n) {
+ if (this.options.ecmaVersion >= 12) {
+ var l = this.input.charCodeAt(this.pos + 2);
+ if (l === 61) return this.finishOp(c.assign, 3);
+ }
+ return this.finishOp(n === 124 ? c.logicalOR : c.logicalAND, 2);
+ }
+ return o === 61
+ ? this.finishOp(c.assign, 2)
+ : this.finishOp(n === 124 ? c.bitwiseOR : c.bitwiseAND, 1);
+ }),
+ (Ae.readToken_caret = function () {
+ var n = this.input.charCodeAt(this.pos + 1);
+ return n === 61
+ ? this.finishOp(c.assign, 2)
+ : this.finishOp(c.bitwiseXOR, 1);
+ }),
+ (Ae.readToken_plus_min = function (n) {
+ var o = this.input.charCodeAt(this.pos + 1);
+ return o === n
+ ? o === 45 &&
+ !this.inModule &&
+ this.input.charCodeAt(this.pos + 2) === 62 &&
+ (this.lastTokEnd === 0 ||
+ R.test(this.input.slice(this.lastTokEnd, this.pos)))
+ ? (this.skipLineComment(3), this.skipSpace(), this.nextToken())
+ : this.finishOp(c.incDec, 2)
+ : o === 61
+ ? this.finishOp(c.assign, 2)
+ : this.finishOp(c.plusMin, 1);
+ }),
+ (Ae.readToken_lt_gt = function (n) {
+ var o = this.input.charCodeAt(this.pos + 1),
+ l = 1;
+ return o === n
+ ? ((l =
+ n === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2),
+ this.input.charCodeAt(this.pos + l) === 61
+ ? this.finishOp(c.assign, l + 1)
+ : this.finishOp(c.bitShift, l))
+ : o === 33 &&
+ n === 60 &&
+ !this.inModule &&
+ this.input.charCodeAt(this.pos + 2) === 45 &&
+ this.input.charCodeAt(this.pos + 3) === 45
+ ? (this.skipLineComment(4), this.skipSpace(), this.nextToken())
+ : (o === 61 && (l = 2), this.finishOp(c.relational, l));
+ }),
+ (Ae.readToken_eq_excl = function (n) {
+ var o = this.input.charCodeAt(this.pos + 1);
+ return o === 61
+ ? this.finishOp(
+ c.equality,
+ this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2
+ )
+ : n === 61 && o === 62 && this.options.ecmaVersion >= 6
+ ? ((this.pos += 2), this.finishToken(c.arrow))
+ : this.finishOp(n === 61 ? c.eq : c.prefix, 1);
+ }),
+ (Ae.readToken_question = function () {
+ var n = this.options.ecmaVersion;
+ if (n >= 11) {
+ var o = this.input.charCodeAt(this.pos + 1);
+ if (o === 46) {
+ var l = this.input.charCodeAt(this.pos + 2);
+ if (l < 48 || l > 57) return this.finishOp(c.questionDot, 2);
+ }
+ if (o === 63) {
+ if (n >= 12) {
+ var f = this.input.charCodeAt(this.pos + 2);
+ if (f === 61) return this.finishOp(c.assign, 3);
+ }
+ return this.finishOp(c.coalesce, 2);
+ }
+ }
+ return this.finishOp(c.question, 1);
+ }),
+ (Ae.readToken_numberSign = function () {
+ var n = this.options.ecmaVersion,
+ o = 35;
+ if (
+ n >= 13 &&
+ (++this.pos, (o = this.fullCharCodeAtPos()), h(o, !0) || o === 92)
+ )
+ return this.finishToken(c.privateId, this.readWord1());
+ this.raise(this.pos, "Unexpected character '" + nt(o) + "'");
+ }),
+ (Ae.getTokenFromCode = function (n) {
+ switch (n) {
+ case 46:
+ return this.readToken_dot();
+ case 40:
+ return ++this.pos, this.finishToken(c.parenL);
+ case 41:
+ return ++this.pos, this.finishToken(c.parenR);
+ case 59:
+ return ++this.pos, this.finishToken(c.semi);
+ case 44:
+ return ++this.pos, this.finishToken(c.comma);
+ case 91:
+ return ++this.pos, this.finishToken(c.bracketL);
+ case 93:
+ return ++this.pos, this.finishToken(c.bracketR);
+ case 123:
+ return ++this.pos, this.finishToken(c.braceL);
+ case 125:
+ return ++this.pos, this.finishToken(c.braceR);
+ case 58:
+ return ++this.pos, this.finishToken(c.colon);
+ case 96:
+ if (this.options.ecmaVersion < 6) break;
+ return ++this.pos, this.finishToken(c.backQuote);
+ case 48:
+ var o = this.input.charCodeAt(this.pos + 1);
+ if (o === 120 || o === 88) return this.readRadixNumber(16);
+ if (this.options.ecmaVersion >= 6) {
+ if (o === 111 || o === 79) return this.readRadixNumber(8);
+ if (o === 98 || o === 66) return this.readRadixNumber(2);
+ }
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ return this.readNumber(!1);
+ case 34:
+ case 39:
+ return this.readString(n);
+ case 47:
+ return this.readToken_slash();
+ case 37:
+ case 42:
+ return this.readToken_mult_modulo_exp(n);
+ case 124:
+ case 38:
+ return this.readToken_pipe_amp(n);
+ case 94:
+ return this.readToken_caret();
+ case 43:
+ case 45:
+ return this.readToken_plus_min(n);
+ case 60:
+ case 62:
+ return this.readToken_lt_gt(n);
+ case 61:
+ case 33:
+ return this.readToken_eq_excl(n);
+ case 63:
+ return this.readToken_question();
+ case 126:
+ return this.finishOp(c.prefix, 1);
+ case 35:
+ return this.readToken_numberSign();
+ }
+ this.raise(this.pos, "Unexpected character '" + nt(n) + "'");
+ }),
+ (Ae.finishOp = function (n, o) {
+ var l = this.input.slice(this.pos, this.pos + o);
+ return (this.pos += o), this.finishToken(n, l);
+ }),
+ (Ae.readRegexp = function () {
+ for (var n, o, l = this.pos; ; ) {
+ this.pos >= this.input.length &&
+ this.raise(l, 'Unterminated regular expression');
+ var f = this.input.charAt(this.pos);
+ if (
+ (R.test(f) && this.raise(l, 'Unterminated regular expression'), n)
+ )
+ n = !1;
+ else {
+ if (f === '[') o = !0;
+ else if (f === ']' && o) o = !1;
+ else if (f === '/' && !o) break;
+ n = f === '\\';
+ }
+ ++this.pos;
+ }
+ var m = this.input.slice(l, this.pos);
+ ++this.pos;
+ var E = this.pos,
+ O = this.readWord1();
+ this.containsEsc && this.unexpected(E);
+ var Y = this.regexpState || (this.regexpState = new on(this));
+ Y.reset(l, m, O),
+ this.validateRegExpFlags(Y),
+ this.validateRegExpPattern(Y);
+ var Q = null;
+ try {
+ Q = new RegExp(m, O);
+ } catch {}
+ return this.finishToken(c.regexp, {pattern: m, flags: O, value: Q});
+ }),
+ (Ae.readInt = function (n, o, l) {
+ for (
+ var f = this.options.ecmaVersion >= 12 && o === void 0,
+ m = l && this.input.charCodeAt(this.pos) === 48,
+ E = this.pos,
+ O = 0,
+ Y = 0,
+ Q = 0,
+ Te = o ?? 1 / 0;
+ Q < Te;
+ ++Q, ++this.pos
+ ) {
+ var xe = this.input.charCodeAt(this.pos),
+ Ze = void 0;
+ if (f && xe === 95) {
+ m &&
+ this.raiseRecoverable(
+ this.pos,
+ 'Numeric separator is not allowed in legacy octal numeric literals'
+ ),
+ Y === 95 &&
+ this.raiseRecoverable(
+ this.pos,
+ 'Numeric separator must be exactly one underscore'
+ ),
+ Q === 0 &&
+ this.raiseRecoverable(
+ this.pos,
+ 'Numeric separator is not allowed at the first of digits'
+ ),
+ (Y = xe);
+ continue;
+ }
+ if (
+ (xe >= 97
+ ? (Ze = xe - 97 + 10)
+ : xe >= 65
+ ? (Ze = xe - 65 + 10)
+ : xe >= 48 && xe <= 57
+ ? (Ze = xe - 48)
+ : (Ze = 1 / 0),
+ Ze >= n)
+ )
+ break;
+ (Y = xe), (O = O * n + Ze);
+ }
+ return (
+ f &&
+ Y === 95 &&
+ this.raiseRecoverable(
+ this.pos - 1,
+ 'Numeric separator is not allowed at the last of digits'
+ ),
+ this.pos === E || (o != null && this.pos - E !== o) ? null : O
+ );
+ });
+ function wf(n, o) {
+ return o ? parseInt(n, 8) : parseFloat(n.replace(/_/g, ''));
+ }
+ function Fc(n) {
+ return typeof BigInt != 'function' ? null : BigInt(n.replace(/_/g, ''));
+ }
+ (Ae.readRadixNumber = function (n) {
+ var o = this.pos;
+ this.pos += 2;
+ var l = this.readInt(n);
+ return (
+ l == null &&
+ this.raise(this.start + 2, 'Expected number in radix ' + n),
+ this.options.ecmaVersion >= 11 &&
+ this.input.charCodeAt(this.pos) === 110
+ ? ((l = Fc(this.input.slice(o, this.pos))), ++this.pos)
+ : h(this.fullCharCodeAtPos()) &&
+ this.raise(this.pos, 'Identifier directly after number'),
+ this.finishToken(c.num, l)
+ );
+ }),
+ (Ae.readNumber = function (n) {
+ var o = this.pos;
+ !n &&
+ this.readInt(10, void 0, !0) === null &&
+ this.raise(o, 'Invalid number');
+ var l = this.pos - o >= 2 && this.input.charCodeAt(o) === 48;
+ l && this.strict && this.raise(o, 'Invalid number');
+ var f = this.input.charCodeAt(this.pos);
+ if (!l && !n && this.options.ecmaVersion >= 11 && f === 110) {
+ var m = Fc(this.input.slice(o, this.pos));
+ return (
+ ++this.pos,
+ h(this.fullCharCodeAtPos()) &&
+ this.raise(this.pos, 'Identifier directly after number'),
+ this.finishToken(c.num, m)
+ );
+ }
+ l && /[89]/.test(this.input.slice(o, this.pos)) && (l = !1),
+ f === 46 &&
+ !l &&
+ (++this.pos,
+ this.readInt(10),
+ (f = this.input.charCodeAt(this.pos))),
+ (f === 69 || f === 101) &&
+ !l &&
+ ((f = this.input.charCodeAt(++this.pos)),
+ (f === 43 || f === 45) && ++this.pos,
+ this.readInt(10) === null && this.raise(o, 'Invalid number')),
+ h(this.fullCharCodeAtPos()) &&
+ this.raise(this.pos, 'Identifier directly after number');
+ var E = wf(this.input.slice(o, this.pos), l);
+ return this.finishToken(c.num, E);
+ }),
+ (Ae.readCodePoint = function () {
+ var n = this.input.charCodeAt(this.pos),
+ o;
+ if (n === 123) {
+ this.options.ecmaVersion < 6 && this.unexpected();
+ var l = ++this.pos;
+ (o = this.readHexChar(
+ this.input.indexOf('}', this.pos) - this.pos
+ )),
+ ++this.pos,
+ o > 1114111 &&
+ this.invalidStringToken(l, 'Code point out of bounds');
+ } else o = this.readHexChar(4);
+ return o;
+ }),
+ (Ae.readString = function (n) {
+ for (var o = '', l = ++this.pos; ; ) {
+ this.pos >= this.input.length &&
+ this.raise(this.start, 'Unterminated string constant');
+ var f = this.input.charCodeAt(this.pos);
+ if (f === n) break;
+ f === 92
+ ? ((o += this.input.slice(l, this.pos)),
+ (o += this.readEscapedChar(!1)),
+ (l = this.pos))
+ : f === 8232 || f === 8233
+ ? (this.options.ecmaVersion < 10 &&
+ this.raise(this.start, 'Unterminated string constant'),
+ ++this.pos,
+ this.options.locations &&
+ (this.curLine++, (this.lineStart = this.pos)))
+ : (X(f) && this.raise(this.start, 'Unterminated string constant'),
+ ++this.pos);
+ }
+ return (
+ (o += this.input.slice(l, this.pos++)),
+ this.finishToken(c.string, o)
+ );
+ });
+ var Bc = {};
+ (Ae.tryReadTemplateToken = function () {
+ this.inTemplateElement = !0;
+ try {
+ this.readTmplToken();
+ } catch (n) {
+ if (n === Bc) this.readInvalidTemplateToken();
+ else throw n;
+ }
+ this.inTemplateElement = !1;
+ }),
+ (Ae.invalidStringToken = function (n, o) {
+ if (this.inTemplateElement && this.options.ecmaVersion >= 9) throw Bc;
+ this.raise(n, o);
+ }),
+ (Ae.readTmplToken = function () {
+ for (var n = '', o = this.pos; ; ) {
+ this.pos >= this.input.length &&
+ this.raise(this.start, 'Unterminated template');
+ var l = this.input.charCodeAt(this.pos);
+ if (
+ l === 96 ||
+ (l === 36 && this.input.charCodeAt(this.pos + 1) === 123)
+ )
+ return this.pos === this.start &&
+ (this.type === c.template || this.type === c.invalidTemplate)
+ ? l === 36
+ ? ((this.pos += 2), this.finishToken(c.dollarBraceL))
+ : (++this.pos, this.finishToken(c.backQuote))
+ : ((n += this.input.slice(o, this.pos)),
+ this.finishToken(c.template, n));
+ if (l === 92)
+ (n += this.input.slice(o, this.pos)),
+ (n += this.readEscapedChar(!0)),
+ (o = this.pos);
+ else if (X(l)) {
+ switch (((n += this.input.slice(o, this.pos)), ++this.pos, l)) {
+ case 13:
+ this.input.charCodeAt(this.pos) === 10 && ++this.pos;
+ case 10:
+ n += `
+`;
+ break;
+ default:
+ n += String.fromCharCode(l);
+ break;
+ }
+ this.options.locations &&
+ (++this.curLine, (this.lineStart = this.pos)),
+ (o = this.pos);
+ } else ++this.pos;
+ }
+ }),
+ (Ae.readInvalidTemplateToken = function () {
+ for (; this.pos < this.input.length; this.pos++)
+ switch (this.input[this.pos]) {
+ case '\\':
+ ++this.pos;
+ break;
+ case '$':
+ if (this.input[this.pos + 1] !== '{') break;
+ case '`':
+ return this.finishToken(
+ c.invalidTemplate,
+ this.input.slice(this.start, this.pos)
+ );
+ case '\r':
+ this.input[this.pos + 1] ===
+ `
+` && ++this.pos;
+ case `
+`:
+ case '\u2028':
+ case '\u2029':
+ ++this.curLine, (this.lineStart = this.pos + 1);
+ break;
+ }
+ this.raise(this.start, 'Unterminated template');
+ }),
+ (Ae.readEscapedChar = function (n) {
+ var o = this.input.charCodeAt(++this.pos);
+ switch ((++this.pos, o)) {
+ case 110:
+ return `
+`;
+ case 114:
+ return '\r';
+ case 120:
+ return String.fromCharCode(this.readHexChar(2));
+ case 117:
+ return nt(this.readCodePoint());
+ case 116:
+ return ' ';
+ case 98:
+ return '\b';
+ case 118:
+ return '\v';
+ case 102:
+ return '\f';
+ case 13:
+ this.input.charCodeAt(this.pos) === 10 && ++this.pos;
+ case 10:
+ return (
+ this.options.locations &&
+ ((this.lineStart = this.pos), ++this.curLine),
+ ''
+ );
+ case 56:
+ case 57:
+ if (
+ (this.strict &&
+ this.invalidStringToken(
+ this.pos - 1,
+ 'Invalid escape sequence'
+ ),
+ n)
+ ) {
+ var l = this.pos - 1;
+ this.invalidStringToken(
+ l,
+ 'Invalid escape sequence in template string'
+ );
+ }
+ default:
+ if (o >= 48 && o <= 55) {
+ var f = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0],
+ m = parseInt(f, 8);
+ return (
+ m > 255 && ((f = f.slice(0, -1)), (m = parseInt(f, 8))),
+ (this.pos += f.length - 1),
+ (o = this.input.charCodeAt(this.pos)),
+ (f !== '0' || o === 56 || o === 57) &&
+ (this.strict || n) &&
+ this.invalidStringToken(
+ this.pos - 1 - f.length,
+ n
+ ? 'Octal literal in template string'
+ : 'Octal literal in strict mode'
+ ),
+ String.fromCharCode(m)
+ );
+ }
+ return X(o)
+ ? (this.options.locations &&
+ ((this.lineStart = this.pos), ++this.curLine),
+ '')
+ : String.fromCharCode(o);
+ }
+ }),
+ (Ae.readHexChar = function (n) {
+ var o = this.pos,
+ l = this.readInt(16, n);
+ return (
+ l === null &&
+ this.invalidStringToken(o, 'Bad character escape sequence'),
+ l
+ );
+ }),
+ (Ae.readWord1 = function () {
+ this.containsEsc = !1;
+ for (
+ var n = '', o = !0, l = this.pos, f = this.options.ecmaVersion >= 6;
+ this.pos < this.input.length;
+
+ ) {
+ var m = this.fullCharCodeAtPos();
+ if (T(m, f)) this.pos += m <= 65535 ? 1 : 2;
+ else if (m === 92) {
+ (this.containsEsc = !0), (n += this.input.slice(l, this.pos));
+ var E = this.pos;
+ this.input.charCodeAt(++this.pos) !== 117 &&
+ this.invalidStringToken(
+ this.pos,
+ 'Expecting Unicode escape sequence \\uXXXX'
+ ),
+ ++this.pos;
+ var O = this.readCodePoint();
+ (o ? h : T)(O, f) ||
+ this.invalidStringToken(E, 'Invalid Unicode escape'),
+ (n += nt(O)),
+ (l = this.pos);
+ } else break;
+ o = !1;
+ }
+ return n + this.input.slice(l, this.pos);
+ }),
+ (Ae.readWord = function () {
+ var n = this.readWord1(),
+ o = c.name;
+ return this.keywords.test(n) && (o = U[n]), this.finishToken(o, n);
+ });
+ var Vc = '8.15.0';
+ Ge.acorn = {
+ Parser: Ge,
+ version: Vc,
+ defaultOptions: Pt,
+ Position: ct,
+ SourceLocation: wt,
+ getLineInfo: $t,
+ Node: Fn,
+ TokenType: x,
+ tokTypes: c,
+ keywordTypes: U,
+ TokContext: Rt,
+ tokContexts: Ue,
+ isIdentifierChar: T,
+ isIdentifierStart: h,
+ Token: xr,
+ isNewLine: X,
+ lineBreak: R,
+ lineBreakG: W,
+ nonASCIIwhitespace: pe,
+ };
+ function Sf(n, o) {
+ return Ge.parse(n, o);
+ }
+ function If(n, o, l) {
+ return Ge.parseExpressionAt(n, o, l);
+ }
+ function Ef(n, o) {
+ return Ge.tokenizer(n, o);
+ }
+ (e.Node = Fn),
+ (e.Parser = Ge),
+ (e.Position = ct),
+ (e.SourceLocation = wt),
+ (e.TokContext = Rt),
+ (e.Token = xr),
+ (e.TokenType = x),
+ (e.defaultOptions = Pt),
+ (e.getLineInfo = $t),
+ (e.isIdentifierChar = T),
+ (e.isIdentifierStart = h),
+ (e.isNewLine = X),
+ (e.keywordTypes = U),
+ (e.lineBreak = R),
+ (e.lineBreakG = W),
+ (e.nonASCIIwhitespace = pe),
+ (e.parse = Sf),
+ (e.parseExpressionAt = If),
+ (e.tokContexts = Ue),
+ (e.tokTypes = c),
+ (e.tokenizer = Ef),
+ (e.version = Vc);
+ });
+ });
+ var df = Z((Bo, ff) => {
+ (function (e, t) {
+ typeof Bo == 'object' && typeof ff < 'u'
+ ? t(Bo, hf())
+ : typeof define == 'function' && define.amd
+ ? define(['exports', 'acorn'], t)
+ : ((e = typeof globalThis < 'u' ? globalThis : e || self),
+ t(((e.acorn = e.acorn || {}), (e.acorn.loose = {})), e.acorn));
+ })(Bo, function (e, t) {
+ 'use strict';
+ var s = '\u2716';
+ function i(p) {
+ return p.name === s;
+ }
+ function r() {}
+ var a = function (h, T) {
+ if (
+ (T === void 0 && (T = {}),
+ (this.toks = this.constructor.BaseParser.tokenizer(h, T)),
+ (this.options = this.toks.options),
+ (this.input = this.toks.input),
+ (this.tok = this.last = {type: t.tokTypes.eof, start: 0, end: 0}),
+ (this.tok.validateRegExpFlags = r),
+ (this.tok.validateRegExpPattern = r),
+ this.options.locations)
+ ) {
+ var x = this.toks.curPosition();
+ this.tok.loc = new t.SourceLocation(this.toks, x, x);
+ }
+ (this.ahead = []),
+ (this.context = []),
+ (this.curIndent = 0),
+ (this.curLineStart = 0),
+ (this.nextLineStart = this.lineEnd(this.curLineStart) + 1),
+ (this.inAsync = !1),
+ (this.inGenerator = !1),
+ (this.inFunction = !1);
+ };
+ (a.prototype.startNode = function () {
+ return new t.Node(
+ this.toks,
+ this.tok.start,
+ this.options.locations ? this.tok.loc.start : null
+ );
+ }),
+ (a.prototype.storeCurrentPos = function () {
+ return this.options.locations
+ ? [this.tok.start, this.tok.loc.start]
+ : this.tok.start;
+ }),
+ (a.prototype.startNodeAt = function (h) {
+ return this.options.locations
+ ? new t.Node(this.toks, h[0], h[1])
+ : new t.Node(this.toks, h);
+ }),
+ (a.prototype.finishNode = function (h, T) {
+ return (
+ (h.type = T),
+ (h.end = this.last.end),
+ this.options.locations && (h.loc.end = this.last.loc.end),
+ this.options.ranges && (h.range[1] = this.last.end),
+ h
+ );
+ }),
+ (a.prototype.dummyNode = function (h) {
+ var T = this.startNode();
+ return (
+ (T.type = h),
+ (T.end = T.start),
+ this.options.locations && (T.loc.end = T.loc.start),
+ this.options.ranges && (T.range[1] = T.start),
+ (this.last = {
+ type: t.tokTypes.name,
+ start: T.start,
+ end: T.start,
+ loc: T.loc,
+ }),
+ T
+ );
+ }),
+ (a.prototype.dummyIdent = function () {
+ var h = this.dummyNode('Identifier');
+ return (h.name = s), h;
+ }),
+ (a.prototype.dummyString = function () {
+ var h = this.dummyNode('Literal');
+ return (h.value = h.raw = s), h;
+ }),
+ (a.prototype.eat = function (h) {
+ return this.tok.type === h ? (this.next(), !0) : !1;
+ }),
+ (a.prototype.isContextual = function (h) {
+ return this.tok.type === t.tokTypes.name && this.tok.value === h;
+ }),
+ (a.prototype.eatContextual = function (h) {
+ return this.tok.value === h && this.eat(t.tokTypes.name);
+ }),
+ (a.prototype.canInsertSemicolon = function () {
+ return (
+ this.tok.type === t.tokTypes.eof ||
+ this.tok.type === t.tokTypes.braceR ||
+ t.lineBreak.test(this.input.slice(this.last.end, this.tok.start))
+ );
+ }),
+ (a.prototype.semicolon = function () {
+ return this.eat(t.tokTypes.semi);
+ }),
+ (a.prototype.expect = function (h) {
+ if (this.eat(h)) return !0;
+ for (var T = 1; T <= 2; T++)
+ if (this.lookAhead(T).type === h) {
+ for (var x = 0; x < T; x++) this.next();
+ return !0;
+ }
+ }),
+ (a.prototype.pushCx = function () {
+ this.context.push(this.curIndent);
+ }),
+ (a.prototype.popCx = function () {
+ this.curIndent = this.context.pop();
+ }),
+ (a.prototype.lineEnd = function (h) {
+ for (
+ ;
+ h < this.input.length && !t.isNewLine(this.input.charCodeAt(h));
+
+ )
+ ++h;
+ return h;
+ }),
+ (a.prototype.indentationAfter = function (h) {
+ for (var T = 0; ; ++h) {
+ var x = this.input.charCodeAt(h);
+ if (x === 32) ++T;
+ else if (x === 9) T += this.options.tabSize;
+ else return T;
+ }
+ }),
+ (a.prototype.closes = function (h, T, x, w) {
+ return this.tok.type === h || this.tok.type === t.tokTypes.eof
+ ? !0
+ : x !== this.curLineStart &&
+ this.curIndent < T &&
+ this.tokenStartsLine() &&
+ (!w ||
+ this.nextLineStart >= this.input.length ||
+ this.indentationAfter(this.nextLineStart) < T);
+ }),
+ (a.prototype.tokenStartsLine = function () {
+ for (var h = this.tok.start - 1; h >= this.curLineStart; --h) {
+ var T = this.input.charCodeAt(h);
+ if (T !== 9 && T !== 32) return !1;
+ }
+ return !0;
+ }),
+ (a.prototype.extend = function (h, T) {
+ this[h] = T(this[h]);
+ }),
+ (a.prototype.parse = function () {
+ return this.next(), this.parseTopLevel();
+ }),
+ (a.extend = function () {
+ for (var h = [], T = arguments.length; T--; ) h[T] = arguments[T];
+ for (var x = this, w = 0; w < h.length; w++) x = h[w](x);
+ return x;
+ }),
+ (a.parse = function (h, T) {
+ return new this(h, T).parse();
+ }),
+ (a.BaseParser = t.Parser);
+ var u = a.prototype;
+ function d(p) {
+ return (p < 14 && p > 8) || p === 32 || p === 160 || t.isNewLine(p);
+ }
+ (u.next = function () {
+ if (
+ ((this.last = this.tok),
+ this.ahead.length
+ ? (this.tok = this.ahead.shift())
+ : (this.tok = this.readToken()),
+ this.tok.start >= this.nextLineStart)
+ ) {
+ for (; this.tok.start >= this.nextLineStart; )
+ (this.curLineStart = this.nextLineStart),
+ (this.nextLineStart = this.lineEnd(this.curLineStart) + 1);
+ this.curIndent = this.indentationAfter(this.curLineStart);
+ }
+ }),
+ (u.readToken = function () {
+ for (;;)
+ try {
+ return (
+ this.toks.next(),
+ this.toks.type === t.tokTypes.dot &&
+ this.input.substr(this.toks.end, 1) === '.' &&
+ this.options.ecmaVersion >= 6 &&
+ (this.toks.end++, (this.toks.type = t.tokTypes.ellipsis)),
+ new t.Token(this.toks)
+ );
+ } catch (S) {
+ if (!(S instanceof SyntaxError)) throw S;
+ var p = S.message,
+ h = S.raisedAt,
+ T = !0;
+ if (/unterminated/i.test(p))
+ if (((h = this.lineEnd(S.pos + 1)), /string/.test(p)))
+ T = {
+ start: S.pos,
+ end: h,
+ type: t.tokTypes.string,
+ value: this.input.slice(S.pos + 1, h),
+ };
+ else if (/regular expr/i.test(p)) {
+ var x = this.input.slice(S.pos, h);
+ try {
+ x = new RegExp(x);
+ } catch {}
+ T = {start: S.pos, end: h, type: t.tokTypes.regexp, value: x};
+ } else
+ /template/.test(p)
+ ? (T = {
+ start: S.pos,
+ end: h,
+ type: t.tokTypes.template,
+ value: this.input.slice(S.pos, h),
+ })
+ : (T = !1);
+ else if (
+ /invalid (unicode|regexp|number)|expecting unicode|octal literal|is reserved|directly after number|expected number in radix|numeric separator/i.test(
+ p
+ )
+ )
+ for (; h < this.input.length && !d(this.input.charCodeAt(h)); )
+ ++h;
+ else if (/character escape|expected hexadecimal/i.test(p))
+ for (; h < this.input.length; ) {
+ var w = this.input.charCodeAt(h++);
+ if (w === 34 || w === 39 || t.isNewLine(w)) break;
+ }
+ else if (/unexpected character/i.test(p)) h++, (T = !1);
+ else if (/regular expression/i.test(p)) T = !0;
+ else throw S;
+ if (
+ (this.resetTo(h),
+ T === !0 &&
+ (T = {start: h, end: h, type: t.tokTypes.name, value: s}),
+ T)
+ )
+ return (
+ this.options.locations &&
+ (T.loc = new t.SourceLocation(
+ this.toks,
+ t.getLineInfo(this.input, T.start),
+ t.getLineInfo(this.input, T.end)
+ )),
+ T
+ );
+ }
+ }),
+ (u.resetTo = function (p) {
+ (this.toks.pos = p), (this.toks.containsEsc = !1);
+ var h = this.input.charAt(p - 1);
+ if (
+ ((this.toks.exprAllowed =
+ !h ||
+ /[[{(,;:?/*=+\-~!|&%^<>]/.test(h) ||
+ (/[enwfd]/.test(h) &&
+ /\b(case|else|return|throw|new|in|(instance|type)?of|delete|void)$/.test(
+ this.input.slice(p - 10, p)
+ ))),
+ this.options.locations)
+ ) {
+ (this.toks.curLine = 1),
+ (this.toks.lineStart = t.lineBreakG.lastIndex = 0);
+ for (var T; (T = t.lineBreakG.exec(this.input)) && T.index < p; )
+ ++this.toks.curLine,
+ (this.toks.lineStart = T.index + T[0].length);
+ }
+ }),
+ (u.lookAhead = function (p) {
+ for (; p > this.ahead.length; ) this.ahead.push(this.readToken());
+ return this.ahead[p - 1];
+ });
+ var y = a.prototype;
+ (y.parseTopLevel = function () {
+ var p = this.startNodeAt(
+ this.options.locations ? [0, t.getLineInfo(this.input, 0)] : 0
+ );
+ for (p.body = []; this.tok.type !== t.tokTypes.eof; )
+ p.body.push(this.parseStatement());
+ return (
+ this.toks.adaptDirectivePrologue(p.body),
+ (this.last = this.tok),
+ (p.sourceType =
+ this.options.sourceType === 'commonjs'
+ ? 'script'
+ : this.options.sourceType),
+ this.finishNode(p, 'Program')
+ );
+ }),
+ (y.parseStatement = function () {
+ var p = this.tok.type,
+ h = this.startNode(),
+ T;
+ switch (
+ (this.toks.isLet() && ((p = t.tokTypes._var), (T = 'let')), p)
+ ) {
+ case t.tokTypes._break:
+ case t.tokTypes._continue:
+ this.next();
+ var x = p === t.tokTypes._break;
+ return (
+ this.semicolon() || this.canInsertSemicolon()
+ ? (h.label = null)
+ : ((h.label =
+ this.tok.type === t.tokTypes.name
+ ? this.parseIdent()
+ : null),
+ this.semicolon()),
+ this.finishNode(h, x ? 'BreakStatement' : 'ContinueStatement')
+ );
+ case t.tokTypes._debugger:
+ return (
+ this.next(),
+ this.semicolon(),
+ this.finishNode(h, 'DebuggerStatement')
+ );
+ case t.tokTypes._do:
+ return (
+ this.next(),
+ (h.body = this.parseStatement()),
+ (h.test = this.eat(t.tokTypes._while)
+ ? this.parseParenExpression()
+ : this.dummyIdent()),
+ this.semicolon(),
+ this.finishNode(h, 'DoWhileStatement')
+ );
+ case t.tokTypes._for:
+ this.next();
+ var w =
+ this.options.ecmaVersion >= 9 && this.eatContextual('await');
+ if (
+ (this.pushCx(),
+ this.expect(t.tokTypes.parenL),
+ this.tok.type === t.tokTypes.semi)
+ )
+ return this.parseFor(h, null);
+ var S = this.toks.isLet(),
+ A = this.toks.isAwaitUsing(!0),
+ U = !A && this.toks.isUsing(!0);
+ if (
+ S ||
+ this.tok.type === t.tokTypes._var ||
+ this.tok.type === t.tokTypes._const ||
+ U ||
+ A
+ ) {
+ var M = S
+ ? 'let'
+ : U
+ ? 'using'
+ : A
+ ? 'await using'
+ : this.tok.value,
+ c = this.startNode();
+ return (
+ U || A
+ ? (A && this.next(), this.parseVar(c, !0, M))
+ : (c = this.parseVar(c, !0, M)),
+ c.declarations.length === 1 &&
+ (this.tok.type === t.tokTypes._in || this.isContextual('of'))
+ ? (this.options.ecmaVersion >= 9 &&
+ this.tok.type !== t.tokTypes._in &&
+ (h.await = w),
+ this.parseForIn(h, c))
+ : this.parseFor(h, c)
+ );
+ }
+ var R = this.parseExpression(!0);
+ return this.tok.type === t.tokTypes._in || this.isContextual('of')
+ ? (this.options.ecmaVersion >= 9 &&
+ this.tok.type !== t.tokTypes._in &&
+ (h.await = w),
+ this.parseForIn(h, this.toAssignable(R)))
+ : this.parseFor(h, R);
+ case t.tokTypes._function:
+ return this.next(), this.parseFunction(h, !0);
+ case t.tokTypes._if:
+ return (
+ this.next(),
+ (h.test = this.parseParenExpression()),
+ (h.consequent = this.parseStatement()),
+ (h.alternate = this.eat(t.tokTypes._else)
+ ? this.parseStatement()
+ : null),
+ this.finishNode(h, 'IfStatement')
+ );
+ case t.tokTypes._return:
+ return (
+ this.next(),
+ this.eat(t.tokTypes.semi) || this.canInsertSemicolon()
+ ? (h.argument = null)
+ : ((h.argument = this.parseExpression()), this.semicolon()),
+ this.finishNode(h, 'ReturnStatement')
+ );
+ case t.tokTypes._switch:
+ var W = this.curIndent,
+ X = this.curLineStart;
+ this.next(),
+ (h.discriminant = this.parseParenExpression()),
+ (h.cases = []),
+ this.pushCx(),
+ this.expect(t.tokTypes.braceL);
+ for (var ie; !this.closes(t.tokTypes.braceR, W, X, !0); )
+ if (
+ this.tok.type === t.tokTypes._case ||
+ this.tok.type === t.tokTypes._default
+ ) {
+ var pe = this.tok.type === t.tokTypes._case;
+ ie && this.finishNode(ie, 'SwitchCase'),
+ h.cases.push((ie = this.startNode())),
+ (ie.consequent = []),
+ this.next(),
+ pe ? (ie.test = this.parseExpression()) : (ie.test = null),
+ this.expect(t.tokTypes.colon);
+ } else
+ ie ||
+ (h.cases.push((ie = this.startNode())),
+ (ie.consequent = []),
+ (ie.test = null)),
+ ie.consequent.push(this.parseStatement());
+ return (
+ ie && this.finishNode(ie, 'SwitchCase'),
+ this.popCx(),
+ this.eat(t.tokTypes.braceR),
+ this.finishNode(h, 'SwitchStatement')
+ );
+ case t.tokTypes._throw:
+ return (
+ this.next(),
+ (h.argument = this.parseExpression()),
+ this.semicolon(),
+ this.finishNode(h, 'ThrowStatement')
+ );
+ case t.tokTypes._try:
+ if (
+ (this.next(),
+ (h.block = this.parseBlock()),
+ (h.handler = null),
+ this.tok.type === t.tokTypes._catch)
+ ) {
+ var ae = this.startNode();
+ this.next(),
+ this.eat(t.tokTypes.parenL)
+ ? ((ae.param = this.toAssignable(this.parseExprAtom(), !0)),
+ this.expect(t.tokTypes.parenR))
+ : (ae.param = null),
+ (ae.body = this.parseBlock()),
+ (h.handler = this.finishNode(ae, 'CatchClause'));
+ }
+ return (
+ (h.finalizer = this.eat(t.tokTypes._finally)
+ ? this.parseBlock()
+ : null),
+ !h.handler && !h.finalizer
+ ? h.block
+ : this.finishNode(h, 'TryStatement')
+ );
+ case t.tokTypes._var:
+ case t.tokTypes._const:
+ return this.parseVar(h, !1, T || this.tok.value);
+ case t.tokTypes._while:
+ return (
+ this.next(),
+ (h.test = this.parseParenExpression()),
+ (h.body = this.parseStatement()),
+ this.finishNode(h, 'WhileStatement')
+ );
+ case t.tokTypes._with:
+ return (
+ this.next(),
+ (h.object = this.parseParenExpression()),
+ (h.body = this.parseStatement()),
+ this.finishNode(h, 'WithStatement')
+ );
+ case t.tokTypes.braceL:
+ return this.parseBlock();
+ case t.tokTypes.semi:
+ return this.next(), this.finishNode(h, 'EmptyStatement');
+ case t.tokTypes._class:
+ return this.parseClass(!0);
+ case t.tokTypes._import:
+ if (this.options.ecmaVersion > 10) {
+ var He = this.lookAhead(1).type;
+ if (He === t.tokTypes.parenL || He === t.tokTypes.dot)
+ return (
+ (h.expression = this.parseExpression()),
+ this.semicolon(),
+ this.finishNode(h, 'ExpressionStatement')
+ );
+ }
+ return this.parseImport();
+ case t.tokTypes._export:
+ return this.parseExport();
+ default:
+ if (this.toks.isAsyncFunction())
+ return this.next(), this.next(), this.parseFunction(h, !0, !0);
+ if (this.toks.isUsing(!1)) return this.parseVar(h, !1, 'using');
+ if (this.toks.isAwaitUsing(!1))
+ return this.next(), this.parseVar(h, !1, 'await using');
+ var qe = this.parseExpression();
+ return i(qe)
+ ? (this.next(),
+ this.tok.type === t.tokTypes.eof
+ ? this.finishNode(h, 'EmptyStatement')
+ : this.parseStatement())
+ : p === t.tokTypes.name &&
+ qe.type === 'Identifier' &&
+ this.eat(t.tokTypes.colon)
+ ? ((h.body = this.parseStatement()),
+ (h.label = qe),
+ this.finishNode(h, 'LabeledStatement'))
+ : ((h.expression = qe),
+ this.semicolon(),
+ this.finishNode(h, 'ExpressionStatement'));
+ }
+ }),
+ (y.parseBlock = function () {
+ var p = this.startNode();
+ this.pushCx(), this.expect(t.tokTypes.braceL);
+ var h = this.curIndent,
+ T = this.curLineStart;
+ for (p.body = []; !this.closes(t.tokTypes.braceR, h, T, !0); )
+ p.body.push(this.parseStatement());
+ return (
+ this.popCx(),
+ this.eat(t.tokTypes.braceR),
+ this.finishNode(p, 'BlockStatement')
+ );
+ }),
+ (y.parseFor = function (p, h) {
+ return (
+ (p.init = h),
+ (p.test = p.update = null),
+ this.eat(t.tokTypes.semi) &&
+ this.tok.type !== t.tokTypes.semi &&
+ (p.test = this.parseExpression()),
+ this.eat(t.tokTypes.semi) &&
+ this.tok.type !== t.tokTypes.parenR &&
+ (p.update = this.parseExpression()),
+ this.popCx(),
+ this.expect(t.tokTypes.parenR),
+ (p.body = this.parseStatement()),
+ this.finishNode(p, 'ForStatement')
+ );
+ }),
+ (y.parseForIn = function (p, h) {
+ var T =
+ this.tok.type === t.tokTypes._in
+ ? 'ForInStatement'
+ : 'ForOfStatement';
+ return (
+ this.next(),
+ (p.left = h),
+ (p.right = this.parseExpression()),
+ this.popCx(),
+ this.expect(t.tokTypes.parenR),
+ (p.body = this.parseStatement()),
+ this.finishNode(p, T)
+ );
+ }),
+ (y.parseVar = function (p, h, T) {
+ (p.kind = T), this.next(), (p.declarations = []);
+ do {
+ var x = this.startNode();
+ (x.id =
+ this.options.ecmaVersion >= 6
+ ? this.toAssignable(this.parseExprAtom(), !0)
+ : this.parseIdent()),
+ (x.init = this.eat(t.tokTypes.eq)
+ ? this.parseMaybeAssign(h)
+ : null),
+ p.declarations.push(this.finishNode(x, 'VariableDeclarator'));
+ } while (this.eat(t.tokTypes.comma));
+ if (!p.declarations.length) {
+ var w = this.startNode();
+ (w.id = this.dummyIdent()),
+ p.declarations.push(this.finishNode(w, 'VariableDeclarator'));
+ }
+ return (
+ h || this.semicolon(), this.finishNode(p, 'VariableDeclaration')
+ );
+ }),
+ (y.parseClass = function (p) {
+ var h = this.startNode();
+ this.next(),
+ this.tok.type === t.tokTypes.name
+ ? (h.id = this.parseIdent())
+ : p === !0
+ ? (h.id = this.dummyIdent())
+ : (h.id = null),
+ (h.superClass = this.eat(t.tokTypes._extends)
+ ? this.parseExpression()
+ : null),
+ (h.body = this.startNode()),
+ (h.body.body = []),
+ this.pushCx();
+ var T = this.curIndent + 1,
+ x = this.curLineStart;
+ for (
+ this.eat(t.tokTypes.braceL),
+ this.curIndent + 1 < T &&
+ ((T = this.curIndent), (x = this.curLineStart));
+ !this.closes(t.tokTypes.braceR, T, x);
+
+ ) {
+ var w = this.parseClassElement();
+ w && h.body.body.push(w);
+ }
+ return (
+ this.popCx(),
+ this.eat(t.tokTypes.braceR) ||
+ ((this.last.end = this.tok.start),
+ this.options.locations &&
+ (this.last.loc.end = this.tok.loc.start)),
+ this.semicolon(),
+ this.finishNode(h.body, 'ClassBody'),
+ this.finishNode(h, p ? 'ClassDeclaration' : 'ClassExpression')
+ );
+ }),
+ (y.parseClassElement = function () {
+ if (this.eat(t.tokTypes.semi)) return null;
+ var p = this.options,
+ h = p.ecmaVersion,
+ T = p.locations,
+ x = this.curIndent,
+ w = this.curLineStart,
+ S = this.startNode(),
+ A = '',
+ U = !1,
+ M = !1,
+ c = 'method',
+ R = !1;
+ if (this.eatContextual('static')) {
+ if (h >= 13 && this.eat(t.tokTypes.braceL))
+ return this.parseClassStaticBlock(S), S;
+ this.isClassElementNameStart() || this.toks.type === t.tokTypes.star
+ ? (R = !0)
+ : (A = 'static');
+ }
+ if (
+ ((S.static = R),
+ !A &&
+ h >= 8 &&
+ this.eatContextual('async') &&
+ ((this.isClassElementNameStart() ||
+ this.toks.type === t.tokTypes.star) &&
+ !this.canInsertSemicolon()
+ ? (M = !0)
+ : (A = 'async')),
+ !A)
+ ) {
+ U = this.eat(t.tokTypes.star);
+ var W = this.toks.value;
+ (this.eatContextual('get') || this.eatContextual('set')) &&
+ (this.isClassElementNameStart() ? (c = W) : (A = W));
+ }
+ if (A)
+ (S.computed = !1),
+ (S.key = this.startNodeAt(
+ T
+ ? [this.toks.lastTokStart, this.toks.lastTokStartLoc]
+ : this.toks.lastTokStart
+ )),
+ (S.key.name = A),
+ this.finishNode(S.key, 'Identifier');
+ else if ((this.parseClassElementName(S), i(S.key)))
+ return (
+ i(this.parseMaybeAssign()) && this.next(),
+ this.eat(t.tokTypes.comma),
+ null
+ );
+ if (
+ h < 13 ||
+ this.toks.type === t.tokTypes.parenL ||
+ c !== 'method' ||
+ U ||
+ M
+ ) {
+ var X =
+ !S.computed &&
+ !S.static &&
+ !U &&
+ !M &&
+ c === 'method' &&
+ ((S.key.type === 'Identifier' && S.key.name === 'constructor') ||
+ (S.key.type === 'Literal' && S.key.value === 'constructor'));
+ (S.kind = X ? 'constructor' : c),
+ (S.value = this.parseMethod(U, M)),
+ this.finishNode(S, 'MethodDefinition');
+ } else {
+ if (this.eat(t.tokTypes.eq))
+ if (
+ this.curLineStart !== w &&
+ this.curIndent <= x &&
+ this.tokenStartsLine()
+ )
+ S.value = null;
+ else {
+ var ie = this.inAsync,
+ pe = this.inGenerator;
+ (this.inAsync = !1),
+ (this.inGenerator = !1),
+ (S.value = this.parseMaybeAssign()),
+ (this.inAsync = ie),
+ (this.inGenerator = pe);
+ }
+ else S.value = null;
+ this.semicolon(), this.finishNode(S, 'PropertyDefinition');
+ }
+ return S;
+ }),
+ (y.parseClassStaticBlock = function (p) {
+ var h = this.curIndent,
+ T = this.curLineStart;
+ for (
+ p.body = [], this.pushCx();
+ !this.closes(t.tokTypes.braceR, h, T, !0);
+
+ )
+ p.body.push(this.parseStatement());
+ return (
+ this.popCx(),
+ this.eat(t.tokTypes.braceR),
+ this.finishNode(p, 'StaticBlock')
+ );
+ }),
+ (y.isClassElementNameStart = function () {
+ return this.toks.isClassElementNameStart();
+ }),
+ (y.parseClassElementName = function (p) {
+ this.toks.type === t.tokTypes.privateId
+ ? ((p.computed = !1), (p.key = this.parsePrivateIdent()))
+ : this.parsePropertyName(p);
+ }),
+ (y.parseFunction = function (p, h, T) {
+ var x = this.inAsync,
+ w = this.inGenerator,
+ S = this.inFunction;
+ return (
+ this.initFunction(p),
+ this.options.ecmaVersion >= 6 &&
+ (p.generator = this.eat(t.tokTypes.star)),
+ this.options.ecmaVersion >= 8 && (p.async = !!T),
+ this.tok.type === t.tokTypes.name
+ ? (p.id = this.parseIdent())
+ : h === !0 && (p.id = this.dummyIdent()),
+ (this.inAsync = p.async),
+ (this.inGenerator = p.generator),
+ (this.inFunction = !0),
+ (p.params = this.parseFunctionParams()),
+ (p.body = this.parseBlock()),
+ this.toks.adaptDirectivePrologue(p.body.body),
+ (this.inAsync = x),
+ (this.inGenerator = w),
+ (this.inFunction = S),
+ this.finishNode(p, h ? 'FunctionDeclaration' : 'FunctionExpression')
+ );
+ }),
+ (y.parseExport = function () {
+ var p = this.startNode();
+ if ((this.next(), this.eat(t.tokTypes.star)))
+ return (
+ this.options.ecmaVersion >= 11 &&
+ (this.eatContextual('as')
+ ? (p.exported = this.parseExprAtom())
+ : (p.exported = null)),
+ (p.source = this.eatContextual('from')
+ ? this.parseExprAtom()
+ : this.dummyString()),
+ this.options.ecmaVersion >= 16 &&
+ (p.attributes = this.parseWithClause()),
+ this.semicolon(),
+ this.finishNode(p, 'ExportAllDeclaration')
+ );
+ if (this.eat(t.tokTypes._default)) {
+ var h;
+ if (
+ this.tok.type === t.tokTypes._function ||
+ (h = this.toks.isAsyncFunction())
+ ) {
+ var T = this.startNode();
+ this.next(),
+ h && this.next(),
+ (p.declaration = this.parseFunction(T, 'nullableID', h));
+ } else
+ this.tok.type === t.tokTypes._class
+ ? (p.declaration = this.parseClass('nullableID'))
+ : ((p.declaration = this.parseMaybeAssign()), this.semicolon());
+ return this.finishNode(p, 'ExportDefaultDeclaration');
+ }
+ return (
+ this.tok.type.keyword ||
+ this.toks.isLet() ||
+ this.toks.isAsyncFunction()
+ ? ((p.declaration = this.parseStatement()),
+ (p.specifiers = []),
+ (p.source = null))
+ : ((p.declaration = null),
+ (p.specifiers = this.parseExportSpecifierList()),
+ (p.source = this.eatContextual('from')
+ ? this.parseExprAtom()
+ : null),
+ this.options.ecmaVersion >= 16 &&
+ (p.attributes = this.parseWithClause()),
+ this.semicolon()),
+ this.finishNode(p, 'ExportNamedDeclaration')
+ );
+ }),
+ (y.parseImport = function () {
+ var p = this.startNode();
+ if ((this.next(), this.tok.type === t.tokTypes.string))
+ (p.specifiers = []), (p.source = this.parseExprAtom());
+ else {
+ var h;
+ this.tok.type === t.tokTypes.name &&
+ this.tok.value !== 'from' &&
+ ((h = this.startNode()),
+ (h.local = this.parseIdent()),
+ this.finishNode(h, 'ImportDefaultSpecifier'),
+ this.eat(t.tokTypes.comma)),
+ (p.specifiers = this.parseImportSpecifiers()),
+ (p.source =
+ this.eatContextual('from') &&
+ this.tok.type === t.tokTypes.string
+ ? this.parseExprAtom()
+ : this.dummyString()),
+ h && p.specifiers.unshift(h);
+ }
+ return (
+ this.options.ecmaVersion >= 16 &&
+ (p.attributes = this.parseWithClause()),
+ this.semicolon(),
+ this.finishNode(p, 'ImportDeclaration')
+ );
+ }),
+ (y.parseImportSpecifiers = function () {
+ var p = [];
+ if (this.tok.type === t.tokTypes.star) {
+ var h = this.startNode();
+ this.next(),
+ (h.local = this.eatContextual('as')
+ ? this.parseIdent()
+ : this.dummyIdent()),
+ p.push(this.finishNode(h, 'ImportNamespaceSpecifier'));
+ } else {
+ var T = this.curIndent,
+ x = this.curLineStart,
+ w = this.nextLineStart;
+ for (
+ this.pushCx(),
+ this.eat(t.tokTypes.braceL),
+ this.curLineStart > w && (w = this.curLineStart);
+ !this.closes(
+ t.tokTypes.braceR,
+ T + (this.curLineStart <= w ? 1 : 0),
+ x
+ );
+
+ ) {
+ var S = this.startNode();
+ if (this.eat(t.tokTypes.star))
+ (S.local = this.eatContextual('as')
+ ? this.parseModuleExportName()
+ : this.dummyIdent()),
+ this.finishNode(S, 'ImportNamespaceSpecifier');
+ else {
+ if (
+ this.isContextual('from') ||
+ ((S.imported = this.parseModuleExportName()), i(S.imported))
+ )
+ break;
+ (S.local = this.eatContextual('as')
+ ? this.parseModuleExportName()
+ : S.imported),
+ this.finishNode(S, 'ImportSpecifier');
+ }
+ p.push(S), this.eat(t.tokTypes.comma);
+ }
+ this.eat(t.tokTypes.braceR), this.popCx();
+ }
+ return p;
+ }),
+ (y.parseWithClause = function () {
+ var p = [];
+ if (!this.eat(t.tokTypes._with)) return p;
+ var h = this.curIndent,
+ T = this.curLineStart,
+ x = this.nextLineStart;
+ for (
+ this.pushCx(),
+ this.eat(t.tokTypes.braceL),
+ this.curLineStart > x && (x = this.curLineStart);
+ !this.closes(
+ t.tokTypes.braceR,
+ h + (this.curLineStart <= x ? 1 : 0),
+ T
+ );
+
+ ) {
+ var w = this.startNode();
+ if (
+ ((w.key =
+ this.tok.type === t.tokTypes.string
+ ? this.parseExprAtom()
+ : this.parseIdent()),
+ this.eat(t.tokTypes.colon))
+ )
+ this.tok.type === t.tokTypes.string
+ ? (w.value = this.parseExprAtom())
+ : (w.value = this.dummyString());
+ else {
+ if (i(w.key)) break;
+ if (this.tok.type === t.tokTypes.string)
+ w.value = this.parseExprAtom();
+ else break;
+ }
+ p.push(this.finishNode(w, 'ImportAttribute')),
+ this.eat(t.tokTypes.comma);
+ }
+ return this.eat(t.tokTypes.braceR), this.popCx(), p;
+ }),
+ (y.parseExportSpecifierList = function () {
+ var p = [],
+ h = this.curIndent,
+ T = this.curLineStart,
+ x = this.nextLineStart;
+ for (
+ this.pushCx(),
+ this.eat(t.tokTypes.braceL),
+ this.curLineStart > x && (x = this.curLineStart);
+ !this.closes(
+ t.tokTypes.braceR,
+ h + (this.curLineStart <= x ? 1 : 0),
+ T
+ ) && !this.isContextual('from');
+
+ ) {
+ var w = this.startNode();
+ if (((w.local = this.parseModuleExportName()), i(w.local))) break;
+ (w.exported = this.eatContextual('as')
+ ? this.parseModuleExportName()
+ : w.local),
+ this.finishNode(w, 'ExportSpecifier'),
+ p.push(w),
+ this.eat(t.tokTypes.comma);
+ }
+ return this.eat(t.tokTypes.braceR), this.popCx(), p;
+ }),
+ (y.parseModuleExportName = function () {
+ return this.options.ecmaVersion >= 13 &&
+ this.tok.type === t.tokTypes.string
+ ? this.parseExprAtom()
+ : this.parseIdent();
+ });
+ var g = a.prototype;
+ (g.checkLVal = function (p) {
+ if (!p) return p;
+ switch (p.type) {
+ case 'Identifier':
+ case 'MemberExpression':
+ return p;
+ case 'ParenthesizedExpression':
+ return (p.expression = this.checkLVal(p.expression)), p;
+ default:
+ return this.dummyIdent();
+ }
+ }),
+ (g.parseExpression = function (p) {
+ var h = this.storeCurrentPos(),
+ T = this.parseMaybeAssign(p);
+ if (this.tok.type === t.tokTypes.comma) {
+ var x = this.startNodeAt(h);
+ for (x.expressions = [T]; this.eat(t.tokTypes.comma); )
+ x.expressions.push(this.parseMaybeAssign(p));
+ return this.finishNode(x, 'SequenceExpression');
+ }
+ return T;
+ }),
+ (g.parseParenExpression = function () {
+ this.pushCx(), this.expect(t.tokTypes.parenL);
+ var p = this.parseExpression();
+ return this.popCx(), this.expect(t.tokTypes.parenR), p;
+ }),
+ (g.parseMaybeAssign = function (p) {
+ if (this.inGenerator && this.toks.isContextual('yield')) {
+ var h = this.startNode();
+ return (
+ this.next(),
+ this.semicolon() ||
+ this.canInsertSemicolon() ||
+ (this.tok.type !== t.tokTypes.star && !this.tok.type.startsExpr)
+ ? ((h.delegate = !1), (h.argument = null))
+ : ((h.delegate = this.eat(t.tokTypes.star)),
+ (h.argument = this.parseMaybeAssign())),
+ this.finishNode(h, 'YieldExpression')
+ );
+ }
+ var T = this.storeCurrentPos(),
+ x = this.parseMaybeConditional(p);
+ if (this.tok.type.isAssign) {
+ var w = this.startNodeAt(T);
+ return (
+ (w.operator = this.tok.value),
+ (w.left =
+ this.tok.type === t.tokTypes.eq
+ ? this.toAssignable(x)
+ : this.checkLVal(x)),
+ this.next(),
+ (w.right = this.parseMaybeAssign(p)),
+ this.finishNode(w, 'AssignmentExpression')
+ );
+ }
+ return x;
+ }),
+ (g.parseMaybeConditional = function (p) {
+ var h = this.storeCurrentPos(),
+ T = this.parseExprOps(p);
+ if (this.eat(t.tokTypes.question)) {
+ var x = this.startNodeAt(h);
+ return (
+ (x.test = T),
+ (x.consequent = this.parseMaybeAssign()),
+ (x.alternate = this.expect(t.tokTypes.colon)
+ ? this.parseMaybeAssign(p)
+ : this.dummyIdent()),
+ this.finishNode(x, 'ConditionalExpression')
+ );
+ }
+ return T;
+ }),
+ (g.parseExprOps = function (p) {
+ var h = this.storeCurrentPos(),
+ T = this.curIndent,
+ x = this.curLineStart;
+ return this.parseExprOp(this.parseMaybeUnary(!1), h, -1, p, T, x);
+ }),
+ (g.parseExprOp = function (p, h, T, x, w, S) {
+ if (
+ this.curLineStart !== S &&
+ this.curIndent < w &&
+ this.tokenStartsLine()
+ )
+ return p;
+ var A = this.tok.type.binop;
+ if (A != null && (!x || this.tok.type !== t.tokTypes._in) && A > T) {
+ var U = this.startNodeAt(h);
+ if (
+ ((U.left = p),
+ (U.operator = this.tok.value),
+ this.next(),
+ this.curLineStart !== S &&
+ this.curIndent < w &&
+ this.tokenStartsLine())
+ )
+ U.right = this.dummyIdent();
+ else {
+ var M = this.storeCurrentPos();
+ U.right = this.parseExprOp(
+ this.parseMaybeUnary(!1),
+ M,
+ A,
+ x,
+ w,
+ S
+ );
+ }
+ return (
+ this.finishNode(
+ U,
+ /&&|\|\||\?\?/.test(U.operator)
+ ? 'LogicalExpression'
+ : 'BinaryExpression'
+ ),
+ this.parseExprOp(U, h, T, x, w, S)
+ );
+ }
+ return p;
+ }),
+ (g.parseMaybeUnary = function (p) {
+ var h = this.storeCurrentPos(),
+ T;
+ if (
+ this.options.ecmaVersion >= 8 &&
+ this.toks.isContextual('await') &&
+ (this.inAsync ||
+ (this.toks.inModule && this.options.ecmaVersion >= 13) ||
+ (!this.inFunction && this.options.allowAwaitOutsideFunction))
+ )
+ (T = this.parseAwait()), (p = !0);
+ else if (this.tok.type.prefix) {
+ var x = this.startNode(),
+ w = this.tok.type === t.tokTypes.incDec;
+ w || (p = !0),
+ (x.operator = this.tok.value),
+ (x.prefix = !0),
+ this.next(),
+ (x.argument = this.parseMaybeUnary(!0)),
+ w && (x.argument = this.checkLVal(x.argument)),
+ (T = this.finishNode(
+ x,
+ w ? 'UpdateExpression' : 'UnaryExpression'
+ ));
+ } else if (this.tok.type === t.tokTypes.ellipsis) {
+ var S = this.startNode();
+ this.next(),
+ (S.argument = this.parseMaybeUnary(p)),
+ (T = this.finishNode(S, 'SpreadElement'));
+ } else if (!p && this.tok.type === t.tokTypes.privateId)
+ T = this.parsePrivateIdent();
+ else
+ for (
+ T = this.parseExprSubscripts();
+ this.tok.type.postfix && !this.canInsertSemicolon();
+
+ ) {
+ var A = this.startNodeAt(h);
+ (A.operator = this.tok.value),
+ (A.prefix = !1),
+ (A.argument = this.checkLVal(T)),
+ this.next(),
+ (T = this.finishNode(A, 'UpdateExpression'));
+ }
+ if (!p && this.eat(t.tokTypes.starstar)) {
+ var U = this.startNodeAt(h);
+ return (
+ (U.operator = '**'),
+ (U.left = T),
+ (U.right = this.parseMaybeUnary(!1)),
+ this.finishNode(U, 'BinaryExpression')
+ );
+ }
+ return T;
+ }),
+ (g.parseExprSubscripts = function () {
+ var p = this.storeCurrentPos();
+ return this.parseSubscripts(
+ this.parseExprAtom(),
+ p,
+ !1,
+ this.curIndent,
+ this.curLineStart
+ );
+ }),
+ (g.parseSubscripts = function (p, h, T, x, w) {
+ for (var S = this.options.ecmaVersion >= 11, A = !1; ; ) {
+ if (
+ this.curLineStart !== w &&
+ this.curIndent <= x &&
+ this.tokenStartsLine()
+ )
+ if (this.tok.type === t.tokTypes.dot && this.curIndent === x) --x;
+ else break;
+ var U =
+ p.type === 'Identifier' &&
+ p.name === 'async' &&
+ !this.canInsertSemicolon(),
+ M = S && this.eat(t.tokTypes.questionDot);
+ if (
+ (M && (A = !0),
+ (M &&
+ this.tok.type !== t.tokTypes.parenL &&
+ this.tok.type !== t.tokTypes.bracketL &&
+ this.tok.type !== t.tokTypes.backQuote) ||
+ this.eat(t.tokTypes.dot))
+ ) {
+ var c = this.startNodeAt(h);
+ (c.object = p),
+ this.curLineStart !== w &&
+ this.curIndent <= x &&
+ this.tokenStartsLine()
+ ? (c.property = this.dummyIdent())
+ : (c.property =
+ this.parsePropertyAccessor() || this.dummyIdent()),
+ (c.computed = !1),
+ S && (c.optional = M),
+ (p = this.finishNode(c, 'MemberExpression'));
+ } else if (this.tok.type === t.tokTypes.bracketL) {
+ this.pushCx(), this.next();
+ var R = this.startNodeAt(h);
+ (R.object = p),
+ (R.property = this.parseExpression()),
+ (R.computed = !0),
+ S && (R.optional = M),
+ this.popCx(),
+ this.expect(t.tokTypes.bracketR),
+ (p = this.finishNode(R, 'MemberExpression'));
+ } else if (!T && this.tok.type === t.tokTypes.parenL) {
+ var W = this.parseExprList(t.tokTypes.parenR);
+ if (U && this.eat(t.tokTypes.arrow))
+ return this.parseArrowExpression(this.startNodeAt(h), W, !0);
+ var X = this.startNodeAt(h);
+ (X.callee = p),
+ (X.arguments = W),
+ S && (X.optional = M),
+ (p = this.finishNode(X, 'CallExpression'));
+ } else if (this.tok.type === t.tokTypes.backQuote) {
+ var ie = this.startNodeAt(h);
+ (ie.tag = p),
+ (ie.quasi = this.parseTemplate()),
+ (p = this.finishNode(ie, 'TaggedTemplateExpression'));
+ } else break;
+ }
+ if (A) {
+ var pe = this.startNodeAt(h);
+ (pe.expression = p), (p = this.finishNode(pe, 'ChainExpression'));
+ }
+ return p;
+ }),
+ (g.parseExprAtom = function () {
+ var p;
+ switch (this.tok.type) {
+ case t.tokTypes._this:
+ case t.tokTypes._super:
+ var h =
+ this.tok.type === t.tokTypes._this ? 'ThisExpression' : 'Super';
+ return (p = this.startNode()), this.next(), this.finishNode(p, h);
+ case t.tokTypes.name:
+ var T = this.storeCurrentPos(),
+ x = this.parseIdent(),
+ w = !1;
+ if (x.name === 'async' && !this.canInsertSemicolon()) {
+ if (this.eat(t.tokTypes._function))
+ return (
+ this.toks.overrideContext(t.tokContexts.f_expr),
+ this.parseFunction(this.startNodeAt(T), !1, !0)
+ );
+ this.tok.type === t.tokTypes.name &&
+ ((x = this.parseIdent()), (w = !0));
+ }
+ return this.eat(t.tokTypes.arrow)
+ ? this.parseArrowExpression(this.startNodeAt(T), [x], w)
+ : x;
+ case t.tokTypes.regexp:
+ p = this.startNode();
+ var S = this.tok.value;
+ return (
+ (p.regex = {pattern: S.pattern, flags: S.flags}),
+ (p.value = S.value),
+ (p.raw = this.input.slice(this.tok.start, this.tok.end)),
+ this.next(),
+ this.finishNode(p, 'Literal')
+ );
+ case t.tokTypes.num:
+ case t.tokTypes.string:
+ return (
+ (p = this.startNode()),
+ (p.value = this.tok.value),
+ (p.raw = this.input.slice(this.tok.start, this.tok.end)),
+ this.tok.type === t.tokTypes.num &&
+ p.raw.charCodeAt(p.raw.length - 1) === 110 &&
+ (p.bigint =
+ p.value != null
+ ? p.value.toString()
+ : p.raw.slice(0, -1).replace(/_/g, '')),
+ this.next(),
+ this.finishNode(p, 'Literal')
+ );
+ case t.tokTypes._null:
+ case t.tokTypes._true:
+ case t.tokTypes._false:
+ return (
+ (p = this.startNode()),
+ (p.value =
+ this.tok.type === t.tokTypes._null
+ ? null
+ : this.tok.type === t.tokTypes._true),
+ (p.raw = this.tok.type.keyword),
+ this.next(),
+ this.finishNode(p, 'Literal')
+ );
+ case t.tokTypes.parenL:
+ var A = this.storeCurrentPos();
+ this.next();
+ var U = this.parseExpression();
+ if (
+ (this.expect(t.tokTypes.parenR), this.eat(t.tokTypes.arrow))
+ ) {
+ var M = U.expressions || [U];
+ return (
+ M.length && i(M[M.length - 1]) && M.pop(),
+ this.parseArrowExpression(this.startNodeAt(A), M)
+ );
+ }
+ if (this.options.preserveParens) {
+ var c = this.startNodeAt(A);
+ (c.expression = U),
+ (U = this.finishNode(c, 'ParenthesizedExpression'));
+ }
+ return U;
+ case t.tokTypes.bracketL:
+ return (
+ (p = this.startNode()),
+ (p.elements = this.parseExprList(t.tokTypes.bracketR, !0)),
+ this.finishNode(p, 'ArrayExpression')
+ );
+ case t.tokTypes.braceL:
+ return (
+ this.toks.overrideContext(t.tokContexts.b_expr), this.parseObj()
+ );
+ case t.tokTypes._class:
+ return this.parseClass(!1);
+ case t.tokTypes._function:
+ return (
+ (p = this.startNode()), this.next(), this.parseFunction(p, !1)
+ );
+ case t.tokTypes._new:
+ return this.parseNew();
+ case t.tokTypes.backQuote:
+ return this.parseTemplate();
+ case t.tokTypes._import:
+ return this.options.ecmaVersion >= 11
+ ? this.parseExprImport()
+ : this.dummyIdent();
+ default:
+ return this.dummyIdent();
+ }
+ }),
+ (g.parseExprImport = function () {
+ var p = this.startNode(),
+ h = this.parseIdent(!0);
+ switch (this.tok.type) {
+ case t.tokTypes.parenL:
+ return this.parseDynamicImport(p);
+ case t.tokTypes.dot:
+ return (p.meta = h), this.parseImportMeta(p);
+ default:
+ return (p.name = 'import'), this.finishNode(p, 'Identifier');
+ }
+ }),
+ (g.parseDynamicImport = function (p) {
+ var h = this.parseExprList(t.tokTypes.parenR);
+ return (
+ (p.source = h[0] || this.dummyString()),
+ (p.options = h[1] || null),
+ this.finishNode(p, 'ImportExpression')
+ );
+ }),
+ (g.parseImportMeta = function (p) {
+ return (
+ this.next(),
+ (p.property = this.parseIdent(!0)),
+ this.finishNode(p, 'MetaProperty')
+ );
+ }),
+ (g.parseNew = function () {
+ var p = this.startNode(),
+ h = this.curIndent,
+ T = this.curLineStart,
+ x = this.parseIdent(!0);
+ if (this.options.ecmaVersion >= 6 && this.eat(t.tokTypes.dot))
+ return (
+ (p.meta = x),
+ (p.property = this.parseIdent(!0)),
+ this.finishNode(p, 'MetaProperty')
+ );
+ var w = this.storeCurrentPos();
+ return (
+ (p.callee = this.parseSubscripts(
+ this.parseExprAtom(),
+ w,
+ !0,
+ h,
+ T
+ )),
+ this.tok.type === t.tokTypes.parenL
+ ? (p.arguments = this.parseExprList(t.tokTypes.parenR))
+ : (p.arguments = []),
+ this.finishNode(p, 'NewExpression')
+ );
+ }),
+ (g.parseTemplateElement = function () {
+ var p = this.startNode();
+ return (
+ this.tok.type === t.tokTypes.invalidTemplate
+ ? (p.value = {raw: this.tok.value, cooked: null})
+ : (p.value = {
+ raw: this.input.slice(this.tok.start, this.tok.end).replace(
+ /\r\n?/g,
+ `
+`
+ ),
+ cooked: this.tok.value,
+ }),
+ this.next(),
+ (p.tail = this.tok.type === t.tokTypes.backQuote),
+ this.finishNode(p, 'TemplateElement')
+ );
+ }),
+ (g.parseTemplate = function () {
+ var p = this.startNode();
+ this.next(), (p.expressions = []);
+ var h = this.parseTemplateElement();
+ for (p.quasis = [h]; !h.tail; )
+ this.next(),
+ p.expressions.push(this.parseExpression()),
+ this.expect(t.tokTypes.braceR)
+ ? (h = this.parseTemplateElement())
+ : ((h = this.startNode()),
+ (h.value = {cooked: '', raw: ''}),
+ (h.tail = !0),
+ this.finishNode(h, 'TemplateElement')),
+ p.quasis.push(h);
+ return (
+ this.expect(t.tokTypes.backQuote),
+ this.finishNode(p, 'TemplateLiteral')
+ );
+ }),
+ (g.parseObj = function () {
+ var p = this.startNode();
+ (p.properties = []), this.pushCx();
+ var h = this.curIndent + 1,
+ T = this.curLineStart;
+ for (
+ this.eat(t.tokTypes.braceL),
+ this.curIndent + 1 < h &&
+ ((h = this.curIndent), (T = this.curLineStart));
+ !this.closes(t.tokTypes.braceR, h, T);
+
+ ) {
+ var x = this.startNode(),
+ w = void 0,
+ S = void 0,
+ A = void 0;
+ if (
+ this.options.ecmaVersion >= 9 &&
+ this.eat(t.tokTypes.ellipsis)
+ ) {
+ (x.argument = this.parseMaybeAssign()),
+ p.properties.push(this.finishNode(x, 'SpreadElement')),
+ this.eat(t.tokTypes.comma);
+ continue;
+ }
+ if (
+ (this.options.ecmaVersion >= 6 &&
+ ((A = this.storeCurrentPos()),
+ (x.method = !1),
+ (x.shorthand = !1),
+ (w = this.eat(t.tokTypes.star))),
+ this.parsePropertyName(x),
+ this.toks.isAsyncProp(x)
+ ? ((S = !0),
+ (w =
+ this.options.ecmaVersion >= 9 && this.eat(t.tokTypes.star)),
+ this.parsePropertyName(x))
+ : (S = !1),
+ i(x.key))
+ ) {
+ i(this.parseMaybeAssign()) && this.next(),
+ this.eat(t.tokTypes.comma);
+ continue;
+ }
+ if (this.eat(t.tokTypes.colon))
+ (x.kind = 'init'), (x.value = this.parseMaybeAssign());
+ else if (
+ this.options.ecmaVersion >= 6 &&
+ (this.tok.type === t.tokTypes.parenL ||
+ this.tok.type === t.tokTypes.braceL)
+ )
+ (x.kind = 'init'),
+ (x.method = !0),
+ (x.value = this.parseMethod(w, S));
+ else if (
+ this.options.ecmaVersion >= 5 &&
+ x.key.type === 'Identifier' &&
+ !x.computed &&
+ (x.key.name === 'get' || x.key.name === 'set') &&
+ this.tok.type !== t.tokTypes.comma &&
+ this.tok.type !== t.tokTypes.braceR &&
+ this.tok.type !== t.tokTypes.eq
+ )
+ (x.kind = x.key.name),
+ this.parsePropertyName(x),
+ (x.value = this.parseMethod(!1));
+ else {
+ if (((x.kind = 'init'), this.options.ecmaVersion >= 6))
+ if (this.eat(t.tokTypes.eq)) {
+ var U = this.startNodeAt(A);
+ (U.operator = '='),
+ (U.left = x.key),
+ (U.right = this.parseMaybeAssign()),
+ (x.value = this.finishNode(U, 'AssignmentExpression'));
+ } else x.value = x.key;
+ else x.value = this.dummyIdent();
+ x.shorthand = !0;
+ }
+ p.properties.push(this.finishNode(x, 'Property')),
+ this.eat(t.tokTypes.comma);
+ }
+ return (
+ this.popCx(),
+ this.eat(t.tokTypes.braceR) ||
+ ((this.last.end = this.tok.start),
+ this.options.locations &&
+ (this.last.loc.end = this.tok.loc.start)),
+ this.finishNode(p, 'ObjectExpression')
+ );
+ }),
+ (g.parsePropertyName = function (p) {
+ if (this.options.ecmaVersion >= 6)
+ if (this.eat(t.tokTypes.bracketL)) {
+ (p.computed = !0),
+ (p.key = this.parseExpression()),
+ this.expect(t.tokTypes.bracketR);
+ return;
+ } else p.computed = !1;
+ var h =
+ this.tok.type === t.tokTypes.num ||
+ this.tok.type === t.tokTypes.string
+ ? this.parseExprAtom()
+ : this.parseIdent();
+ p.key = h || this.dummyIdent();
+ }),
+ (g.parsePropertyAccessor = function () {
+ if (this.tok.type === t.tokTypes.name || this.tok.type.keyword)
+ return this.parseIdent();
+ if (this.tok.type === t.tokTypes.privateId)
+ return this.parsePrivateIdent();
+ }),
+ (g.parseIdent = function () {
+ var p =
+ this.tok.type === t.tokTypes.name
+ ? this.tok.value
+ : this.tok.type.keyword;
+ if (!p) return this.dummyIdent();
+ this.tok.type.keyword && (this.toks.type = t.tokTypes.name);
+ var h = this.startNode();
+ return this.next(), (h.name = p), this.finishNode(h, 'Identifier');
+ }),
+ (g.parsePrivateIdent = function () {
+ var p = this.startNode();
+ return (
+ (p.name = this.tok.value),
+ this.next(),
+ this.finishNode(p, 'PrivateIdentifier')
+ );
+ }),
+ (g.initFunction = function (p) {
+ (p.id = null),
+ (p.params = []),
+ this.options.ecmaVersion >= 6 &&
+ ((p.generator = !1), (p.expression = !1)),
+ this.options.ecmaVersion >= 8 && (p.async = !1);
+ }),
+ (g.toAssignable = function (p, h) {
+ if (
+ !(
+ !p ||
+ p.type === 'Identifier' ||
+ (p.type === 'MemberExpression' && !h)
+ )
+ )
+ if (p.type === 'ParenthesizedExpression')
+ this.toAssignable(p.expression, h);
+ else {
+ if (this.options.ecmaVersion < 6) return this.dummyIdent();
+ if (p.type === 'ObjectExpression') {
+ p.type = 'ObjectPattern';
+ for (var T = 0, x = p.properties; T < x.length; T += 1) {
+ var w = x[T];
+ this.toAssignable(w, h);
+ }
+ } else if (p.type === 'ArrayExpression')
+ (p.type = 'ArrayPattern'), this.toAssignableList(p.elements, h);
+ else if (p.type === 'Property') this.toAssignable(p.value, h);
+ else if (p.type === 'SpreadElement')
+ (p.type = 'RestElement'), this.toAssignable(p.argument, h);
+ else if (p.type === 'AssignmentExpression')
+ (p.type = 'AssignmentPattern'), delete p.operator;
+ else return this.dummyIdent();
+ }
+ return p;
+ }),
+ (g.toAssignableList = function (p, h) {
+ for (var T = 0, x = p; T < x.length; T += 1) {
+ var w = x[T];
+ this.toAssignable(w, h);
+ }
+ return p;
+ }),
+ (g.parseFunctionParams = function (p) {
+ return (
+ (p = this.parseExprList(t.tokTypes.parenR)),
+ this.toAssignableList(p, !0)
+ );
+ }),
+ (g.parseMethod = function (p, h) {
+ var T = this.startNode(),
+ x = this.inAsync,
+ w = this.inGenerator,
+ S = this.inFunction;
+ return (
+ this.initFunction(T),
+ this.options.ecmaVersion >= 6 && (T.generator = !!p),
+ this.options.ecmaVersion >= 8 && (T.async = !!h),
+ (this.inAsync = T.async),
+ (this.inGenerator = T.generator),
+ (this.inFunction = !0),
+ (T.params = this.parseFunctionParams()),
+ (T.body = this.parseBlock()),
+ this.toks.adaptDirectivePrologue(T.body.body),
+ (this.inAsync = x),
+ (this.inGenerator = w),
+ (this.inFunction = S),
+ this.finishNode(T, 'FunctionExpression')
+ );
+ }),
+ (g.parseArrowExpression = function (p, h, T) {
+ var x = this.inAsync,
+ w = this.inGenerator,
+ S = this.inFunction;
+ return (
+ this.initFunction(p),
+ this.options.ecmaVersion >= 8 && (p.async = !!T),
+ (this.inAsync = p.async),
+ (this.inGenerator = !1),
+ (this.inFunction = !0),
+ (p.params = this.toAssignableList(h, !0)),
+ (p.expression = this.tok.type !== t.tokTypes.braceL),
+ p.expression
+ ? (p.body = this.parseMaybeAssign())
+ : ((p.body = this.parseBlock()),
+ this.toks.adaptDirectivePrologue(p.body.body)),
+ (this.inAsync = x),
+ (this.inGenerator = w),
+ (this.inFunction = S),
+ this.finishNode(p, 'ArrowFunctionExpression')
+ );
+ }),
+ (g.parseExprList = function (p, h) {
+ this.pushCx();
+ var T = this.curIndent,
+ x = this.curLineStart,
+ w = [];
+ for (this.next(); !this.closes(p, T + 1, x); ) {
+ if (this.eat(t.tokTypes.comma)) {
+ w.push(h ? null : this.dummyIdent());
+ continue;
+ }
+ var S = this.parseMaybeAssign();
+ if (i(S)) {
+ if (this.closes(p, T, x)) break;
+ this.next();
+ } else w.push(S);
+ this.eat(t.tokTypes.comma);
+ }
+ return (
+ this.popCx(),
+ this.eat(p) ||
+ ((this.last.end = this.tok.start),
+ this.options.locations &&
+ (this.last.loc.end = this.tok.loc.start)),
+ w
+ );
+ }),
+ (g.parseAwait = function () {
+ var p = this.startNode();
+ return (
+ this.next(),
+ (p.argument = this.parseMaybeUnary()),
+ this.finishNode(p, 'AwaitExpression')
+ );
+ }),
+ (t.defaultOptions.tabSize = 4);
+ function L(p, h) {
+ return a.parse(p, h);
+ }
+ (e.LooseParser = a), (e.isDummy = i), (e.parse = L);
+ });
+ });
+ var Vo = Li(),
+ Ug = Jc(),
+ dr = e1(),
+ Hg = uf(),
+ Tf = df(),
+ Os = null;
+ function kf() {
+ return new Proxy(
+ {},
+ {
+ get: function (e, t) {
+ if (t in e) return e[t];
+ var s = String(t).split('#'),
+ i = s[0],
+ r = s[1] || 'default',
+ a = {id: i, chunks: [i], name: r, async: !0};
+ return (e[t] = a), a;
+ },
+ }
+ );
+ }
+ var Nc = {};
+ function mf(e, t, s) {
+ var i = dr.registerServerReference(e, t, s),
+ r = t + '#' + s;
+ return (Nc[r] = e), i;
+ }
+ function Wg(e) {
+ if (e.indexOf('use client') === -1 && e.indexOf('use server') === -1)
+ return null;
+ try {
+ var t = Tf.parse(e, {ecmaVersion: '2024', sourceType: 'source'}).body;
+ } catch {
+ return null;
+ }
+ for (var s = 0; s < t.length; s++) {
+ var i = t[s];
+ if (i.type !== 'ExpressionStatement' || !i.directive) break;
+ if (i.directive === 'use client') return 'use client';
+ if (i.directive === 'use server') return 'use server';
+ }
+ return null;
+ }
+ function Gg(e) {
+ if (e.indexOf('use server') === -1) return e;
+ var t;
+ try {
+ t = Tf.parse(e, {ecmaVersion: '2024', sourceType: 'source'});
+ } catch {
+ return e;
+ }
+ var s = [],
+ i = 0;
+ function r(T, x) {
+ if (!(!T || typeof T != 'object')) {
+ var w =
+ T.type === 'FunctionDeclaration' ||
+ T.type === 'FunctionExpression' ||
+ T.type === 'ArrowFunctionExpression';
+ if (w && x > 0 && T.body && T.body.type === 'BlockStatement')
+ for (var S = T.body.body, A = 0; A < S.length; A++) {
+ var U = S[A];
+ if (U.type !== 'ExpressionStatement') break;
+ if (U.directive === 'use server') {
+ s.push({
+ funcStart: T.start,
+ funcEnd: T.end,
+ dStart: U.start,
+ dEnd: U.end,
+ name: T.id ? T.id.name : 'action' + i,
+ isDecl: T.type === 'FunctionDeclaration',
+ }),
+ i++;
+ return;
+ }
+ if (!U.directive) break;
+ }
+ var M = w ? x + 1 : x;
+ for (var c in T)
+ if (!(c === 'start' || c === 'end' || c === 'type')) {
+ var R = T[c];
+ if (Array.isArray(R))
+ for (var W = 0; W < R.length; W++)
+ R[W] && typeof R[W].type == 'string' && r(R[W], M);
+ else R && typeof R.type == 'string' && r(R, M);
+ }
+ }
+ }
+ if (
+ (t.body.forEach(function (T) {
+ r(T, 0);
+ }),
+ s.length === 0)
+ )
+ return e;
+ s.sort(function (T, x) {
+ return x.funcStart - T.funcStart;
+ });
+ for (var a = e, u = 0; u < s.length; u++) {
+ for (
+ var d = s[u], y = d.dEnd, g = a.charAt(y);
+ y < a.length &&
+ (g === ' ' ||
+ g ===
+ `
+` ||
+ g === '\r' ||
+ g === ' ');
+
+ )
+ y++, (g = a.charAt(y));
+ a = a.slice(0, d.dStart) + a.slice(y);
+ var L = y - d.dStart,
+ p = d.funcEnd - L,
+ h = a.slice(d.funcStart, p);
+ d.isDecl
+ ? (a =
+ a.slice(0, d.funcStart) +
+ 'var ' +
+ d.name +
+ ' = __rsa(' +
+ h +
+ ", '" +
+ d.name +
+ "');" +
+ a.slice(p))
+ : (a =
+ a.slice(0, d.funcStart) +
+ '__rsa(' +
+ h +
+ ", '" +
+ d.name +
+ "')" +
+ a.slice(p));
+ }
+ return a;
+ }
+ function zg(e, t) {
+ if (!t.startsWith('.')) return t;
+ var s = e.split('/');
+ s.pop();
+ for (var i = t.split('/'), r = 0; r < i.length; r++)
+ if (i[r] !== '.') {
+ if (i[r] === '..') {
+ s.pop();
+ continue;
+ }
+ s.push(i[r]);
+ }
+ return s.join('/');
+ }
+ function Xg(e) {
+ Nc = {};
+ var t = {react: Vo, 'react/jsx-runtime': Ug},
+ s = {},
+ i = null;
+ if (
+ (Object.keys(e).forEach(function (h) {
+ if (!i)
+ try {
+ s[h] = Hg.transform(e[h], {
+ transforms: ['jsx', 'imports'],
+ jsxRuntime: 'automatic',
+ production: !0,
+ }).code;
+ } catch (T) {
+ i = h + ': ' + (T.message || String(T));
+ }
+ }),
+ i)
+ )
+ return {type: 'error', error: i};
+ function r(h, T) {
+ if (t[T]) return T;
+ if (T.startsWith('.')) {
+ var x = zg(h, T);
+ if (t[x] || s[x]) return x;
+ for (var w = ['.js', '.jsx', '.ts', '.tsx'], S = 0; S < w.length; S++) {
+ var A = x + w[S];
+ if (t[A] || s[A]) return A;
+ }
+ }
+ return T;
+ }
+ var a = {},
+ u = {};
+ function d(h) {
+ if (t[h]) return t[h];
+ if (!s[h]) throw new Error('Module "' + h + '" not found');
+ if (a[h]) return a[h].exports;
+ var T = Wg(e[h]);
+ if (T === 'use client')
+ return (t[h] = dr.createClientModuleProxy(h)), (u[h] = !0), t[h];
+ var x = {exports: {}};
+ a[h] = x;
+ var w = function (c) {
+ if (c.endsWith('.css')) return {};
+ var R = r(h, c);
+ return t[R] ? t[R] : d(R);
+ },
+ S = s[h];
+ if (
+ (T !== 'use server' && (S = Gg(S)),
+ new Function('module', 'exports', 'require', 'React', '__rsa', S)(
+ x,
+ x.exports,
+ w,
+ Vo,
+ function (c, R) {
+ return mf(c, h, R);
+ }
+ ),
+ (t[h] = x.exports),
+ T === 'use server')
+ )
+ for (var A = Object.keys(x.exports), U = 0; U < A.length; U++) {
+ var M = A[U];
+ typeof x.exports[M] == 'function' && mf(x.exports[M], h, M);
+ }
+ return delete a[h], x.exports;
+ }
+ var y = {exports: {}};
+ Object.keys(s).forEach(function (h) {
+ d(h),
+ (h === '/src/App.js' || h === './App.js' || h === './src/App.js') &&
+ (y.exports = t[h]);
+ }),
+ (Os = {module: y.exports});
+ var g = {};
+ function L(h) {
+ if (!g[h]) {
+ g[h] = !0;
+ var T = s[h];
+ if (T)
+ for (
+ var x = /require\(["']([^"']+)["']\)/g, w;
+ (w = x.exec(T)) !== null;
+
+ ) {
+ var S = w[1];
+ if (
+ !(
+ S === 'react' ||
+ S === 'react/jsx-runtime' ||
+ S === 'react/jsx-dev-runtime' ||
+ S.endsWith('.css')
+ )
+ ) {
+ var A = r(h, S);
+ s[A] && L(A);
+ }
+ }
+ }
+ }
+ Object.keys(u).forEach(function (h) {
+ L(h);
+ });
+ var p = {};
+ return (
+ Object.keys(g).forEach(function (h) {
+ p[h] = s[h];
+ }),
+ {type: 'deployed', compiledClients: p, clientEntries: u}
+ );
+ }
+ function Yg() {
+ if (!Os) throw new Error('No code deployed');
+ var e = Os.module.default || Os.module,
+ t = Vo.createElement(e);
+ return dr.renderToReadableStream(t, kf(), {
+ onError: function (s) {
+ return console.error('[RSC Server Error]', s), msg;
+ },
+ });
+ }
+ function Jg(e, t) {
+ if (!Os) throw new Error('No code deployed');
+ var s = Nc[e];
+ if (!s) throw new Error('Action "' + e + '" not found');
+ var i = t;
+ if (typeof t != 'string' && t && t.__formData) {
+ i = new FormData();
+ for (var r = 0; r < t.__formData.length; r++)
+ i.append(t.__formData[r][0], t.__formData[r][1]);
+ }
+ return Promise.resolve(dr.decodeReply(i)).then(function (a) {
+ var u = Promise.resolve(s.apply(null, a));
+ return u.then(function () {
+ var d = Os.module.default || Os.module;
+ return dr.renderToReadableStream(
+ {root: Vo.createElement(d), returnValue: u},
+ kf(),
+ {
+ onError: function (y) {
+ return console.error('[RSC Server Error]', y), msg;
+ },
+ }
+ );
+ });
+ });
+ }
+ function yf(e, t) {
+ var s = t.getReader();
+ function i() {
+ return s.read().then(function (r) {
+ if (r.done) {
+ self.postMessage({type: 'rsc-chunk', requestId: e, done: !0});
+ return;
+ }
+ return (
+ self.postMessage(
+ {type: 'rsc-chunk', requestId: e, done: !1, chunk: r.value},
+ [r.value.buffer]
+ ),
+ i()
+ );
+ });
+ }
+ i().catch(function (r) {
+ self.postMessage({type: 'rsc-error', requestId: e, error: String(r)});
+ });
+ }
+ self.onmessage = function (e) {
+ var t = e.data;
+ if (t.type === 'deploy')
+ try {
+ var s = Xg(t.files);
+ s && s.type === 'error'
+ ? self.postMessage({type: 'rsc-error', error: s.error})
+ : s && self.postMessage({type: 'deploy-result', result: s});
+ } catch (r) {
+ self.postMessage({type: 'rsc-error', error: String(r)});
+ }
+ else if (t.type === 'render')
+ try {
+ var i = Yg();
+ Promise.resolve(i)
+ .then(function (r) {
+ yf(t.requestId, r);
+ })
+ .catch(function (r) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: t.requestId,
+ error: String(r),
+ });
+ });
+ } catch (r) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: t.requestId,
+ error: String(r),
+ });
+ }
+ else if (t.type === 'callAction')
+ try {
+ Jg(t.actionId, t.encodedArgs)
+ .then(function (r) {
+ yf(t.requestId, r);
+ })
+ .catch(function (r) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: t.requestId,
+ error: String(r),
+ });
+ });
+ } catch (r) {
+ self.postMessage({
+ type: 'rsc-error',
+ requestId: t.requestId,
+ error: String(r),
+ });
+ }
+ };
+ self.postMessage({type: 'ready'});
+})();
+/*! Bundled license information:
+
+react/cjs/react.react-server.production.js:
+ (**
+ * @license React
+ * react.react-server.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *)
+
+react/cjs/react-jsx-runtime.react-server.production.js:
+ (**
+ * @license React
+ * react-jsx-runtime.react-server.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *)
+
+react-dom/cjs/react-dom.react-server.production.js:
+ (**
+ * @license React
+ * react-dom.react-server.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *)
+
+react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js:
+ (**
+ * @license React
+ * react-server-dom-webpack-server.browser.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *)
+*/
diff --git a/src/components/MDX/Sandpack/template.ts b/src/components/MDX/Sandpack/template.ts
index 9ead18a14..fa8c9e486 100644
--- a/src/components/MDX/Sandpack/template.ts
+++ b/src/components/MDX/Sandpack/template.ts
@@ -1,7 +1,14 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
export const template = {
'/src/index.js': {
hidden: true,
- code: `import React, { StrictMode } from "react";
+ code: `import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import "./styles.css";
@@ -28,8 +35,8 @@ root.render(
eject: 'react-scripts eject',
},
dependencies: {
- react: '^18.0.0',
- 'react-dom': '^18.0.0',
+ react: '^19.2.1',
+ 'react-dom': '^19.2.1',
'react-scripts': '^5.0.0',
},
},
diff --git a/src/components/MDX/Sandpack/templateRSC.ts b/src/components/MDX/Sandpack/templateRSC.ts
new file mode 100644
index 000000000..efc4c940c
--- /dev/null
+++ b/src/components/MDX/Sandpack/templateRSC.ts
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import type {SandpackFiles} from '@codesandbox/sandpack-react/unstyled';
+
+function hideFiles(files: SandpackFiles): SandpackFiles {
+ return Object.fromEntries(
+ Object.entries(files).map(([name, code]) => [
+ name,
+ typeof code === 'string' ? {code, hidden: true} : {...code, hidden: true},
+ ])
+ );
+}
+
+// --- Load RSC infrastructure files as raw strings via raw-loader ---
+const RSC_SOURCE_FILES = {
+ 'webpack-shim':
+ require('!raw-loader?esModule=false!./sandpack-rsc/sandbox-code/src/webpack-shim.js') as string,
+ 'rsc-client':
+ require('!raw-loader?esModule=false!./sandpack-rsc/sandbox-code/src/rsc-client.js') as string,
+ 'react-refresh-init':
+ require('!raw-loader?esModule=false!./sandpack-rsc/sandbox-code/src/__react_refresh_init__.js') as string,
+ 'worker-bundle': `export default ${JSON.stringify(
+ require('!raw-loader?esModule=false!./sandpack-rsc/sandbox-code/src/worker-bundle.dist.js') as string
+ )};`,
+ 'rsdw-client':
+ require('!raw-loader?esModule=false!../../../../node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.production.js') as string,
+};
+
+// Load react-refresh runtime and strip the process.env.NODE_ENV guard
+// so it works in Sandpack's bundler which may not replace process.env.
+const reactRefreshRaw =
+ require('!raw-loader?esModule=false!../../../../node_modules/next/dist/compiled/react-refresh/cjs/react-refresh-runtime.development.js') as string;
+
+// Wrap as a CJS module that Sandpack can require.
+// Strip the `if (process.env.NODE_ENV !== "production")` guard so the
+// runtime always executes inside the sandbox.
+const reactRefreshModule = reactRefreshRaw.replace(
+ /if \(process\.env\.NODE_ENV !== "production"\) \{/,
+ '{'
+);
+
+// Entry point that bootstraps the RSC client pipeline.
+// __react_refresh_init__ must be imported BEFORE rsc-client so the
+// DevTools hook stub exists before React's renderer loads.
+const indexEntry = `
+import './styles.css';
+import './__react_refresh_init__';
+import { initClient } from './rsc-client.js';
+initClient();
+`.trim();
+
+const indexHTML = `
+
+
+
+
+
+ Document
+
+
+
+
+
+`.trim();
+
+export const templateRSC: SandpackFiles = {
+ ...hideFiles({
+ '/public/index.html': indexHTML,
+ '/src/index.js': indexEntry,
+ '/src/__react_refresh_init__.js': RSC_SOURCE_FILES['react-refresh-init'],
+ '/src/rsc-client.js': RSC_SOURCE_FILES['rsc-client'],
+ '/src/rsc-server.js': RSC_SOURCE_FILES['worker-bundle'],
+ '/src/__webpack_shim__.js': RSC_SOURCE_FILES['webpack-shim'],
+ // RSDW client as a Sandpack local dependency (bypasses Babel bundler)
+ '/node_modules/react-server-dom-webpack/package.json':
+ '{"name":"react-server-dom-webpack","main":"index.js"}',
+ '/node_modules/react-server-dom-webpack/client.browser.js':
+ RSC_SOURCE_FILES['rsdw-client'],
+ // react-refresh runtime as a Sandpack local dependency
+ '/node_modules/react-refresh/package.json':
+ '{"name":"react-refresh","main":"runtime.js"}',
+ '/node_modules/react-refresh/runtime.js': reactRefreshModule,
+ '/package.json': JSON.stringify(
+ {
+ name: 'react.dev',
+ version: '0.0.0',
+ main: '/src/index.js',
+ dependencies: {
+ react: '19.2.4',
+ 'react-dom': '19.2.4',
+ },
+ },
+ null,
+ 2
+ ),
+ }),
+};
diff --git a/src/components/MDX/Sandpack/useSandpackLint.tsx b/src/components/MDX/Sandpack/useSandpackLint.tsx
index ec05fbe0d..479b53ee0 100644
--- a/src/components/MDX/Sandpack/useSandpackLint.tsx
+++ b/src/components/MDX/Sandpack/useSandpackLint.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/SandpackWithHTMLOutput.tsx b/src/components/MDX/SandpackWithHTMLOutput.tsx
index 51ce28dc1..1d9e7f42d 100644
--- a/src/components/MDX/SandpackWithHTMLOutput.tsx
+++ b/src/components/MDX/SandpackWithHTMLOutput.tsx
@@ -1,6 +1,13 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
import {Children, memo} from 'react';
import InlineCode from './InlineCode';
-import Sandpack from './Sandpack';
+import {SandpackClient} from './Sandpack';
const ShowRenderedHTML = `
import { renderToStaticMarkup } from 'react-dom/server';
@@ -49,8 +56,8 @@ export default function formatHTML(markup) {
const packageJSON = `
{
"dependencies": {
- "react": "18.3.0-canary-6db7f4209-20231021",
- "react-dom": "18.3.0-canary-6db7f4209-20231021",
+ "react": "^19.2.1",
+ "react-dom": "^19.2.1",
"react-scripts": "^5.0.0",
"html-format": "^1.1.2"
},
@@ -73,7 +80,7 @@ function createFile(meta: string, source: string) {
}
export default memo(function SandpackWithHTMLOutput(
- props: React.ComponentProps
+ props: React.ComponentProps
) {
const children = [
...Children.toArray(props.children),
@@ -81,5 +88,5 @@ export default memo(function SandpackWithHTMLOutput(
createFile('src/formatHTML.js hidden', formatHTML),
createFile('package.json hidden', packageJSON),
];
- return {children};
+ return {children};
});
diff --git a/src/components/MDX/SimpleCallout.tsx b/src/components/MDX/SimpleCallout.tsx
index ae259bcf5..0e124baa7 100644
--- a/src/components/MDX/SimpleCallout.tsx
+++ b/src/components/MDX/SimpleCallout.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/TeamMember.tsx b/src/components/MDX/TeamMember.tsx
index e1b9198d8..2d0c65537 100644
--- a/src/components/MDX/TeamMember.tsx
+++ b/src/components/MDX/TeamMember.tsx
@@ -1,9 +1,16 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
import * as React from 'react';
-import Image from 'next/image';
+import Image from 'next/legacy/image';
import {IconTwitter} from '../Icon/IconTwitter';
import {IconThreads} from '../Icon/IconThreads';
import {IconBsky} from '../Icon/IconBsky';
@@ -39,11 +46,9 @@ export function TeamMember({
personal,
}: TeamMemberProps) {
if (name == null || title == null || permalink == null || children == null) {
+ const identifier = name ?? title ?? permalink ?? 'unknown';
throw new Error(
- 'Expected name, title, permalink, and children for ' + name ??
- title ??
- permalink ??
- 'unknown'
+ `Expected name, title, permalink, and children for ${identifier}`
);
}
return (
diff --git a/src/components/MDX/TerminalBlock.tsx b/src/components/MDX/TerminalBlock.tsx
index fc13af338..0fd0160d6 100644
--- a/src/components/MDX/TerminalBlock.tsx
+++ b/src/components/MDX/TerminalBlock.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -31,9 +38,11 @@ function TerminalBlock({level = 'info', children}: TerminalBlockProps) {
message = children;
} else if (
isValidElement(children) &&
- typeof children.props.children === 'string'
+ typeof (children as React.ReactElement<{children: string}>).props
+ .children === 'string'
) {
- message = children.props.children;
+ message = (children as React.ReactElement<{children: string}>).props
+ .children;
} else {
throw Error('Expected TerminalBlock children to be a plain string.');
}
@@ -70,13 +79,15 @@ function TerminalBlock({level = 'info', children}: TerminalBlockProps) {
-
-
- {message}
-
+
+
+ {message}
+
+
);
}
diff --git a/src/components/MDX/TocContext.tsx b/src/components/MDX/TocContext.tsx
index 8aeead370..924e6e09e 100644
--- a/src/components/MDX/TocContext.tsx
+++ b/src/components/MDX/TocContext.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/MDX/YouWillLearnCard.tsx b/src/components/MDX/YouWillLearnCard.tsx
index d46a70277..20fc3b5fe 100644
--- a/src/components/MDX/YouWillLearnCard.tsx
+++ b/src/components/MDX/YouWillLearnCard.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/components/PageHeading.tsx b/src/components/PageHeading.tsx
index 6000c8e51..ba4b413a0 100644
--- a/src/components/PageHeading.tsx
+++ b/src/components/PageHeading.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -7,33 +14,101 @@ import Tag from 'components/Tag';
import {H1} from './MDX/Heading';
import type {RouteTag, RouteItem} from './Layout/getRouteMeta';
import * as React from 'react';
+import {useState, useEffect} from 'react';
+import {useRouter} from 'next/router';
import {IconCanary} from './Icon/IconCanary';
+import {IconExperimental} from './Icon/IconExperimental';
+import {IconCopy} from './Icon/IconCopy';
+import {Button} from './Button';
interface PageHeadingProps {
title: string;
- canary?: boolean;
+ version?: 'experimental' | 'canary' | 'rc';
+ experimental?: boolean;
status?: string;
description?: string;
tags?: RouteTag[];
breadcrumbs: RouteItem[];
}
+function CopyAsMarkdownButton() {
+ const {asPath} = useRouter();
+ const [copied, setCopied] = useState(false);
+
+ useEffect(() => {
+ if (!copied) return;
+ const timer = setTimeout(() => setCopied(false), 2000);
+ return () => clearTimeout(timer);
+ }, [copied]);
+
+ async function fetchPageBlob() {
+ const cleanPath = asPath.split(/[?#]/)[0];
+ const res = await fetch(cleanPath + '.md');
+ if (!res.ok) throw new Error('Failed to fetch');
+ const text = await res.text();
+ return new Blob([text], {type: 'text/plain'});
+ }
+
+ async function handleCopy() {
+ try {
+ await navigator.clipboard.write([
+ // Don't wait for the blob, or Safari will refuse clipboard access
+ new ClipboardItem({'text/plain': fetchPageBlob()}),
+ ]);
+ setCopied(true);
+ } catch {
+ // Silently fail
+ }
+ }
+
+ return (
+
+ );
+}
+
function PageHeading({
title,
status,
- canary,
+ version,
tags = [],
breadcrumbs,
}: PageHeadingProps) {
return (
- {breadcrumbs ? : null}
+
+
+ {breadcrumbs ? : null}
+
+
+
{title}
- {canary && (
+ {version === 'canary' && (
+ )}
+ {version === 'rc' && (
+
+ )}
+ {version === 'experimental' && (
+
)}
diff --git a/src/components/Search.tsx b/src/components/Search.tsx
index f5c963f67..24b066d70 100644
--- a/src/components/Search.tsx
+++ b/src/components/Search.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -9,6 +16,8 @@ import {lazy, useEffect} from 'react';
import * as React from 'react';
import {createPortal} from 'react-dom';
import {siteConfig} from 'siteConfig';
+import type {ComponentType, PropsWithChildren} from 'react';
+import type {DocSearchModalProps} from '@docsearch/react/modal';
export interface SearchProps {
appId?: string;
@@ -83,9 +92,10 @@ const options = {
};
const DocSearchModal: any = lazy(() =>
- // @ts-ignore
import('@docsearch/react/modal').then((mod) => ({
- default: mod.DocSearchModal,
+ default: mod.DocSearchModal as ComponentType<
+ PropsWithChildren
+ >,
}))
);
diff --git a/src/components/Seo.tsx b/src/components/Seo.tsx
index 628085744..906041020 100644
--- a/src/components/Seo.tsx
+++ b/src/components/Seo.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
@@ -124,7 +131,14 @@ export const Seo = withRouter(
)}
+ (null);
diff --git a/src/components/Tag.tsx b/src/components/Tag.tsx
index 8ad04e325..5902b09b7 100644
--- a/src/components/Tag.tsx
+++ b/src/components/Tag.tsx
@@ -1,3 +1,10 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*/
diff --git a/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md b/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md
index b38853494..b0bc9f558 100644
--- a/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md
+++ b/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md
@@ -5,7 +5,7 @@ date: 2020/12/21
description: 2020 has been a long year. As it comes to an end we wanted to share a special Holiday Update on our research into zero-bundle-size React Server Components.
---
-December 21, 2020 by [Dan Abramov](https://twitter.com/dan_abramov), [Lauren Tan](https://twitter.com/potetotes), [Joseph Savona](https://twitter.com/en_JS), and [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage)
+December 21, 2020 by [Dan Abramov](https://bsky.app/profile/danabra.mov), [Lauren Tan](https://twitter.com/potetotes), [Joseph Savona](https://twitter.com/en_JS), and [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage)
---
diff --git a/src/content/blog/2021/06/08/the-plan-for-react-18.md b/src/content/blog/2021/06/08/the-plan-for-react-18.md
index 42843cc42..bed24396d 100644
--- a/src/content/blog/2021/06/08/the-plan-for-react-18.md
+++ b/src/content/blog/2021/06/08/the-plan-for-react-18.md
@@ -5,7 +5,7 @@ date: 2021/06/08
description: The React team is excited to share a few updates. Weβve started work on the React 18 release, which will be our next major version. Weβve created a Working Group to prepare the community for gradual adoption of new features in React 18. Weβve published a React 18 Alpha so that library authors can try it and provide feedback...
---
-June 8, 2021 by [Andrew Clark](https://twitter.com/acdlite), [Brian Vaughn](https://github.com/bvaughn), [Christine Abernathy](https://twitter.com/abernathyca), [Dan Abramov](https://twitter.com/dan_abramov), [Rachel Nabors](https://twitter.com/rachelnabors), [Rick Hanlon](https://twitter.com/rickhanlonii), [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage), and [Seth Webster](https://twitter.com/sethwebster)
+June 8, 2021 by [Andrew Clark](https://twitter.com/acdlite), [Brian Vaughn](https://github.com/bvaughn), [Christine Abernathy](https://twitter.com/abernathyca), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Rachel Nabors](https://twitter.com/rachelnabors), [Rick Hanlon](https://twitter.com/rickhanlonii), [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage), and [Seth Webster](https://twitter.com/sethwebster)
---
diff --git a/src/content/blog/2021/12/17/react-conf-2021-recap.md b/src/content/blog/2021/12/17/react-conf-2021-recap.md
index 1806c757f..c9e75ff7b 100644
--- a/src/content/blog/2021/12/17/react-conf-2021-recap.md
+++ b/src/content/blog/2021/12/17/react-conf-2021-recap.md
@@ -131,7 +131,7 @@ This was our first year planning a conference ourselves, and we have a lot of pe
First, thanks to all of our speakers [Aakansha Doshi](https://twitter.com/aakansha1216), [Andrew Clark](https://twitter.com/acdlite), [Brian Vaughn](https://twitter.com/brian_d_vaughn), [Daishi Kato](https://twitter.com/dai_shi), [Debbie O'Brien](https://twitter.com/debs_obrien), [Delba de Oliveira](https://twitter.com/delba_oliveira), [Diego Haz](https://twitter.com/diegohaz), [Eric Rozell](https://twitter.com/EricRozell), [Helen Lin](https://twitter.com/wizardlyhel), [Juan Tejada](https://twitter.com/_jstejada), [Lauren Tan](https://twitter.com/potetotes), [Linton Ye](https://twitter.com/lintonye), [Lyle Troxell](https://twitter.com/lyle), [Rachel Nabors](https://twitter.com/rachelnabors), [Rick Hanlon](https://twitter.com/rickhanlonii), [Robert Balicki](https://twitter.com/StatisticsFTW), [Roman RΓ€dle](https://twitter.com/raedle), [Sarah Rainsberger](https://twitter.com/sarah11918), [Shaundai Person](https://twitter.com/shaundai), [Shruti Kapoor](https://twitter.com/shrutikapoor08), [Steven Moyes](https://twitter.com/moyessa), [Tafu Nakazaki](https://twitter.com/hawaiiman0), and [Xuan Huang (ι»η)](https://twitter.com/Huxpro).
-Thanks to everyone who helped provide feedback on talks including [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](https://twitter.com/dan_abramov), [Dave McCabe](https://twitter.com/mcc_abe), [Eli White](https://twitter.com/Eli_White), [Joe Savona](https://twitter.com/en_JS), [Lauren Tan](https://twitter.com/potetotes), [Rachel Nabors](https://twitter.com/rachelnabors), and [Tim Yung](https://twitter.com/yungsters).
+Thanks to everyone who helped provide feedback on talks including [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Dave McCabe](https://twitter.com/mcc_abe), [Eli White](https://twitter.com/Eli_White), [Joe Savona](https://twitter.com/en_JS), [Lauren Tan](https://twitter.com/potetotes), [Rachel Nabors](https://twitter.com/rachelnabors), and [Tim Yung](https://twitter.com/yungsters).
Thanks to [Lauren Tan](https://twitter.com/potetotes) for setting up the conference Discord and serving as our Discord admin.
diff --git a/src/content/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022.md b/src/content/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022.md
index 134990991..1aaa94ec1 100644
--- a/src/content/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022.md
+++ b/src/content/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022.md
@@ -5,7 +5,7 @@ date: 2022/06/15
description: React 18 was years in the making, and with it brought valuable lessons for the React team. Its release was the result of many years of research and exploring many paths. Some of those paths were successful; many more were dead-ends that led to new insights. One lesson weβve learned is that itβs frustrating for the community to wait for new features without having insight into these paths that weβre exploring.
---
-June 15, 2022 by [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](https://twitter.com/dan_abramov), [Jan Kassens](https://twitter.com/kassens), [Joseph Savona](https://twitter.com/en_JS), [Josh Story](https://twitter.com/joshcstory), [Lauren Tan](https://twitter.com/potetotes), [Luna Ruan](https://twitter.com/lunaruan), [Mengdi Chen](https://twitter.com/mengdi_en), [Rick Hanlon](https://twitter.com/rickhanlonii), [Robert Zhang](https://twitter.com/jiaxuanzhang01), [Sathya Gunasekaran](https://twitter.com/_gsathya), [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage), and [Xuan Huang](https://twitter.com/Huxpro)
+June 15, 2022 by [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Jan Kassens](https://twitter.com/kassens), [Joseph Savona](https://twitter.com/en_JS), [Josh Story](https://twitter.com/joshcstory), [Lauren Tan](https://twitter.com/potetotes), [Luna Ruan](https://twitter.com/lunaruan), [Mengdi Chen](https://twitter.com/mengdi_en), [Rick Hanlon](https://twitter.com/rickhanlonii), [Robert Zhang](https://twitter.com/jiaxuanzhang01), [Sathya Gunasekaran](https://twitter.com/_gsathya), [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage), and [Xuan Huang](https://twitter.com/Huxpro)
---
@@ -27,7 +27,7 @@ We announced an [experimental demo of React Server Components](https://legacy.re
In particular, weβre abandoning the idea of having forked I/O libraries (eg react-fetch), and instead adopting an async/await model for better compatibility. This doesnβt technically block RSCβs release because you can also use routers for data fetching. Another change is that weβre also moving away from the file extension approach in favor of [annotating boundaries](https://github.com/reactjs/rfcs/pull/189#issuecomment-1116482278).
-Weβre working together with Vercel and Shopify to unify bundler support for shared semantics in both Webpack and Vite. Before launch, we want to make sure that the semantics of RSCs are the same across the whole React ecosystem. This is the major blocker for reaching stable.
+Weβre working together with Vercel and Shopify to unify bundler support for shared semantics in both webpack and Vite. Before launch, we want to make sure that the semantics of RSCs are the same across the whole React ecosystem. This is the major blocker for reaching stable.
## Asset Loading {/*asset-loading*/}
diff --git a/src/content/blog/2023/03/16/introducing-react-dev.md b/src/content/blog/2023/03/16/introducing-react-dev.md
index c4da2b61f..96d2a630d 100644
--- a/src/content/blog/2023/03/16/introducing-react-dev.md
+++ b/src/content/blog/2023/03/16/introducing-react-dev.md
@@ -5,7 +5,7 @@ date: 2023/03/16
description: Today we are thrilled to launch react.dev, the new home for React and its documentation. In this post, we would like to give you a tour of the new site.
---
-March 16, 2023 by [Dan Abramov](https://twitter.com/dan_abramov) and [Rachel Nabors](https://twitter.com/rachelnabors)
+March 16, 2023 by [Dan Abramov](https://bsky.app/profile/danabra.mov) and [Rachel Nabors](https://twitter.com/rachelnabors)
---
@@ -279,17 +279,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -317,17 +317,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -365,17 +365,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -409,17 +409,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -631,7 +631,7 @@ We think there's never been a better time to learn React.
## Who worked on this? {/*who-worked-on-this*/}
-On the React team, [Rachel Nabors](https://twitter.com/rachelnabors/) led the project (and provided the illustrations), and [Dan Abramov](https://twitter.com/dan_abramov) designed the curriculum. They co-authored most of the content together as well.
+On the React team, [Rachel Nabors](https://twitter.com/rachelnabors/) led the project (and provided the illustrations), and [Dan Abramov](https://bsky.app/profile/danabra.mov) designed the curriculum. They co-authored most of the content together as well.
Of course, no project this large happens in isolation. We have a lot of people to thank!
diff --git a/src/content/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023.md b/src/content/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023.md
index aeb677f31..df1fd085d 100644
--- a/src/content/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023.md
+++ b/src/content/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023.md
@@ -31,7 +31,7 @@ The biggest change is that we introduced [`async` / `await`](https://github.com/
Now that we have data fetching pretty well sorted, we're exploring the other direction: sending data from the client to the server, so that you can execute database mutations and implement forms. We're doing this by letting you pass Server Action functions across the server/client boundary, which the client can then call, providing seamless RPC. Server Actions also give you progressively enhanced forms before JavaScript loads.
-React Server Components has shipped in [Next.js App Router](/learn/start-a-new-react-project#nextjs-app-router). This showcases a deep integration of a router that really buys into RSC as a primitive, but it's not the only way to build a RSC-compatible router and framework. There's a clear separation for features provided by the RSC spec and implementation. React Server Components is meant as a spec for components that work across compatible React frameworks.
+React Server Components has shipped in [Next.js App Router](/learn/creating-a-react-app#nextjs-app-router). This showcases a deep integration of a router that really buys into RSC as a primitive, but it's not the only way to build a RSC-compatible router and framework. There's a clear separation for features provided by the RSC spec and implementation. React Server Components is meant as a spec for components that work across compatible React frameworks.
We generally recommend using an existing framework, but if you need to build your own custom framework, it is possible. Building your own RSC-compatible framework is not as easy as we'd like it to be, mainly due to the deep bundler integration needed. The current generation of bundlers are great for use on the client, but they weren't designed with first-class support for splitting a single module graph between the server and the client. This is why we're now partnering directly with bundler developers to get the primitives for RSC built-in.
@@ -92,14 +92,14 @@ Since our last update, we've tested an experimental version of prerendering inte
## Transition Tracing {/*transition-tracing*/}
-The Transition Tracing API lets you detect when [React Transitions](/reference/react/useTransition) become slower and investigate why they may be slow. Following our last update, we have completed the initial design of the API and published an [RFC](https://github.com/reactjs/rfcs/pull/238). The basic capabilities have also been implemented. The project is currently on hold. We welcome feedback on the RFC and look forward to resuming its development to provide a better performance measurement tool for React. This will be particularly useful with routers built on top of React Transitions, like the [Next.js App Router](/learn/start-a-new-react-project#nextjs-app-router).
+The Transition Tracing API lets you detect when [React Transitions](/reference/react/useTransition) become slower and investigate why they may be slow. Following our last update, we have completed the initial design of the API and published an [RFC](https://github.com/reactjs/rfcs/pull/238). The basic capabilities have also been implemented. The project is currently on hold. We welcome feedback on the RFC and look forward to resuming its development to provide a better performance measurement tool for React. This will be particularly useful with routers built on top of React Transitions, like the [Next.js App Router](/learn/creating-a-react-app#nextjs-app-router).
* * *
In addition to this update, our team has made recent guest appearances on community podcasts and livestreams to speak more on our work and answer questions.
-* [Dan Abramov](https://twitter.com/dan_abramov) and [Joe Savona](https://twitter.com/en_JS) were interviewed by [Kent C. Dodds on his YouTube channel](https://www.youtube.com/watch?v=h7tur48JSaw), where they discussed concerns around React Server Components.
-* [Dan Abramov](https://twitter.com/dan_abramov) and [Joe Savona](https://twitter.com/en_JS) were guests on the [JSParty podcast](https://jsparty.fm/267) and shared their thoughts about the future of React.
+* [Dan Abramov](https://bsky.app/profile/danabra.mov) and [Joe Savona](https://twitter.com/en_JS) were interviewed by [Kent C. Dodds on his YouTube channel](https://www.youtube.com/watch?v=h7tur48JSaw), where they discussed concerns around React Server Components.
+* [Dan Abramov](https://bsky.app/profile/danabra.mov) and [Joe Savona](https://twitter.com/en_JS) were guests on the [JSParty podcast](https://jsparty.fm/267) and shared their thoughts about the future of React.
-Thanks to [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](https://twitter.com/dan_abramov), [Dave McCabe](https://twitter.com/mcc_abe), [Luna Wei](https://twitter.com/lunaleaps), [Matt Carroll](https://twitter.com/mattcarrollcode), [Sean Keegan](https://twitter.com/DevRelSean), [Sebastian Silbermann](https://twitter.com/sebsilbermann), [Seth Webster](https://twitter.com/sethwebster), and [Sophie Alpert](https://twitter.com/sophiebits) for reviewing this post.
+Thanks to [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Dave McCabe](https://twitter.com/mcc_abe), [Luna Wei](https://twitter.com/lunaleaps), [Matt Carroll](https://twitter.com/mattcarrollcode), [Sean Keegan](https://twitter.com/DevRelSean), [Sebastian Silbermann](https://twitter.com/sebsilbermann), [Seth Webster](https://twitter.com/sethwebster), and [Sophie Alpert](https://twitter.com/sophiebits) for reviewing this post.
Thanks for reading, and see you in the next update!
diff --git a/src/content/blog/2023/05/03/react-canaries.md b/src/content/blog/2023/05/03/react-canaries.md
index 19d9960b0..c2e1a823e 100644
--- a/src/content/blog/2023/05/03/react-canaries.md
+++ b/src/content/blog/2023/05/03/react-canaries.md
@@ -5,7 +5,7 @@ date: 2023/05/03
description: We'd like to offer the React community an option to adopt individual new features as soon as their design is close to final, before they're released in a stable version--similar to how Meta has long used bleeding-edge versions of React internally. We are introducing a new officially supported [Canary release channel](/community/versioning-policy#canary-channel). It lets curated setups like frameworks decouple adoption of individual React features from the React release schedule.
---
-May 3, 2023 by [Dan Abramov](https://twitter.com/dan_abramov), [Sophie Alpert](https://twitter.com/sophiebits), [Rick Hanlon](https://twitter.com/rickhanlonii), [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage), and [Andrew Clark](https://twitter.com/acdlite)
+May 3, 2023 by [Dan Abramov](https://bsky.app/profile/danabra.mov), [Sophie Alpert](https://twitter.com/sophiebits), [Rick Hanlon](https://twitter.com/rickhanlonii), [Sebastian MarkbΓ₯ge](https://twitter.com/sebmarkbage), and [Andrew Clark](https://twitter.com/acdlite)
---
diff --git a/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md b/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
index fee21f4ec..002dae2a9 100644
--- a/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
+++ b/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
@@ -5,7 +5,7 @@ date: 2024/02/15
description: In React Labs posts, we write about projects in active research and development. Weβve made significant progress since our last update, and weβd like to share our progress.
---
-February 15, 2024 by [Joseph Savona](https://twitter.com/en_JS), [Ricky Hanlon](https://twitter.com/rickhanlonii), [Andrew Clark](https://twitter.com/acdlite), [Matt Carroll](https://twitter.com/mattcarrollcode), and [Dan Abramov](https://twitter.com/dan_abramov).
+February 15, 2024 by [Joseph Savona](https://twitter.com/en_JS), [Ricky Hanlon](https://twitter.com/rickhanlonii), [Andrew Clark](https://twitter.com/acdlite), [Matt Carroll](https://twitter.com/mattcarrollcode), and [Dan Abramov](https://bsky.app/profile/danabra.mov).
---
@@ -15,14 +15,6 @@ In React Labs posts, we write about projects in active research and development.
-
-
-React Conf 2024 is scheduled for May 15β16 in Henderson, Nevada! If youβre interested in attending React Conf in person, you can [sign up for the ticket lottery](https://forms.reform.app/bLaLeE/react-conf-2024-ticket-lottery/1aRQLK) until February 28th.
-
-For more info on tickets, free streaming, sponsoring, and more, see [the React Conf website](https://conf.react.dev).
-
-
-
---
## React Compiler {/*react-compiler*/}
@@ -57,19 +49,19 @@ We refer to this broader collection of features as simply "Actions". Actions all
The `action` function can operate synchronously or asynchronously. You can define them on the client side using standard JavaScript or on the server with the [`'use server'`](/reference/rsc/use-server) directive. When using an action, React will manage the life cycle of the data submission for you, providing hooks like [`useFormStatus`](/reference/react-dom/hooks/useFormStatus), and [`useActionState`](/reference/react/useActionState) to access the current state and response of the form action.
-By default, Actions are submitted within a [transition](/reference/react/useTransition), keeping the current page interactive while the action is processing. Since Actions support async functions, we've also added the ability to use `async/await` in transitions. This allows you to show pending UI with the `isPending` state of a transition when an async request like `fetch` starts, and show the pending UI all the way through the update being applied.
+By default, Actions are submitted within a [transition](/reference/react/useTransition), keeping the current page interactive while the action is processing. Since Actions support async functions, we've also added the ability to use `async/await` in transitions. This allows you to show pending UI with the `isPending` state of a transition when an async request like `fetch` starts, and show the pending UI all the way through the update being applied.
Alongside Actions, we're introducing a feature named [`useOptimistic`](/reference/react/useOptimistic) for managing optimistic state updates. With this hook, you can apply temporary updates that are automatically reverted once the final state commits. For Actions, this allows you to optimistically set the final state of the data on the client, assuming the submission is successful, and revert to the value for data received from the server. It works using regular `async`/`await`, so it works the same whether you're using `fetch` on the client, or a Server Action from the server.
Library authors can implement custom `action={fn}` props in their own components with `useTransition`. Our intent is for libraries to adopt the Actions pattern when designing their component APIs, to provide a consistent experience for React developers. For example, if your library provides a `` component, consider also exposing a `` API, too.
-While we initially focused on Server Actions for client-server data transfer, our philosophy for React is to provide the same programming model across all platforms and environments. When possible, if we introduce a feature on the client, we aim to make it also work on the server, and vice versa. This philosophy allows us to create a single set of APIs that work no matter where your app runs, making it easier to upgrade to different environments later.
+While we initially focused on Server Actions for client-server data transfer, our philosophy for React is to provide the same programming model across all platforms and environments. When possible, if we introduce a feature on the client, we aim to make it also work on the server, and vice versa. This philosophy allows us to create a single set of APIs that work no matter where your app runs, making it easier to upgrade to different environments later.
Actions are now available in the Canary channel and will ship in the next release of React.
## New Features in React Canary {/*new-features-in-react-canary*/}
-We introduced [React Canaries](/blog/2023/05/03/react-canaries) as an option to adopt individual new stable features as soon as their design is close to final, before theyβre released in a stable semver version.
+We introduced [React Canaries](/blog/2023/05/03/react-canaries) as an option to adopt individual new stable features as soon as their design is close to final, before theyβre released in a stable semver version.
Canaries are a change to the way we develop React. Previously, features would be researched and built privately inside of Meta, so users would only see the final polished product when released to Stable. With Canaries, weβre building in public with the help of the community to finalize features we share in the React Labs blog series. This means you hear about new features sooner, as theyβre being finalized instead of after theyβre complete.
@@ -83,7 +75,7 @@ React Server Components, Asset Loading, Document Metadata, and Actions have all
- **Actions**: As shared above, we've added Actions to manage sending data from the client to the server. You can add `action` to elements like [``](/reference/react-dom/components/form), access the status with [`useFormStatus`](/reference/react-dom/hooks/useFormStatus), handle the result with [`useActionState`](/reference/react/useActionState), and optimistically update the UI with [`useOptimistic`](/reference/react/useOptimistic).
-Since all of these features work together, itβs difficult to release them in the Stable channel individually. Releasing Actions without the complementary hooks for accessing form states would limit the practical usability of Actions. Introducing React Server Components without integrating Server Actions would complicate modifying data on the server.
+Since all of these features work together, itβs difficult to release them in the Stable channel individually. Releasing Actions without the complementary hooks for accessing form states would limit the practical usability of Actions. Introducing React Server Components without integrating Server Actions would complicate modifying data on the server.
Before we can release a set of features to the Stable channel, we need to ensure they work cohesively and developers have everything they need to use them in production. React Canaries allow us to develop these features individually, and release the stable APIs incrementally until the entire feature set is complete.
@@ -107,7 +99,7 @@ Activity is still under research and our remaining work is to finalize the primi
In addition to this update, our team has presented at conferences and made appearances on podcasts to speak more on our work and answer questions.
-- [Sathya Gunasekaran](/community/team#sathya-gunasekaran) spoke about the React Compiler at the [React India](https://www.youtube.com/watch?v=kjOacmVsLSE) conference
+- [Sathya Gunasekaran](https://github.com/gsathya) spoke about the React Compiler at the [React India](https://www.youtube.com/watch?v=kjOacmVsLSE) conference
- [Dan Abramov](/community/team#dan-abramov) gave a talk at [RemixConf](https://www.youtube.com/watch?v=zMf_xeGPn6s) titled βReact from Another Dimensionβ which explores an alternative history of how React Server Components and Actions could have been created
diff --git a/src/content/blog/2024/04/25/react-19-upgrade-guide.md b/src/content/blog/2024/04/25/react-19-upgrade-guide.md
index e6d76ec7b..1823ebdfb 100644
--- a/src/content/blog/2024/04/25/react-19-upgrade-guide.md
+++ b/src/content/blog/2024/04/25/react-19-upgrade-guide.md
@@ -1,5 +1,5 @@
---
-title: "React 19 RC Upgrade Guide"
+title: "React 19 Upgrade Guide"
author: Ricky Hanlon
date: 2024/04/25
description: The improvements added to React 19 require some breaking changes, but we've worked to make the upgrade as smooth as possible and we don't expect the changes to impact most apps. In this post, we will guide you through the steps for upgrading apps and libraries to React 19.
@@ -12,7 +12,7 @@ April 25, 2024 by [Ricky Hanlon](https://twitter.com/rickhanlonii)
-The improvements added to React 19 RC require some breaking changes, but we've worked to make the upgrade as smooth as possible, and we don't expect the changes to impact most apps.
+The improvements added to React 19 require some breaking changes, but we've worked to make the upgrade as smooth as possible, and we don't expect the changes to impact most apps.
@@ -20,11 +20,11 @@ The improvements added to React 19 RC require some breaking changes, but we've w
#### React 18.3 has also been published {/*react-18-3*/}
-To help make the upgrade to React 19 easier, we've published a `react@18.3` release that is identical to 18.2 but adds warnings for deprecated APIs and other changes that are needed for React 19.
+To help make the upgrade to React 19 easier, we've published a `react@18.3` release that is identical to 18.2 but adds warnings for deprecated APIs and other changes that are needed for React 19.
We recommend upgrading to React 18.3 first to help identify any issues before upgrading to React 19.
-For a list of changes in 18.3 see the [Release Notes](https://github.com/facebook/react/blob/main/CHANGELOG.md).
+For a list of changes in 18.3 see the [Release Notes](https://github.com/facebook/react/blob/main/CHANGELOG.md#1830-april-25-2024).
@@ -38,7 +38,7 @@ In this post, we will guide you through the steps for upgrading to React 19:
- [TypeScript changes](#typescript-changes)
- [Changelog](#changelog)
-If you'd like to help us test React 19, follow the steps in this upgrade guide and [report any issues](https://github.com/facebook/react/issues/new?assignees=&labels=React+19&projects=&template=19.md&title=%5BReact+19%5D) you encounter. For a list of new features added to React 19, see the [React 19 release post](/blog/2024/04/25/react-19).
+If you'd like to help us test React 19, follow the steps in this upgrade guide and [report any issues](https://github.com/facebook/react/issues/new?assignees=&labels=React+19&projects=&template=19.md&title=%5BReact+19%5D) you encounter. For a list of new features added to React 19, see the [React 19 release post](/blog/2024/12/05/react-19).
---
## Installing {/*installing*/}
@@ -70,28 +70,23 @@ We expect most apps will not be affected since the transform is enabled in most
To install the latest version of React and React DOM:
```bash
-npm install --save-exact react@rc react-dom@rc
+npm install --save-exact react@^19.0.0 react-dom@^19.0.0
```
Or, if you're using Yarn:
```bash
-yarn add --exact react@rc react-dom@rc
+yarn add --exact react@^19.0.0 react-dom@^19.0.0
```
-If you're using TypeScript, you also need to update the types. Once React 19 is released as stable, you can install the types as usual from `@types/react` and `@types/react-dom`. Until the stable release, the types are available in different packages which need to be enforced in your `package.json`:
+If you're using TypeScript, you also need to update the types.
+```bash
+npm install --save-exact @types/react@^19.0.0 @types/react-dom@^19.0.0
+```
-```json
-{
- "dependencies": {
- "@types/react": "npm:types-react@rc",
- "@types/react-dom": "npm:types-react-dom@rc"
- },
- "overrides": {
- "@types/react": "npm:types-react@rc",
- "@types/react-dom": "npm:types-react-dom@rc"
- }
-}
+Or, if you're using Yarn:
+```bash
+yarn add --exact @types/react@^19.0.0 @types/react-dom@^19.0.0
```
We're also including a codemod for the most common replacements. See [TypeScript changes](#typescript-changes) below.
@@ -114,17 +109,17 @@ npx codemod@latest react/19/migration-recipe
```
This will run the following codemods from `react-codemod`:
-- [`replace-reactdom-render`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-reactdom-render)
+- [`replace-reactdom-render`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-reactdom-render)
- [`replace-string-ref`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-string-ref)
- [`replace-act-import`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-act-import)
-- [`replace-use-form-state`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-use-form-state)
-- [`prop-types-typescript`](TODO)
+- [`replace-use-form-state`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-use-form-state)
+- [`prop-types-typescript`](https://github.com/reactjs/react-codemod#react-proptypes-to-prop-types)
This does not include the TypeScript changes. See [TypeScript changes](#typescript-changes) below.
-Changes that include a codemod include the command below.
+Changes that include a codemod include the command below.
For a list of all available codemods, see the [`react-codemod` repo](https://github.com/reactjs/react-codemod).
@@ -132,7 +127,7 @@ For a list of all available codemods, see the [`react-codemod` repo](https://git
### Errors in render are not re-thrown {/*errors-in-render-are-not-re-thrown*/}
-In previous versions of React, errors thrown during render were caught and rethrown. In DEV, we would also log to `console.error`, resulting in duplicate error logs.
+In previous versions of React, errors thrown during render were caught and rethrown. In DEV, we would also log to `console.error`, resulting in duplicate error logs.
In React 19, we've [improved how errors are handled](/blog/2024/04/25/react-19#error-handling) to reduce duplication by not re-throwing:
@@ -353,7 +348,7 @@ npm install react-shallow-renderer --save-dev
##### Please reconsider shallow rendering {/*please-reconsider-shallow-rendering*/}
-Shallow rendering depends on React internals and can block you from future upgrades. We recommend migrating your tests to [@testing-library/react](https://testing-library.com/docs/react-testing-library/intro/) or [@testing-library/react-native](https://testing-library.com/docs/react-native-testing-library/intro).
+Shallow rendering depends on React internals and can block you from future upgrades. We recommend migrating your tests to [@testing-library/react](https://testing-library.com/docs/react-testing-library/intro/) or [@testing-library/react-native](https://testing-library.com/docs/react-native-testing-library/intro).
@@ -470,7 +465,7 @@ npx codemod@latest react/19/replace-reactdom-render
#### Removed: `ReactDOM.findDOMNode` {/*removed-reactdom-finddomnode*/}
-`ReactDOM.findDOMNode` was [deprecated in October 2018 (v16.6.0)](https://legacy.reactjs.org/blog/2018/10/23/react-v-16-6.html#deprecations-in-strictmode).
+`ReactDOM.findDOMNode` was [deprecated in October 2018 (v16.6.0)](https://legacy.reactjs.org/blog/2018/10/23/react-v-16-6.html#deprecations-in-strictmode).
We're removing `findDOMNode` because it was a legacy escape hatch that was slow to execute, fragile to refactoring, only returned the first child, and broke abstraction levels (see more [here](https://legacy.reactjs.org/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage)). You can replace `ReactDOM.findDOMNode` with [DOM refs](/learn/manipulating-the-dom-with-refs):
@@ -556,7 +551,7 @@ This change means Suspense fallbacks display faster, while still warming lazy re
### UMD builds removed {/*umd-builds-removed*/}
-UMD was widely used in the past as a convenient way to load React without a build step. Now, there are modern alternatives for loading modules as scripts in HTML documents. Starting with React 19, React will no longer produce UMD builds to reduce the complexity of its testing and release process.
+UMD was widely used in the past as a convenient way to load React without a build step. Now, there are modern alternatives for loading modules as scripts in HTML documents. Starting with React 19, React will no longer produce UMD builds to reduce the complexity of its testing and release process.
To load React 19 with a script tag, we recommend using an ESM-based CDN such as [esm.sh](https://esm.sh/).
@@ -574,7 +569,7 @@ This release includes changes to React internals that may impact libraries that
Based on our [Versioning Policy](https://react.dev/community/versioning-policy#what-counts-as-a-breaking-change), these updates are not listed as breaking changes, and we are not including docs for how to upgrade them. The recommendation is to remove any code that depends on internals.
-To reflect the impact of using internals, we have renamed the `SECRET_INTERNALS` suffix to:
+To reflect the impact of using internals, we have renamed the `SECRET_INTERNALS` suffix to:
`_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE`
@@ -735,12 +730,12 @@ const reducer = (state: State, action: Action) => state;
### Other breaking changes {/*other-breaking-changes*/}
-- **react-dom**: Error for javascript URLs in src/href [#26507](https://github.com/facebook/react/pull/26507)
+- **react-dom**: Error for javascript URLs in `src` and `href` [#26507](https://github.com/facebook/react/pull/26507)
- **react-dom**: Remove `errorInfo.digest` from `onRecoverableError` [#28222](https://github.com/facebook/react/pull/28222)
- **react-dom**: Remove `unstable_flushControlled` [#26397](https://github.com/facebook/react/pull/26397)
- **react-dom**: Remove `unstable_createEventHandle` [#28271](https://github.com/facebook/react/pull/28271)
- **react-dom**: Remove `unstable_renderSubtreeIntoContainer` [#28271](https://github.com/facebook/react/pull/28271)
-- **react-dom**: Remove `unstable_runWithPrioirty` [#28271](https://github.com/facebook/react/pull/28271)
+- **react-dom**: Remove `unstable_runWithPriority` [#28271](https://github.com/facebook/react/pull/28271)
- **react-is**: Remove deprecated methods from `react-is` [28224](https://github.com/facebook/react/pull/28224)
### Other notable changes {/*other-notable-changes*/}
@@ -752,7 +747,7 @@ const reducer = (state: State, action: Action) => state;
- **react-dom**: Remove layout effect warning during SSR [#26395](https://github.com/facebook/react/pull/26395)
- **react-dom**: Warn and donβt set empty string for src/href (except anchor tags) [#28124](https://github.com/facebook/react/pull/28124)
-We'll publish the full changelog with the stable release of React 19.
+For a full list of changes, please see the [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md#1900-december-5-2024).
---
diff --git a/src/content/blog/2024/05/22/react-conf-2024-recap.md b/src/content/blog/2024/05/22/react-conf-2024-recap.md
index 96417fd8b..e22464010 100644
--- a/src/content/blog/2024/05/22/react-conf-2024-recap.md
+++ b/src/content/blog/2024/05/22/react-conf-2024-recap.md
@@ -17,7 +17,7 @@ Last week we hosted React Conf 2024, a two-day conference in Henderson, Nevada w
---
-At React Conf 2024, we announced the [React 19 RC](/blog/2024/04/25/react-19), the [React Native New Architecture Beta](https://github.com/reactwg/react-native-new-architecture/discussions/189), and an experimental release of the [React Compiler](/learn/react-compiler). The community also took the stage to announce [React Router v7](https://remix.run/blog/merging-remix-and-react-router), [Universal Server Components](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=20765s) in Expo Router, React Server Components in [RedwoodJS](https://redwoodjs.com/blog/rsc-now-in-redwoodjs), and much more.
+At React Conf 2024, we announced the [React 19 RC](/blog/2024/12/05/react-19), the [React Native New Architecture Beta](https://github.com/reactwg/react-native-new-architecture/discussions/189), and an experimental release of the [React Compiler](/learn/react-compiler). The community also took the stage to announce [React Router v7](https://remix.run/blog/merging-remix-and-react-router), [Universal Server Components](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=20765s) in Expo Router, React Server Components in [RedwoodJS](https://redwoodjs.com/blog/rsc-now-in-redwoodjs), and much more.
The entire [day 1](https://www.youtube.com/watch?v=T8TZQ6k4SLE) and [day 2](https://www.youtube.com/watch?v=0ckOUBiuxVY) streams are available online. In this post, we'll summarize the talks and announcements from the event.
@@ -36,13 +36,13 @@ For more, check out these talks from the community later in the conference:
- [RedwoodJS, now with React Server Components](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=26815s) by [Amy Dutton](https://twitter.com/selfteachme)
- [Introducing Universal React Server Components in Expo Router](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=20765s) by [Evan Bacon](https://twitter.com/Baconbrix)
-Next in the keynote, [Josh Story](https://twitter.com/joshcstory) and [Andrew Clark](https://twitter.com/acdlite) shared new features coming in React 19, and announced the React 19 RC which is ready for testing in production. Check out all the features in the [React 19 release post](/blog/2024/04/25/react-19), and see these talks for deep dives on the new features:
+Next in the keynote, [Josh Story](https://twitter.com/joshcstory) and [Andrew Clark](https://twitter.com/acdlite) shared new features coming in React 19, and announced the React 19 RC which is ready for testing in production. Check out all the features in the [React 19 release post](/blog/2024/12/05/react-19), and see these talks for deep dives on the new features:
- [What's new in React 19](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=8880s) by [Lydia Hallie](https://twitter.com/lydiahallie)
- [React Unpacked: A Roadmap to React 19](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=10112s) by [Sam Selikoff](https://twitter.com/samselikoff)
- [React 19 Deep Dive: Coordinating HTML](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=24916s) by [Josh Story](https://twitter.com/joshcstory)
- [Enhancing Forms with React Server Components](https://www.youtube.com/watch?v=0ckOUBiuxVY&t=25280s) by [Aurora Walberg Scharff](https://twitter.com/aurorascharff)
-- [React for Two Computers](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=18825s) by [Dan Abramov](https://twitter.com/dan_abramov2)
+- [React for Two Computers](https://www.youtube.com/watch?v=T8TZQ6k4SLE&t=18825s) by [Dan Abramov](https://bsky.app/profile/danabra.mov)
- [And Now You Understand React Server Components](https://www.youtube.com/watch?v=0ckOUBiuxVY&t=11256s) by [Kent C. Dodds](https://twitter.com/kentcdodds)
Finally, we ended the keynote with [Joe Savona](https://twitter.com/en_JS), [Sathya Gunasekaran](https://twitter.com/_gsathya), and [Mofei Zhang](https://twitter.com/zmofei) announcing that the React Compiler is now [Open Source](https://github.com/facebook/react/pull/29061), and sharing an experimental version of the React Compiler to try out.
@@ -112,7 +112,7 @@ Thank you [Ricky Hanlon](https://www.youtube.com/watch?v=FxTZL2U-uKg&t=1263s) fo
Thank you [Callstack](https://www.callstack.com/) for building the conference website; and to [Kadi Kraman](https://twitter.com/kadikraman) and the [Expo](https://expo.dev/) team for building the conference mobile app.
-Thank you to all the sponsors who made the event possible: [Remix](https://remix.run/), [Amazon](https://developer.amazon.com/apps-and-games?cmp=US_2024_05_3P_React-Conf-2024&ch=prtnr&chlast=prtnr&pub=ref&publast=ref&type=org&typelast=org), [MUI](https://mui.com/), [Sentry](https://sentry.io/for/react/?utm_source=sponsored-conf&utm_medium=sponsored-event&utm_campaign=frontend-fy25q2-evergreen&utm_content=logo-reactconf2024-learnmore), [Abbott](https://www.jobs.abbott/software), [Expo](https://expo.dev/), [RedwoodJS](https://redwoodjs.com/), and [Vercel](https://vercel.com).
+Thank you to all the sponsors who made the event possible: [Remix](https://remix.run/), [Amazon](https://developer.amazon.com/apps-and-games?cmp=US_2024_05_3P_React-Conf-2024&ch=prtnr&chlast=prtnr&pub=ref&publast=ref&type=org&typelast=org), [MUI](https://mui.com/), [Sentry](https://sentry.io/for/react/?utm_source=sponsored-conf&utm_medium=sponsored-event&utm_campaign=frontend-fy25q2-evergreen&utm_content=logo-reactconf2024-learnmore), [Abbott](https://www.jobs.abbott/software), [Expo](https://expo.dev/), [RedwoodJS](https://rwsdk.com/), and [Vercel](https://vercel.com).
Thank you to the AV Team for the visuals, stage, and sound; and to the Westin Hotel for hosting us.
diff --git a/src/content/blog/2024/10/21/react-compiler-beta-release.md b/src/content/blog/2024/10/21/react-compiler-beta-release.md
index f5a870b22..750c0f3b8 100644
--- a/src/content/blog/2024/10/21/react-compiler-beta-release.md
+++ b/src/content/blog/2024/10/21/react-compiler-beta-release.md
@@ -10,6 +10,14 @@ October 21, 2024 by [Lauren Tan](https://twitter.com/potetotes).
---
+
+
+### React Compiler is now stable! {/*react-compiler-is-now-in-rc*/}
+
+Please see the [stable release blog post](/blog/2025/10/07/react-compiler-1) for details.
+
+
+
The React team is excited to share new updates:
@@ -64,11 +72,11 @@ Or, if you're using Yarn:
yarn add -D eslint-plugin-react-compiler@beta
-After installation you can enable the linter by [adding it to your ESLint config](/learn/react-compiler#installing-eslint-plugin-react-compiler). Using the linter helps identify Rules of React breakages, making it easier to adopt the compiler when it's fully released.
+After installation you can enable the linter by [adding it to your ESLint config](/learn/react-compiler/installation#eslint-integration). Using the linter helps identify Rules of React breakages, making it easier to adopt the compiler when it's fully released.
## Backwards Compatibility {/*backwards-compatibility*/}
-React Compiler produces code that depends on runtime APIs added in React 19, but we've since added support for the compiler to also work with React 17 and 18. If you are not on React 19 yet, in the Beta release you can now try out React Compiler by specifying a minimum `target` in your compiler config, and adding `react-compiler-runtime` as a dependency. [You can find docs on this here](/learn/react-compiler#using-react-compiler-with-react-17-or-18).
+React Compiler produces code that depends on runtime APIs added in React 19, but we've since added support for the compiler to also work with React 17 and 18. If you are not on React 19 yet, in the Beta release you can now try out React Compiler by specifying a minimum `target` in your compiler config, and adding `react-compiler-runtime` as a dependency. [You can find docs on this here](/reference/react-compiler/configuration#react-17-18).
## Using React Compiler in libraries {/*using-react-compiler-in-libraries*/}
@@ -78,7 +86,7 @@ React Compiler can also be used to compile libraries. Because React Compiler nee
Because your code is pre-compiled, users of your library will not need to have the compiler enabled in order to benefit from the automatic memoization applied to your library. If your library targets apps not yet on React 19, specify a minimum `target` and add `react-compiler-runtime` as a direct dependency. The runtime package will use the correct implementation of APIs depending on the application's version, and polyfill the missing APIs if necessary.
-[You can find more docs on this here.](/learn/react-compiler#using-the-compiler-on-libraries)
+[You can find more docs on this here.](/reference/react-compiler/compiling-libraries)
## Opening up React Compiler Working Group to everyone {/*opening-up-react-compiler-working-group-to-everyone*/}
diff --git a/src/content/blog/2024/04/25/react-19.md b/src/content/blog/2024/12/05/react-19.md
similarity index 91%
rename from src/content/blog/2024/04/25/react-19.md
rename to src/content/blog/2024/12/05/react-19.md
index 1b19c3546..749646458 100644
--- a/src/content/blog/2024/04/25/react-19.md
+++ b/src/content/blog/2024/12/05/react-19.md
@@ -1,21 +1,33 @@
---
-title: "React 19 RC"
+title: "React v19"
author: The React Team
-date: 2024/04/25
-description: React 19 RC is now available on npm! In this post, we'll give an overview of the new features in React 19, and how you can adopt them.
+date: 2024/12/05
+description: React 19 is now available on npm! In this post, we'll give an overview of the new features in React 19, and how you can adopt them.
---
-April 25, 2024 by [The React Team](/community/team)
+December 05, 2024 by [The React Team](/community/team)
---
+
+
+### React 19 is now stable! {/*react-19-is-now-stable*/}
+
+Additions since this post was originally shared with the React 19 RC in April:
+
+- **Pre-warming for suspended trees**: see [Improvements to Suspense](/blog/2024/04/25/react-19-upgrade-guide#improvements-to-suspense).
+- **React DOM static APIs**: see [New React DOM Static APIs](#new-react-dom-static-apis).
+
+_The date for this post has been updated to reflect the stable release date._
+
+
-React 19 RC is now available on npm!
+React v19 is now available on npm!
-In our [React 19 RC Upgrade Guide](/blog/2024/04/25/react-19-upgrade-guide), we shared step-by-step instructions for upgrading your app to React 19. In this post, we'll give an overview of the new features in React 19, and how you can adopt them.
+In our [React 19 Upgrade Guide](/blog/2024/04/25/react-19-upgrade-guide), we shared step-by-step instructions for upgrading your app to React 19. In this post, we'll give an overview of the new features in React 19, and how you can adopt them.
- [What's new in React 19](#whats-new-in-react-19)
- [Improvements in React 19](#improvements-in-react-19)
@@ -47,7 +59,7 @@ function UpdateName({}) {
if (error) {
setError(error);
return;
- }
+ }
redirect("/path");
};
@@ -80,7 +92,7 @@ function UpdateName({}) {
if (error) {
setError(error);
return;
- }
+ }
redirect("/path");
})
};
@@ -164,7 +176,7 @@ const [error, submitAction, isPending] = useActionState(
);
```
-`useActionState` accepts a function (the "Action"), and returns a wrapped Action to call. This works because Actions compose. When the wrapped Action is called, `useActionState` will return the last result of the Action as `data`, and the pending state of the Action as `pending`.
+`useActionState` accepts a function (the "Action"), and returns a wrapped Action to call. This works because Actions compose. When the wrapped Action is called, `useActionState` will return the last result of the Action as `data`, and the pending state of the Action as `pending`.
@@ -282,7 +294,7 @@ A component was suspended by an uncached promise. Creating promises inside a Cli
-To fix, you need to pass a promise from a suspense powered library or framework that supports caching for promises. In the future we plan to ship features to make it easier to cache promises in render.
+To fix, you need to pass a promise from a Suspense powered library or framework that supports caching for promises. In the future we plan to ship features to make it easier to cache promises in render.
@@ -296,7 +308,7 @@ function Heading({children}) {
if (children == null) {
return null;
}
-
+
// This would not work with useContext
// because of the early return.
const theme = use(ThemeContext);
@@ -312,6 +324,30 @@ The `use` API can only be called in render, similar to hooks. Unlike hooks, `use
For more information, see the docs for [`use`](/reference/react/use).
+## New React DOM Static APIs {/*new-react-dom-static-apis*/}
+
+We've added two new APIs to `react-dom/static` for static site generation:
+- [`prerender`](/reference/react-dom/static/prerender)
+- [`prerenderToNodeStream`](/reference/react-dom/static/prerenderToNodeStream)
+
+These new APIs improve on `renderToString` by waiting for data to load for static HTML generation. They are designed to work with streaming environments like Node.js Streams and Web Streams. For example, in a Web Stream environment, you can prerender a React tree to static HTML with `prerender`:
+
+```js
+import { prerender } from 'react-dom/static';
+
+async function handler(request) {
+ const {prelude} = await prerender(, {
+ bootstrapScripts: ['/main.js']
+ });
+ return new Response(prelude, {
+ headers: { 'content-type': 'text/html' },
+ });
+}
+```
+
+Prerender APIs will wait for all data to load before returning the static HTML stream. Streams can be converted to strings, or sent with a streaming response. They do not support streaming content as it loads, which is supported by the existing [React DOM server rendering APIs](/reference/react-dom/server).
+
+For more information, see [React DOM Static APIs](/reference/react-dom/static).
## React Server Components {/*react-server-components*/}
@@ -319,14 +355,14 @@ For more information, see the docs for [`use`](/reference/react/use).
Server Components are a new option that allows rendering components ahead of time, before bundling, in an environment separate from your client application or SSR server. This separate environment is the "server" in React Server Components. Server Components can run once at build time on your CI server, or they can be run for each request using a web server.
-React 19 includes all of the React Server Components features included from the Canary channel. This means libraries that ship with Server Components can now target React 19 as a peer dependency with a `react-server` [export condition](https://github.com/reactjs/rfcs/blob/main/text/0227-server-module-conventions.md#react-server-conditional-exports) for use in frameworks that support the [Full-stack React Architecture](/learn/start-a-new-react-project#which-features-make-up-the-react-teams-full-stack-architecture-vision).
+React 19 includes all of the React Server Components features included from the Canary channel. This means libraries that ship with Server Components can now target React 19 as a peer dependency with a `react-server` [export condition](https://github.com/reactjs/rfcs/blob/main/text/0227-server-module-conventions.md#react-server-conditional-exports) for use in frameworks that support the [Full-stack React Architecture](/learn/creating-a-react-app#which-features-make-up-the-react-teams-full-stack-architecture-vision).
#### How do I build support for Server Components? {/*how-do-i-build-support-for-server-components*/}
-While React Server Components in React 19 are stable and will not break between major versions, the underlying APIs used to implement a React Server Components bundler or framework do not follow semver and may break between minors in React 19.x.
+While React Server Components in React 19 are stable and will not break between minor versions, the underlying APIs used to implement a React Server Components bundler or framework do not follow semver and may break between minors in React 19.x.
To support React Server Components as a bundler or framework, we recommend pinning to a specific React version, or using the Canary release. We will continue working with bundlers and frameworks to stabilize the APIs used to implement React Server Components in the future.
@@ -374,7 +410,7 @@ New function components will no longer need `forwardRef`, and we will be publish
-`refs` passed to classes are not passed as props since they reference the component instance.
+`ref`s passed to classes are not passed as props since they reference the component instance.
@@ -461,7 +497,7 @@ function App({children}) {
{children}
- );
+ );
}
```
@@ -485,7 +521,7 @@ We now support returning a cleanup function from `ref` callbacks:
/>
```
-When the component unmounts, React will call the cleanup function returned from the `ref` callback. This works for DOM refs, refs to class components, and `useImperativeHandle`.
+When the component unmounts, React will call the cleanup function returned from the `ref` callback. This works for DOM refs, refs to class components, and `useImperativeHandle`.
@@ -515,7 +551,7 @@ function Search({deferredValue}) {
// On initial render the value is ''.
// Then a re-render is scheduled with the deferredValue.
const value = useDeferredValue(deferredValue, '');
-
+
return (
);
@@ -528,7 +564,7 @@ For more, see [`useDeferredValue`](/reference/react/useDeferredValue).
### Support for Document Metadata {/*support-for-metadata-tags*/}
-In HTML, document metadata tags like ``, ``, and `` are reserved for placement in the `` section of the document. In React, the component that decides what metadata is appropriate for the app may be very far from the place where you render the `` or React does not render the `` at all. In the past, these elements would need to be inserted manually in an effect, or by libraries like [`react-helmet`](https://github.com/nfl/react-helmet), and required careful handling when server rendering a React application.
+In HTML, document metadata tags like ``, ``, and `` are reserved for placement in the `` section of the document. In React, the component that decides what metadata is appropriate for the app may be very far from the place where you render the `` or React does not render the `` at all. In the past, these elements would need to be inserted manually in an effect, or by libraries like [`react-helmet`](https://github.com/nfl/react-helmet), and required careful handling when server rendering a React application.
In React 19, we're adding support for rendering document metadata tags in components natively:
@@ -690,7 +726,7 @@ In React 19, unexpected tags in the `` and `` will be skipped over,
### Better error reporting {/*error-handling*/}
-We improved error handling in React 19 to remove duplication and provide options for handling caught and uncaught errors. For example, when there's an error in render caught by an Error Boundary, previously React would throw the error twice (once for the original error, then again after failing to automatically recover), and then call `console.error` with info about where the error occurred.
+We improved error handling in React 19 to remove duplication and provide options for handling caught and uncaught errors. For example, when there's an error in render caught by an Error Boundary, previously React would throw the error twice (once for the original error, then again after failing to automatically recover), and then call `console.error` with info about where the error occurred.
This resulted in three errors for every caught error:
@@ -771,5 +807,4 @@ Thanks to [Joey Arhar](https://github.com/josepharhar) for driving the design an
#### How to upgrade {/*how-to-upgrade*/}
See the [React 19 Upgrade Guide](/blog/2024/04/25/react-19-upgrade-guide) for step-by-step instructions and a full list of breaking and notable changes.
-
-
+_Note: this post was originally published 04/25/2024 and has been updated to 12/05/2024 with the stable release._
diff --git a/src/content/blog/2025/02/14/sunsetting-create-react-app.md b/src/content/blog/2025/02/14/sunsetting-create-react-app.md
new file mode 100644
index 000000000..96ef3513a
--- /dev/null
+++ b/src/content/blog/2025/02/14/sunsetting-create-react-app.md
@@ -0,0 +1,319 @@
+---
+title: "Sunsetting Create React App"
+author: Matt Carroll and Ricky Hanlon
+date: 2025/02/14
+description: Today, weβre deprecating Create React App for new apps, and encouraging existing apps to migrate to a framework, or to migrate to a build tool like Vite, Parcel, or RSBuild. Weβre also providing docs for when a framework isnβt a good fit for your project, you want to build your own framework, or you just want to learn how React works by building a React app from scratch.
+---
+
+February 14, 2025 by [Matt Carroll](https://twitter.com/mattcarrollcode) and [Ricky Hanlon](https://bsky.app/profile/ricky.fm)
+
+---
+
+
+
+Today, weβre deprecating [Create React App](https://create-react-app.dev/) for new apps, and encouraging existing apps to migrate to a [framework](#how-to-migrate-to-a-framework), or to [migrate to a build tool](#how-to-migrate-to-a-build-tool) like Vite, Parcel, or RSBuild.
+
+Weβre also providing docs for when a framework isnβt a good fit for your project, you want to build your own framework, or you just want to learn how React works by [building a React app from scratch](/learn/build-a-react-app-from-scratch).
+
+
+
+-----
+
+When we released Create React App in 2016, there was no clear way to build a new React app.
+
+To create a React app, you had to install a bunch of tools and wire them up together yourself to support basic features like JSX, linting, and hot reloading. This was very tricky to do correctly, so the [community](https://github.com/react-boilerplate/react-boilerplate) [created](https://github.com/kriasoft/react-starter-kit) [boilerplates](https://github.com/petehunt/react-boilerplate) for [common](https://github.com/gaearon/react-hot-boilerplate) [setups](https://github.com/erikras/react-redux-universal-hot-example). However, boilerplates were difficult to update and fragmentation made it difficult for React to release new features.
+
+Create React App solved these problems by combining several tools into a single recommended configuration. This allowed apps a simple way to upgrade to new tooling features, and allowed the React team to deploy non-trivial tooling changes (Fast Refresh support, React Hooks lint rules) to the broadest possible audience.
+
+This model became so popular that there's an entire category of tools working this way today.
+
+## Deprecating Create React App {/*deprecating-create-react-app*/}
+
+Although Create React App makes it easy to get started, [there are several limitations](#limitations-of-build-tools) that make it difficult to build high performant production apps. In principle, we could solve these problems by essentially evolving it into a [framework](#why-we-recommend-frameworks).
+
+However, since Create React App currently has no active maintainers, and there are many existing frameworks that solve these problems already, weβve decided to deprecate Create React App.
+
+Starting today, if you install a new app, you will see a deprecation warning:
+
+
+
+
+create-react-app is deprecated.
+{'\n\n'}
+You can find a list of up-to-date React frameworks on react.dev
+For more info see: react.dev/link/cra
+{'\n\n'}
+This error message will only be shown once per install.
+
+
+
+
+We've also added a deprecation notice to the Create React App [website](https://create-react-app.dev/) and GitHub [repo](https://github.com/facebook/create-react-app). Create React App will continue working in maintenance mode, and we've published a new version of Create React App to work with React 19.
+
+## How to Migrate to a Framework {/*how-to-migrate-to-a-framework*/}
+We recommend [creating new React apps](/learn/creating-a-react-app) with a framework. All the frameworks we recommend support client-side rendering ([CSR](https://developer.mozilla.org/en-US/docs/Glossary/CSR)) and single-page apps ([SPA](https://developer.mozilla.org/en-US/docs/Glossary/SPA)), and can be deployed to a CDN or static hosting service without a server.
+
+For existing apps, these guides will help you migrate to a client-only SPA:
+
+* [Next.jsβ Create React App migration guide](https://nextjs.org/docs/app/building-your-application/upgrading/from-create-react-app)
+* [React Routerβs framework adoption guide](https://reactrouter.com/upgrading/component-routes).
+* [Expo webpack to Expo Router migration guide](https://docs.expo.dev/router/migrate/from-expo-webpack/)
+
+## How to Migrate to a Build Tool {/*how-to-migrate-to-a-build-tool*/}
+
+If your app has unusual constraints, or you prefer to solve these problems by building your own framework, or you just want to learn how react works from scratch, you can roll your own custom setup with React using Vite, Parcel or Rsbuild.
+
+For existing apps, these guides will help you migrate to a build tool:
+
+* [Vite Create React App migration guide](https://www.robinwieruch.de/vite-create-react-app/)
+* [Parcel Create React App migration guide](https://parceljs.org/migration/cra/)
+* [Rsbuild Create React App migration guide](https://rsbuild.dev/guide/migration/cra)
+
+To help get started with Vite, Parcel or Rsbuild, we've added new docs for [Building a React App from Scratch](/learn/build-a-react-app-from-scratch).
+
+
+
+#### Do I need a framework? {/*do-i-need-a-framework*/}
+
+Most apps would benefit from a framework, but there are valid cases to build a React app from scratch. A good rule of thumb is if your app needs routing, you would probably benefit from a framework.
+
+Just like Svelte has Sveltekit, Vue has Nuxt, and Solid has SolidStart, [React recommends using a framework](#why-we-recommend-frameworks) that fully integrates routing into features like data-fetching and code-splitting out of the box. This avoids the pain of needing to write your own complex configurations and essentially build a framework yourself.
+
+However, you can always [build a React app from scratch](/learn/build-a-react-app-from-scratch) using a build tool like Vite, Parcel, or Rsbuild.
+
+
+
+Continue reading to learn more about the [limitations of build tools](#limitations-of-build-tools) and [why we recommend frameworks](#why-we-recommend-frameworks).
+
+## Limitations of Build Tools {/*limitations-of-build-tools*/}
+
+Create React App and build tools like it make it easy to get started building a React app. After running `npx create-react-app my-app`, you get a fully configured React app with a development server, linting, and a production build.
+
+For example, if you're building an internal admin tool, you can start with a landing page:
+
+```js
+export default function App() {
+ return (
+
+
Welcome to the Admin Tool!
+
+ )
+}
+```
+
+This allows you to immediately start coding in React with features like JSX, default linting rules, and a bundler to run in both development and production. However, this setup is missing the tools you need to build a real production app.
+
+Most production apps need solutions to problems like routing, data fetching, and code splitting.
+
+### Routing {/*routing*/}
+
+Create React App does not include a specific routing solution. If you're just getting started, one option is to use `useState` to switch between routes. But doing this means that you can't share links to your app - every link would go to the same page - and structuring your app becomes difficult over time:
+
+```js
+import {useState} from 'react';
+
+import Home from './Home';
+import Dashboard from './Dashboard';
+
+export default function App() {
+ // β Routing in state does not create URLs
+ const [route, setRoute] = useState('home');
+ return (
+
+ )
+}
+```
+
+This is why most apps that use Create React App solve add routing with a routing library like [React Router](https://reactrouter.com/) or [Tanstack Router](https://tanstack.com/router/latest). With a routing library, you can add additional routes to the app, which provides opinions on the structure of your app, and allows you to start sharing links to routes. For example, with React Router you can define routes:
+
+```js
+import {RouterProvider, createBrowserRouter} from 'react-router';
+
+import Home from './Home';
+import Dashboard from './Dashboard';
+
+// β Each route has it's own URL
+const router = createBrowserRouter([
+ {path: '/', element: },
+ {path: '/dashboard', element: }
+]);
+
+export default function App() {
+ return (
+
+ )
+}
+```
+
+With this change, you can share a link to `/dashboard` and the app will navigate to the dashboard page . Once you have a routing library, you can add additional features like nested routes, route guards, and route transitions, which are difficult to implement without a routing library.
+
+There's a tradeoff being made here: the routing library adds complexity to the app, but it also adds features that are difficult to implement without it.
+
+### Data Fetching {/*data-fetching*/}
+
+Another common problem in Create React App is data fetching. Create React App does not include a specific data fetching solution. If you're just getting started, a common option is to use `fetch` in an effect to load data.
+
+But doing this means that the data is fetched after the component renders, which can cause network waterfalls. Network waterfalls are caused by fetching data when your app renders instead of in parallel while the code is downloading:
+
+```js
+export default function Dashboard() {
+ const [data, setData] = useState(null);
+
+ // β Fetching data in a component causes network waterfalls
+ useEffect(() => {
+ fetch('/api/data')
+ .then(response => response.json())
+ .then(data => setData(data));
+ }, []);
+
+ return (
+
+ {data.map(item =>
{item.name}
)}
+
+ )
+}
+```
+
+Fetching in an effect means the user has to wait longer to see the content, even though the data could have been fetched earlier. To solve this, you can use a data fetching library like [TanStack Query](https://tanstack.com/query/), [SWR](https://swr.vercel.app/), [Apollo](https://www.apollographql.com/docs/react), or [Relay](https://relay.dev/) which provide options to prefetch data so the request is started before the component renders.
+
+These libraries work best when integrated with your routing "loader" pattern to specify data dependencies at the route level, which allows the router to optimize your data fetches:
+
+```js
+export async function loader() {
+ const response = await fetch(`/api/data`);
+ const data = await response.json();
+ return data;
+}
+
+// β Fetching data in parallel while the code is downloading
+export default function Dashboard({loaderData}) {
+ return (
+
+ {loaderData.map(item =>
{item.name}
)}
+
+ )
+}
+```
+
+On initial load, the router can fetch the data immediately before the route is rendered. As the user navigates around the app, the router is able to fetch both the data and the route at the same time, parallelizing the fetches. This reduces the time it takes to see the content on the screen, and can improve the user experience.
+
+However, this requires correctly configuring the loaders in your app and trades off complexity for performance.
+
+### Code Splitting {/*code-splitting*/}
+
+Another common problem in Create React App is [code splitting](https://www.patterns.dev/vanilla/bundle-splitting). Create React App does not include a specific code splitting solution. If you're just getting started, you might not consider code splitting at all.
+
+This means your app is shipped as a single bundle:
+
+```txt
+- bundle.js 75kb
+```
+
+But for ideal performance, you should "split" your code into separate bundles so the user only needs to download what they need. This decreases the time the user needs to wait to load your app, by only downloading the code they need to see the page they are on.
+
+```txt
+- core.js 25kb
+- home.js 25kb
+- dashboard.js 25kb
+```
+
+One way to do code-splitting is with `React.lazy`. However, this means that the code is not fetched until the component renders, which can cause network waterfalls. A more optimal solution is to use a router feature that fetches the code in parallel while the code is downloading. For example, React Router provides a `lazy` option to specify that a route should be code split and optimize when it is loaded:
+
+```js
+import Home from './Home';
+import Dashboard from './Dashboard';
+
+// β Routes are downloaded before rendering
+const router = createBrowserRouter([
+ {path: '/', lazy: () => import('./Home')},
+ {path: '/dashboard', lazy: () => import('Dashboard')}
+]);
+```
+
+Optimized code-splitting is tricky to get right, and it's easy to make mistakes that can cause the user to download more code than they need. It works best when integrated with your router and data loading solutions to maximize caching, parallelize fetches, and support ["import on interaction"](https://www.patterns.dev/vanilla/import-on-interaction) patterns.
+
+### And more... {/*and-more*/}
+
+These are just a few examples of the limitations of Create React App.
+
+Once you've integrated routing, data-fetching, and code splitting, you now also need to consider pending states, navigation interruptions, error messages to the user, and revalidation of the data. There are entire categories of problems that users need to solve like:
+
+
+
+
Accessibility
+
Asset loading
+
Authentication
+
Caching
+
+
+
Error handling
+
Mutating data
+
Navigations
+
Optimistic updates
+
+
+
Progressive enhancement
+
Server-side rendering
+
Static site generation
+
Streaming
+
+
+
+All of these work together to create the most optimal [loading sequence](https://www.patterns.dev/vanilla/loading-sequence).
+
+Solving each of these problems individually in Create React App can be difficult as each problem is interconnected with the others and can require deep expertise in problem areas users may not be familiar with. In order to solve these problems, users end up building their own bespoke solutions on top of Create React App, which was the problem Create React App originally tried to solve.
+
+## Why we Recommend Frameworks {/*why-we-recommend-frameworks*/}
+
+Although you could solve all these pieces yourself in a build tool like Create React App, Vite, or Parcel, it is hard to do well. Just like when Create React App itself integrated several build tools together, you need a tool to integrate all of these features together to provide the best experience to users.
+
+This category of tools that integrates build tools, rendering, routing, data fetching, and code splitting are known as "frameworks" -- or if you prefer to call React itself a framework, you might call them "metaframeworks".
+
+Frameworks impose some opinions about structuring your app in order to provide a much better user experience, in the same way build tools impose some opinions to make tooling easier. This is why we started recommending frameworks like [Next.js](https://nextjs.org/), [React Router](https://reactrouter.com/), and [Expo](https://expo.dev/) for new projects.
+
+Frameworks provide the same getting started experience as Create React App, but also provide solutions to problems users need to solve anyway in real production apps.
+
+
+
+#### Server rendering is optional {/*server-rendering-is-optional*/}
+
+The frameworks we recommend all provide the option to create a [client-side rendered (CSR)](https://developer.mozilla.org/en-US/docs/Glossary/CSR) app.
+
+In some cases, CSR is the right choice for a page, but many times it's not. Even if most of your app is client-side, there are often individual pages that could benefit from server rendering features like [static-site generation (SSG)](https://developer.mozilla.org/en-US/docs/Glossary/SSG) or [server-side rendering (SSR)](https://developer.mozilla.org/en-US/docs/Glossary/SSR), for example a Terms of Service page, or documentation.
+
+Server rendering generally sends less JavaScript to the client, and a full HTML document which produces a faster [First Contentful Paint (FCP)](https://web.dev/articles/fcp) by reducing [Total Blocking Time (TBD)](https://web.dev/articles/tbt), which can also lower [Interaction to Next Paint (INP)](https://web.dev/articles/inp). This is why the [Chrome team has encouraged](https://web.dev/articles/rendering-on-the-web) developers to consider static or server-side render over a full client-side approach to achieve the best possible performance.
+
+There are tradeoffs to using a server, and it is not always the best option for every page. Generating pages on the server incurs additional cost and takes time to generate which can increase [Time to First Byte (TTFB)](https://web.dev/articles/ttfb). The best performing apps are able to pick the right rendering strategy on a per-page basis, based on the tradeoffs of each strategy.
+
+Frameworks provide the option to use a server on any page if you want to, but do not force you to use a server. This allows you to pick the right rendering strategy for each page in your app.
+
+#### What About Server Components {/*server-components*/}
+
+The frameworks we recommend also include support for React Server Components.
+
+Server Components help solve these problems by moving routing and data fetching to the server, and allowing code splitting to be done for client components based on the data you render, instead of just the route rendered, and reducing the amount of JavaScript shipped for the best possible [loading sequence](https://www.patterns.dev/vanilla/loading-sequence).
+
+Server Components do not require a server. They can be run at build time on your CI server to create a static-site generated app (SSG) app, at runtime on a web server for a server-side rendered (SSR) app.
+
+See [Introducing zero-bundle size React Server Components](/blog/2020/12/21/data-fetching-with-react-server-components) and [the docs](/reference/rsc/server-components) for more info.
+
+
+
+
+
+#### Server Rendering is not just for SEO {/*server-rendering-is-not-just-for-seo*/}
+
+A common misunderstanding is that server rendering is only for [SEO](https://developer.mozilla.org/en-US/docs/Glossary/SEO).
+
+While server rendering can improve SEO, it also improves performance by reducing the amount of JavaScript the user needs to download and parse before they can see the content on the screen.
+
+This is why the Chrome team [has encouraged](https://web.dev/articles/rendering-on-the-web) developers to consider static or server-side render over a full client-side approach to achieve the best possible performance.
+
+
+
+---
+
+_Thank you to [Dan Abramov](https://bsky.app/profile/danabra.mov) for creating Create React App, and [Joe Haddad](https://github.com/Timer), [Ian Schmitz](https://github.com/ianschmitz), [Brody McKee](https://github.com/mrmckeb), and [many others](https://github.com/facebook/create-react-app/graphs/contributors) for maintaining Create React App over the years. Thank you to [Brooks Lybrand](https://bsky.app/profile/brookslybrand.bsky.social), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Devon Govett](https://bsky.app/profile/devongovett.bsky.social), [Eli White](https://x.com/Eli_White), [Jack Herrington](https://bsky.app/profile/jherr.dev), [Joe Savona](https://x.com/en_JS), [Lauren Tan](https://bsky.app/profile/no.lol), [Lee Robinson](https://x.com/leeerob), [Mark Erikson](https://bsky.app/profile/acemarke.dev), [Ryan Florence](https://x.com/ryanflorence), [Sophie Alpert](https://bsky.app/profile/sophiebits.com), [Tanner Linsley](https://bsky.app/profile/tannerlinsley.com), and [Theo Browne](https://x.com/theo) for reviewing and providing feedback on this post._
\ No newline at end of file
diff --git a/src/content/blog/2025/04/23/react-labs-view-transitions-activity-and-more.md b/src/content/blog/2025/04/23/react-labs-view-transitions-activity-and-more.md
new file mode 100644
index 000000000..9b6095f8b
--- /dev/null
+++ b/src/content/blog/2025/04/23/react-labs-view-transitions-activity-and-more.md
@@ -0,0 +1,14365 @@
+---
+title: "React Labs: View Transitions, Activity, and more"
+author: Ricky Hanlon
+date: 2025/04/23
+description: In React Labs posts, we write about projects in active research and development. In this post, we're sharing two new experimental features that are ready to try today, and updates on other areas we're working on now.
+---
+
+April 23, 2025 by [Ricky Hanlon](https://twitter.com/rickhanlonii)
+
+---
+
+
+
+In React Labs posts, we write about projects in active research and development. In this post, we're sharing two new experimental features that are ready to try today, and updates on other areas we're working on now.
+
+
+
+
+Today, we're excited to release documentation for two new experimental features that are ready for testing:
+
+- [View Transitions](#view-transitions)
+- [Activity](#activity)
+
+We're also sharing updates on new features currently in development:
+- [React Performance Tracks](#react-performance-tracks)
+- [Compiler IDE Extension](#compiler-ide-extension)
+- [Automatic Effect Dependencies](#automatic-effect-dependencies)
+- [Fragment Refs](#fragment-refs)
+- [Concurrent Stores](#concurrent-stores)
+
+---
+
+# New Experimental Features {/*new-experimental-features*/}
+
+
+
+`` has shipped in `react@19.2`.
+
+`` and `addTransitionType` are now available in `react@canary`.
+
+
+
+View Transitions and Activity are now ready for testing in `react@experimental`. These features have been tested in production and are stable, but the final API may still change as we incorporate feedback.
+
+You can try them by upgrading React packages to the most recent experimental version:
+
+- `react@experimental`
+- `react-dom@experimental`
+
+Read on to learn how to use these features in your app, or check out the newly published docs:
+
+- [``](/reference/react/ViewTransition): A component that lets you activate an animation for a Transition.
+- [`addTransitionType`](/reference/react/addTransitionType): A function that allows you to specify the cause of a Transition.
+- [``](/reference/react/Activity): A component that lets you hide and show parts of the UI.
+
+## View Transitions {/*view-transitions*/}
+
+React View Transitions are a new experimental feature that makes it easier to add animations to UI transitions in your app. Under-the-hood, these animations use the new [`startViewTransition`](https://developer.mozilla.org/en-US/docs/Web/API/Document/startViewTransition) API available in most modern browsers.
+
+To opt-in to animating an element, wrap it in the new `` component:
+
+```js
+// "what" to animate.
+
+
animate me
+
+```
+
+This new component lets you declaratively define "what" to animate when an animation is activated.
+
+You can define "when" to animate by using one of these three triggers for a View Transition:
+
+```js
+// "when" to animate.
+
+// Transitions
+startTransition(() => setState(...));
+
+// Deferred Values
+const deferred = useDeferredValue(value);
+
+// Suspense
+}>
+
+ {/* Opt-out of ViewTransition for the content. */}
+ {/* Content can define it's own ViewTransition. */}
+
+
+
{children}
+
+
+
+ );
+}
+```
+
+```js src/LikeButton.js hidden
+import {useState} from 'react';
+import {Heart} from './Icons';
+
+// A hack since we don't actually have a backend.
+// Unlike local state, this survives videos being filtered.
+const likedVideos = new Set();
+
+export default function LikeButton({video}) {
+ const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id));
+ const [animate, setAnimate] = useState(false);
+ return (
+
+ );
+}
+```
+
+```js src/Videos.js active
+import { useState, ViewTransition } from "react"; import LikeButton from "./LikeButton"; import { useRouter } from "./router"; import { PauseIcon, PlayIcon } from "./Icons"; import { startTransition } from "react";
+
+export function Thumbnail({ video, children }) {
+ // Add a name to animate with a shared element transition.
+ // This uses the default animation, no additional css needed.
+ return (
+
+
+ {/* Custom classes based on transition type. */}
+
+ {heading}
+
+ {isPending && }
+
+
+ {/* Opt-out of ViewTransition for the content. */}
+ {/* Content can define it's own ViewTransition. */}
+
+
+
{children}
+
+
+
+ );
+}
+```
+
+```js src/LikeButton.js hidden
+import {useState} from 'react';
+import {Heart} from './Icons';
+
+// A hack since we don't actually have a backend.
+// Unlike local state, this survives videos being filtered.
+const likedVideos = new Set();
+
+export default function LikeButton({video}) {
+ const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id));
+ const [animate, setAnimate] = useState(false);
+ return (
+
+ );
+}
+```
+
+```js src/Videos.js hidden
+import { useState, ViewTransition } from "react";
+import LikeButton from "./LikeButton";
+import { useRouter } from "./router";
+import { PauseIcon, PlayIcon } from "./Icons";
+import { startTransition } from "react";
+
+export function Thumbnail({ video, children }) {
+ // Add a name to animate with a shared element transition.
+ // This uses the default animation, no additional css needed.
+ return (
+
+
+ {/* Custom classes based on transition type. */}
+
+ {heading}
+
+ {isPending && }
+
+
+ {/* Opt-out of ViewTransition for the content. */}
+ {/* Content can define it's own ViewTransition. */}
+
+
+
{children}
+
+
+
+ );
+}
+```
+
+```js src/LikeButton.js hidden
+import {useState} from 'react';
+import {Heart} from './Icons';
+
+// A hack since we don't actually have a backend.
+// Unlike local state, this survives videos being filtered.
+const likedVideos = new Set();
+
+export default function LikeButton({video}) {
+ const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id));
+ const [animate, setAnimate] = useState(false);
+ return (
+
+ );
+}
+```
+
+```js src/Videos.js hidden
+import { useState, ViewTransition } from "react";
+import LikeButton from "./LikeButton";
+import { useRouter } from "./router";
+import { PauseIcon, PlayIcon } from "./Icons";
+import { startTransition } from "react";
+
+export function Thumbnail({ video, children }) {
+ // Add a name to animate with a shared element transition.
+ // This uses the default animation, no additional css needed.
+ return (
+
+
+ {/* Custom classes based on transition type. */}
+
+ {heading}
+
+ {isPending && }
+
+
+ {/* Opt-out of ViewTransition for the content. */}
+ {/* Content can define it's own ViewTransition. */}
+
+
+
{children}
+
+
+
+ );
+}
+```
+
+```js src/LikeButton.js hidden
+import {useState} from 'react';
+import {Heart} from './Icons';
+
+// A hack since we don't actually have a backend.
+// Unlike local state, this survives videos being filtered.
+const likedVideos = new Set();
+
+export default function LikeButton({video}) {
+ const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id));
+ const [animate, setAnimate] = useState(false);
+ return (
+
+ );
+}
+```
+
+```js src/Videos.js hidden
+import { useState, ViewTransition } from "react";
+import LikeButton from "./LikeButton";
+import { useRouter } from "./router";
+import { PauseIcon, PlayIcon } from "./Icons";
+import { startTransition } from "react";
+
+export function Thumbnail({ video, children }) {
+ // Add a name to animate with a shared element transition.
+ // This uses the default animation, no additional css needed.
+ return (
+
+
+ {/* Custom classes based on transition type. */}
+
+ {heading}
+
+ {isPending && }
+
+
+ {/* Opt-out of ViewTransition for the content. */}
+ {/* Content can define it's own ViewTransition. */}
+
+
+
{children}
+
+
+
+ );
+}
+```
+
+```js src/LikeButton.js hidden
+import {useState} from 'react';
+import {Heart} from './Icons';
+
+// A hack since we don't actually have a backend.
+// Unlike local state, this survives videos being filtered.
+const likedVideos = new Set();
+
+export default function LikeButton({video}) {
+ const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id));
+ const [animate, setAnimate] = useState(false);
+ return (
+
+ );
+}
+```
+
+```js src/Videos.js hidden
+import { useState, ViewTransition } from "react";
+import LikeButton from "./LikeButton";
+import { useRouter } from "./router";
+import { PauseIcon, PlayIcon } from "./Icons";
+import { startTransition } from "react";
+
+export function Thumbnail({ video, children }) {
+ // Add a name to animate with a shared element transition.
+ // This uses the default animation, no additional css needed.
+ return (
+
+
+ {/* Custom classes based on transition type. */}
+
+ {heading}
+
+ {isPending && }
+
+
+ {/* Opt-out of ViewTransition for the content. */}
+ {/* Content can define it's own ViewTransition. */}
+
+
+
{children}
+
+
+
+ );
+}
+```
+
+```js src/LikeButton.js hidden
+import {useState} from 'react';
+import {Heart} from './Icons';
+
+// A hack since we don't actually have a backend.
+// Unlike local state, this survives videos being filtered.
+const likedVideos = new Set();
+
+export default function LikeButton({video}) {
+ const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id));
+ const [animate, setAnimate] = useState(false);
+ return (
+
+ );
+}
+```
+
+```js src/Videos.js hidden
+import { useState, ViewTransition } from "react";
+import LikeButton from "./LikeButton";
+import { useRouter } from "./router";
+import { PauseIcon, PlayIcon } from "./Icons";
+import { startTransition } from "react";
+
+export function Thumbnail({ video, children }) {
+ // Add a name to animate with a shared element transition.
+ // This uses the default animation, no additional css needed.
+ return (
+
+
+ {/* Custom classes based on transition type. */}
+
+ {heading}
+
+ {isPending && }
+
+
+ {/* Opt-out of ViewTransition for the content. */}
+ {/* Content can define it's own ViewTransition. */}
+
+
+
{children}
+
+
+
+ );
+}
+```
+
+```js src/LikeButton.js hidden
+import {useState} from 'react';
+import {Heart} from './Icons';
+
+// A hack since we don't actually have a backend.
+// Unlike local state, this survives videos being filtered.
+const likedVideos = new Set();
+
+export default function LikeButton({video}) {
+ const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id));
+ const [animate, setAnimate] = useState(false);
+ return (
+
+ );
+}
+```
+
+```js src/Videos.js hidden
+import { useState, ViewTransition } from "react";
+import LikeButton from "./LikeButton";
+import { useRouter } from "./router";
+import { PauseIcon, PlayIcon } from "./Icons";
+import { startTransition } from "react";
+
+export function Thumbnail({ video, children }) {
+ // Add a name to animate with a shared element transition.
+ // This uses the default animation, no additional css needed.
+ return (
+
+
+ );
+}
+```
+
+
+```js src/data.js hidden
+const videos = [
+ {
+ id: '1',
+ title: 'First video',
+ description: 'Video description',
+ image: 'blue',
+ },
+ {
+ id: '2',
+ title: 'Second video',
+ description: 'Video description',
+ image: 'red',
+ },
+ {
+ id: '3',
+ title: 'Third video',
+ description: 'Video description',
+ image: 'green',
+ },
+ {
+ id: '4',
+ title: 'Fourth video',
+ description: 'Video description',
+ image: 'purple',
+ },
+ {
+ id: '5',
+ title: 'Fifth video',
+ description: 'Video description',
+ image: 'yellow',
+ },
+ {
+ id: '6',
+ title: 'Sixth video',
+ description: 'Video description',
+ image: 'gray',
+ },
+];
+
+let videosCache = new Map();
+let videoCache = new Map();
+let videoDetailsCache = new Map();
+const VIDEO_DELAY = 1;
+const VIDEO_DETAILS_DELAY = 1000;
+export function fetchVideos() {
+ if (videosCache.has(0)) {
+ return videosCache.get(0);
+ }
+ const promise = new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(videos);
+ }, VIDEO_DELAY);
+ });
+ videosCache.set(0, promise);
+ return promise;
+}
+
+export function fetchVideo(id) {
+ if (videoCache.has(id)) {
+ return videoCache.get(id);
+ }
+ const promise = new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(videos.find((video) => video.id === id));
+ }, VIDEO_DELAY);
+ });
+ videoCache.set(id, promise);
+ return promise;
+}
+
+export function fetchVideoDetails(id) {
+ if (videoDetailsCache.has(id)) {
+ return videoDetailsCache.get(id);
+ }
+ const promise = new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(videos.find((video) => video.id === id));
+ }, VIDEO_DETAILS_DELAY);
+ });
+ videoDetailsCache.set(id, promise);
+ return promise;
+}
+```
+
+```js src/router.js hidden
+import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, addTransitionType} from "react";
+
+export function Router({ children }) {
+ const [isPending, startTransition] = useTransition();
+ const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname});
+ function navigate(url) {
+ startTransition(() => {
+ // Transition type for the cause "nav forward"
+ addTransitionType('nav-forward');
+ go(url);
+ });
+ }
+ function navigateBack(url) {
+ startTransition(() => {
+ // Transition type for the cause "nav backward"
+ addTransitionType('nav-back');
+ go(url);
+ });
+ }
+
+ function go(url) {
+ setRouterState({
+ url,
+ pendingNav() {
+ window.history.pushState({}, "", url);
+ },
+ });
+ }
+
+ useEffect(() => {
+ function handlePopState() {
+ // This should not animate because restoration has to be synchronous.
+ // Even though it's a transition.
+ startTransition(() => {
+ setRouterState({
+ url: document.location.pathname + document.location.search,
+ pendingNav() {
+ // Noop. URL has already updated.
+ },
+ });
+ });
+ }
+ window.addEventListener("popstate", handlePopState);
+ return () => {
+ window.removeEventListener("popstate", handlePopState);
+ };
+ }, []);
+ const pendingNav = routerState.pendingNav;
+ useLayoutEffect(() => {
+ pendingNav();
+ }, [pendingNav]);
+
+ return (
+
+ {children}
+
+ );
+}
+
+const RouterContext = createContext({ url: "/", params: {} });
+
+export function useRouter() {
+ return use(RouterContext);
+}
+
+export function useIsNavPending() {
+ return use(RouterContext).isPending;
+}
+
+```
+
+```css src/styles.css hidden
+@font-face {
+ font-family: Optimistic Text;
+ src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2");
+ font-weight: 400;
+ font-style: normal;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: Optimistic Text;
+ src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2");
+ font-weight: 500;
+ font-style: normal;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: Optimistic Text;
+ src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2");
+ font-weight: 600;
+ font-style: normal;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: Optimistic Text;
+ src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2");
+ font-weight: 700;
+ font-style: normal;
+ font-display: swap;
+}
+
+* {
+ box-sizing: border-box;
+}
+
+html {
+ background-image: url(https://react.dev/images/meta-gradient-dark.png);
+ background-size: 100%;
+ background-position: -100%;
+ background-color: rgb(64 71 86);
+ background-repeat: no-repeat;
+ height: 100%;
+ width: 100%;
+}
+
+body {
+ font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
+ padding: 10px 0 10px 0;
+ margin: 0;
+ display: flex;
+ justify-content: center;
+}
+
+#root {
+ flex: 1 1;
+ height: auto;
+ background-color: #fff;
+ border-radius: 10px;
+ max-width: 450px;
+ min-height: 600px;
+ padding-bottom: 10px;
+}
+
+h1 {
+ margin-top: 0;
+ font-size: 22px;
+}
+
+h2 {
+ margin-top: 0;
+ font-size: 20px;
+}
+
+h3 {
+ margin-top: 0;
+ font-size: 18px;
+}
+
+h4 {
+ margin-top: 0;
+ font-size: 16px;
+}
+
+h5 {
+ margin-top: 0;
+ font-size: 14px;
+}
+
+h6 {
+ margin-top: 0;
+ font-size: 12px;
+}
+
+code {
+ font-size: 1.2em;
+}
+
+ul {
+ padding-inline-start: 20px;
+}
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0;
+}
+
+.absolute {
+ position: absolute;
+}
+
+.overflow-visible {
+ overflow: visible;
+}
+
+.visible {
+ overflow: visible;
+}
+
+.fit {
+ width: fit-content;
+}
+
+
+/* Layout */
+.page {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.top-hero {
+ height: 200px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-image: conic-gradient(
+ from 90deg at -10% 100%,
+ #2b303b 0deg,
+ #2b303b 90deg,
+ #16181d 1turn
+ );
+}
+
+.bottom {
+ flex: 1;
+ overflow: auto;
+}
+
+.top-nav {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 0;
+ padding: 0 12px;
+ top: 0;
+ width: 100%;
+ height: 44px;
+ color: #23272f;
+ font-weight: 700;
+ font-size: 20px;
+ z-index: 100;
+ cursor: default;
+}
+
+.content {
+ padding: 0 12px;
+ margin-top: 4px;
+}
+
+
+.loader {
+ color: #23272f;
+ font-size: 3px;
+ width: 1em;
+ margin-right: 18px;
+ height: 1em;
+ border-radius: 50%;
+ position: relative;
+ text-indent: -9999em;
+ animation: loading-spinner 1.3s infinite linear;
+ animation-delay: 200ms;
+ transform: translateZ(0);
+}
+
+@keyframes loading-spinner {
+ 0%,
+ 100% {
+ box-shadow: 0 -3em 0 0.2em,
+ 2em -2em 0 0em, 3em 0 0 -1em,
+ 2em 2em 0 -1em, 0 3em 0 -1em,
+ -2em 2em 0 -1em, -3em 0 0 -1em,
+ -2em -2em 0 0;
+ }
+ 12.5% {
+ box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em,
+ 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em,
+ -2em 2em 0 -1em, -3em 0 0 -1em,
+ -2em -2em 0 -1em;
+ }
+ 25% {
+ box-shadow: 0 -3em 0 -0.5em,
+ 2em -2em 0 0, 3em 0 0 0.2em,
+ 2em 2em 0 0, 0 3em 0 -1em,
+ -2em 2em 0 -1em, -3em 0 0 -1em,
+ -2em -2em 0 -1em;
+ }
+ 37.5% {
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
+ 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em,
+ -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
+ }
+ 50% {
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
+ 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em,
+ -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
+ }
+ 62.5% {
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
+ 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0,
+ -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
+ }
+ 75% {
+ box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em,
+ 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em,
+ -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
+ }
+ 87.5% {
+ box-shadow: 0em -3em 0 0, 2em -2em 0 -1em,
+ 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em,
+ -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
+ }
+}
+
+/* LikeButton */
+.like-button {
+ outline-offset: 2px;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 2.5rem;
+ height: 2.5rem;
+ cursor: pointer;
+ border-radius: 9999px;
+ border: none;
+ outline: none 2px;
+ color: #5e687e;
+ background: none;
+}
+
+.like-button:focus {
+ color: #a6423a;
+ background-color: rgba(166, 66, 58, .05);
+}
+
+.like-button:active {
+ color: #a6423a;
+ background-color: rgba(166, 66, 58, .05);
+ transform: scaleX(0.95) scaleY(0.95);
+}
+
+.like-button:hover {
+ background-color: #f6f7f9;
+}
+
+.like-button.liked {
+ color: #a6423a;
+}
+
+/* Icons */
+@keyframes circle {
+ 0% {
+ transform: scale(0);
+ stroke-width: 16px;
+ }
+
+ 50% {
+ transform: scale(.5);
+ stroke-width: 16px;
+ }
+
+ to {
+ transform: scale(1);
+ stroke-width: 0;
+ }
+}
+
+.circle {
+ color: rgba(166, 66, 58, .5);
+ transform-origin: center;
+ transition-property: all;
+ transition-duration: .15s;
+ transition-timing-function: cubic-bezier(.4,0,.2,1);
+}
+
+.circle.liked.animate {
+ animation: circle .3s forwards;
+}
+
+.heart {
+ width: 1.5rem;
+ height: 1.5rem;
+}
+
+.heart.liked {
+ transform-origin: center;
+ transition-property: all;
+ transition-duration: .15s;
+ transition-timing-function: cubic-bezier(.4, 0, .2, 1);
+}
+
+.heart.liked.animate {
+ animation: scale .35s ease-in-out forwards;
+}
+
+.control-icon {
+ color: hsla(0, 0%, 100%, .5);
+ filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08));
+}
+
+.chevron-left {
+ margin-top: 2px;
+ rotate: 90deg;
+}
+
+
+/* Video */
+.thumbnail {
+ position: relative;
+ aspect-ratio: 16 / 9;
+ display: flex;
+ overflow: hidden;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 0.5rem;
+ outline-offset: 2px;
+ width: 8rem;
+ vertical-align: middle;
+ background-color: #ffffff;
+ background-size: cover;
+ user-select: none;
+}
+
+.thumbnail.blue {
+ background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491);
+}
+
+.thumbnail.red {
+ background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491);
+}
+
+.thumbnail.green {
+ background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491);
+}
+
+.thumbnail.purple {
+ background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491);
+}
+
+.thumbnail.yellow {
+ background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491);
+}
+
+.thumbnail.gray {
+ background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491);
+}
+
+.video {
+ display: flex;
+ flex-direction: row;
+ gap: 0.75rem;
+ align-items: center;
+}
+
+.video .link {
+ display: flex;
+ flex-direction: row;
+ flex: 1 1 0;
+ gap: 0.125rem;
+ outline-offset: 4px;
+ cursor: pointer;
+}
+
+.video .info {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ margin-left: 8px;
+ gap: 0.125rem;
+}
+
+.video .info:hover {
+ text-decoration: underline;
+}
+
+.video-title {
+ font-size: 15px;
+ line-height: 1.25;
+ font-weight: 700;
+ color: #23272f;
+}
+
+.video-description {
+ color: #5e687e;
+ font-size: 13px;
+}
+
+/* Details */
+.details .thumbnail {
+ position: relative;
+ aspect-ratio: 16 / 9;
+ display: flex;
+ overflow: hidden;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 0.5rem;
+ outline-offset: 2px;
+ width: 100%;
+ vertical-align: middle;
+ background-color: #ffffff;
+ background-size: cover;
+ user-select: none;
+}
+
+.video-details-title {
+ margin-top: 8px;
+}
+
+.video-details-speaker {
+ display: flex;
+ gap: 8px;
+ margin-top: 10px
+}
+
+.back {
+ display: flex;
+ align-items: center;
+ margin-left: -5px;
+ cursor: pointer;
+}
+
+.back:hover {
+ text-decoration: underline;
+}
+
+.info-title {
+ font-size: 1.5rem;
+ font-weight: 700;
+ line-height: 1.25;
+ margin: 8px 0 0 0 ;
+}
+
+.info-description {
+ margin: 8px 0 0 0;
+}
+
+.controls {
+ cursor: pointer;
+}
+
+.fallback {
+ background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat;
+ background-size: 800px 104px;
+ display: block;
+ line-height: 1.25;
+ margin: 8px 0 0 0;
+ border-radius: 5px;
+ overflow: hidden;
+
+ animation: 1s linear 1s infinite shimmer;
+ animation-delay: 300ms;
+ animation-duration: 1s;
+ animation-fill-mode: forwards;
+ animation-iteration-count: infinite;
+ animation-name: shimmer;
+ animation-timing-function: linear;
+}
+
+
+.fallback.title {
+ width: 130px;
+ height: 30px;
+
+}
+
+.fallback.description {
+ width: 150px;
+ height: 21px;
+}
+
+@keyframes shimmer {
+ 0% {
+ background-position: -468px 0;
+ }
+
+ 100% {
+ background-position: 468px 0;
+ }
+}
+
+.search {
+ margin-bottom: 10px;
+}
+.search-input {
+ width: 100%;
+ position: relative;
+}
+
+.search-icon {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ inset-inline-start: 0;
+ display: flex;
+ align-items: center;
+ padding-inline-start: 1rem;
+ pointer-events: none;
+ color: #99a1b3;
+}
+
+.search-input input {
+ display: flex;
+ padding-inline-start: 2.75rem;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ width: 100%;
+ text-align: start;
+ background-color: rgb(235 236 240);
+ outline: 2px solid transparent;
+ cursor: pointer;
+ border: none;
+ align-items: center;
+ color: rgb(35 39 47);
+ border-radius: 9999px;
+ vertical-align: middle;
+ font-size: 15px;
+}
+
+.search-input input:hover, .search-input input:active {
+ background-color: rgb(235 236 240/ 0.8);
+ color: rgb(35 39 47/ 0.8);
+}
+
+/* Home */
+.video-list {
+ position: relative;
+}
+
+.video-list .videos {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ overflow-y: auto;
+ height: 100%;
+}
+```
+
+
+```css src/animations.css
+/* No additional animations needed */
+
+
+
+
+
+
+
+
+
+/* Previously defined animations below */
+
+
+
+
+
+
+/* Slide animations for Suspense the fallback down */
+::view-transition-old(.slide-down) {
+ animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down;
+}
+
+::view-transition-new(.slide-up) {
+ animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up;
+}
+
+/* Animations for view transition classed added by transition type */
+::view-transition-old(.slide-forward) {
+ /* when sliding forward, the "old" page should slide out to left. */
+ animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out,
+ 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left;
+}
+
+::view-transition-new(.slide-forward) {
+ /* when sliding forward, the "new" page should slide in from right. */
+ animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in,
+ 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right;
+}
+
+::view-transition-old(.slide-back) {
+ /* when sliding back, the "old" page should slide out to right. */
+ animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out,
+ 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right;
+}
+
+::view-transition-new(.slide-back) {
+ /* when sliding back, the "new" page should slide in from left. */
+ animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in,
+ 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left;
+}
+
+/* Keyframes to support our animations above. */
+@keyframes slide-up {
+ from {
+ transform: translateY(10px);
+ }
+ to {
+ transform: translateY(0);
+ }
+}
+
+@keyframes slide-down {
+ from {
+ transform: translateY(0);
+ }
+ to {
+ transform: translateY(10px);
+ }
+}
+
+@keyframes fade-in {
+ from {
+ opacity: 0;
+ }
+}
+
+@keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+}
+
+@keyframes slide-to-right {
+ to {
+ transform: translateX(50px);
+ }
+}
+
+@keyframes slide-from-right {
+ from {
+ transform: translateX(50px);
+ }
+ to {
+ transform: translateX(0);
+ }
+}
+
+@keyframes slide-to-left {
+ to {
+ transform: translateX(-50px);
+ }
+}
+
+@keyframes slide-from-left {
+ from {
+ transform: translateX(-50px);
+ }
+ to {
+ transform: translateX(0);
+ }
+}
+
+/* Default .slow-fade. */
+::view-transition-old(.slow-fade) {
+ animation-duration: 500ms;
+}
+
+::view-transition-new(.slow-fade) {
+ animation-duration: 500ms;
+}
+```
+
+```js src/index.js hidden
+import React, {StrictMode} from 'react';
+import {createRoot} from 'react-dom/client';
+import './styles.css';
+import './animations.css';
+
+import App from './App';
+import {Router} from './router';
+
+const root = createRoot(document.getElementById('root'));
+root.render(
+
+
+
+
+
+);
+```
+
+```json package.json hidden
+{
+ "dependencies": {
+ "react": "canary",
+ "react-dom": "canary",
+ "react-scripts": "latest"
+ },
+ "scripts": {
+ "start": "react-scripts start",
+ "build": "react-scripts build",
+ "test": "react-scripts test --env=jsdom",
+ "eject": "react-scripts eject"
+ }
+}
+```
+
+
+
+### Server-Side Rendering with Activity {/*server-side-rendering-with-activity*/}
+
+When using Activity on a page that uses server-side rendering (SSR), there are additional optimizations.
+
+If part of the page is rendered with `mode="hidden"`, then it will not be included in the SSR response. Instead, React will schedule a client render for the content inside Activity while the rest of the page hydrates, prioritizing the visible content on screen.
+
+For parts of the UI rendered with `mode="visible"`, React will de-prioritize hydration of content within Activity, similar to how Suspense content is hydrated at a lower priority. If the user interacts with the page, we'll prioritize hydration within the boundary if needed.
+
+These are advanced use cases, but they show the additional benefits considered with Activity.
+
+### Future modes for Activity {/*future-modes-for-activity*/}
+
+In the future, we may add more modes to Activity.
+
+For example, a common use case is rendering a modal, where the previous "inactive" page is visible behind the "active" modal view. The "hidden" mode does not work for this use case because it's not visible and not included in SSR.
+
+Instead, we're considering a new mode that would keep the content visible—and included in SSR—but keep it unmounted and de-prioritize updates. This mode may also need to "pause" DOM updates, since it can be distracting to see backgrounded content updating while a modal is open.
+
+Another mode we're considering for Activity is the ability to automatically destroy state for hidden Activities if there is too much memory being used. Since the component is already unmounted, it may be preferable to destroy state for the least recently used hidden parts of the app rather than consume too many resources.
+
+These are areas we're still exploring, and we'll share more as we make progress. For more information on what Activity includes today, [check out the docs](/reference/react/Activity).
+
+---
+
+# Features in development {/*features-in-development*/}
+
+We're also developing features to help solve the common problems below.
+
+As we iterate on possible solutions, you may see some potential APIs we're testing being shared based on the PRs we are landing. Please keep in mind that as we try different ideas, we often change or remove different solutions after trying them out.
+
+When the solutions we're working on are shared too early, it can create churn and confusion in the community. To balance being transparent and limiting confusion, we're sharing the problems we're currently developing solutions for, without sharing a particular solution we have in mind.
+
+As these features progress, we'll announce them on the blog with docs included so you can try them out.
+
+## React Performance Tracks {/*react-performance-tracks*/}
+
+We're working on a new set of custom tracks to performance profilers using browser APIs that [allow adding custom tracks](https://developer.chrome.com/docs/devtools/performance/extension) to provide more information about the performance of your React app.
+
+This feature is still in progress, so we're not ready to publish docs to fully release it as an experimental feature yet. You can get a sneak preview when using an experimental version of React, which will automatically add the performance tracks to profiles:
+
+
+
+
+
+
+
+
+
+
+
+
+There are a few known issues we plan to address such as performance, and the scheduler track not always "connecting" work across Suspended trees, so it's not quite ready to try. We're also still collecting feedback from early adopters to improve the design and usability of the tracks.
+
+Once we solve those issues, we'll publish experimental docs and share that it's ready to try.
+
+---
+
+## Automatic Effect Dependencies {/*automatic-effect-dependencies*/}
+
+When we released hooks, we had three motivations:
+
+- **Sharing code between components**: hooks replaced patterns like render props and higher-order components to allow you to reuse stateful logic without changing your component hierarchy.
+- **Think in terms of function, not lifecycles**: hooks let you split one component into smaller functions based on what pieces are related (such as setting up a subscription or fetching data), rather than forcing a split based on lifecycle methods.
+- **Support ahead-of-time compilation**: hooks were designed to support ahead-of-time compilation with less pitfalls causing unintentional de-optimizations caused by lifecycle methods, and limitations of classes.
+
+Since their release, hooks have been successful at *sharing code between components*. Hooks are now the favored way to share logic between components, and there are less use cases for render props and higher order components. Hooks have also been successful at supporting features like Fast Refresh that were not possible with class components.
+
+### Effects can be hard {/*effects-can-be-hard*/}
+
+Unfortunately, some hooks are still hard to think in terms of function instead of lifecycles. Effects specifically are still hard to understand and are the most common pain point we hear from developers. Last year, we spent a significant amount of time researching how Effects were used, and how those use cases could be simplified and easier to understand.
+
+We found that often, the confusion is from using an Effect when you don't need to. The [You Might Not Need an Effect](/learn/you-might-not-need-an-effect) guide covers many cases for when Effects are not the right solution. However, even when an Effect is the right fit for a problem, Effects can still be harder to understand than class component lifecycles.
+
+We believe one of the reasons for confusion is that developers to think of Effects from the _component's_ perspective (like a lifecycle), instead of the _Effects_ point of view (what the Effect does).
+
+Let's look at an example [from the docs](/learn/lifecycle-of-reactive-effects#thinking-from-the-effects-perspective):
+
+```js
+useEffect(() => {
+ // Your Effect connected to the room specified with roomId...
+ const connection = createConnection(serverUrl, roomId);
+ connection.connect();
+ return () => {
+ // ...until it disconnected
+ connection.disconnect();
+ };
+}, [roomId]);
+```
+
+Many users would read this code as "on mount, connect to the roomId. whenever `roomId` changes, disconnect to the old room and re-create the connection". However, this is thinking from the component's lifecycle perspective, which means you will need to think of every component lifecycle state to write the Effect correctly. This can be difficult, so it's understandable that Effects seem harder than class lifecycles when using the component perspective.
+
+### Effects without dependencies {/*effects-without-dependencies*/}
+
+Instead, it's better to think from the Effect's perspective. The Effect doesn't know about the component lifecycles. It only describes how to start synchronization and how to stop it. When users think of Effects in this way, their Effects tend to be easier to write, and more resilient to being started and stopped as many times as is needed.
+
+We spent some time researching why Effects are thought of from the component perspective, and we think one of the reasons is the dependency array. Since you have to write it, it's right there and in your face reminding you of what you're "reacting" to and baiting you into the mental model of 'do this when these values change'.
+
+When we released hooks, we knew we could make them easier to use with ahead-of-time compilation. With the React Compiler, you're now able to avoid writing `useCallback` and `useMemo` yourself in most cases. For Effects, the compiler can insert the dependencies for you:
+
+```js
+useEffect(() => {
+ const connection = createConnection(serverUrl, roomId);
+ connection.connect();
+ return () => {
+ connection.disconnect();
+ };
+}); // compiler inserted dependencies.
+```
+
+With this code, the React Compiler can infer the dependencies for you and insert them automatically so you don't need to see or write them. With features like [the IDE extension](#compiler-ide-extension) and [`useEffectEvent`](/reference/react/useEffectEvent), we can provide a CodeLens to show you what the Compiler inserted for times you need to debug, or to optimize by removing a dependency. This helps reinforce the correct mental model for writing Effects, which can run at any time to synchronize your component or hook's state with something else.
+
+Our hope is that automatically inserting dependencies is not only easier to write, but that it also makes them easier to understand by forcing you to think in terms of what the Effect does, and not in component lifecycles.
+
+---
+
+## Compiler IDE Extension {/*compiler-ide-extension*/}
+
+Later in 2025 [we shared](/blog/2025/10/07/react-compiler-1) the first stable release of React Compiler, and we're continuing to invest in shipping more improvements.
+
+We've also begun exploring ways to use the React Compiler to provide information that can improve understanding and debugging your code. One idea we've started exploring is a new experimental LSP-based React IDE extension powered by React Compiler, similar to the extension used in [Lauren Tan's React Conf talk](https://conf2024.react.dev/talks/5).
+
+Our idea is that we can use the compiler's static analysis to provide more information, suggestions, and optimization opportunities directly in your IDE. For example, we can provide diagnostics for code breaking the Rules of React, hovers to show if components and hooks were optimized by the compiler, or a CodeLens to see [automatically inserted Effect dependencies](#automatic-effect-dependencies).
+
+The IDE extension is still an early exploration, but we'll share our progress in future updates.
+
+---
+
+## Fragment Refs {/*fragment-refs*/}
+
+Many DOM APIs like those for event management, positioning, and focus are difficult to compose when writing with React. This often leads developers to reach for Effects, managing multiple Refs, by using APIs like `findDOMNode` (removed in React 19).
+
+We are exploring adding refs to Fragments that would point to a group of DOM elements, rather than just a single element. Our hope is that this will simplify managing multiple children and make it easier to write composable React code when calling DOM APIs.
+
+Fragment refs are still being researched. We'll share more when we're closer to having the final API finished.
+
+---
+
+## Gesture Animations {/*gesture-animations*/}
+
+We're also researching ways to enhance View Transitions to support gesture animations such as swiping to open a menu, or scroll through a photo carousel.
+
+Gestures present new challenges for a few reasons:
+
+- **Gestures are continuous**: as you swipe the animation is tied to your finger placement time, rather than triggering and running to completion.
+- **Gestures don't complete**: when you release your finger gesture animations can run to completion, or revert to their original state (like when you only partially open a menu) depending on how far you go.
+- **Gestures invert old and new**: while you're animating, you want the page you are animating from to stay "alive" and interactive. This inverts the browser View Transition model where the "old" state is a snapshot and the "new" state is the live DOM.
+
+We believe weβve found an approach that works well and may introduce a new API for triggering gesture transitions. For now, we're focused on shipping ``, and will revisit gestures afterward.
+
+---
+
+## Concurrent Stores {/*concurrent-stores*/}
+
+When we released React 18 with concurrent rendering, we also released `useSyncExternalStore` so external store libraries that did not use React state or context could [support concurrent rendering](https://github.com/reactwg/react-18/discussions/70) by forcing a synchronous render when the store is updated.
+
+Using `useSyncExternalStore` comes at a cost though, since it forces a bail out from concurrent features like transitions, and forces existing content to show Suspense fallbacks.
+
+Now that React 19 has shipped, we're revisiting this problem space to create a primitive to fully support concurrent external stores with the `use` API:
+
+```js
+const value = use(store);
+```
+
+Our goal is to allow external state to be read during render without tearing, and to work seamlessly with all of the concurrent features React offers.
+
+This research is still early. We'll share more, and what the new APIs will look like, when we're further along.
+
+---
+
+_Thanks to [Aurora Scharff](https://bsky.app/profile/aurorascharff.no), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Eli White](https://twitter.com/Eli_White), [Lauren Tan](https://bsky.app/profile/no.lol), [Luna Wei](https://github.com/lunaleaps), [Matt Carroll](https://twitter.com/mattcarrollcode), [Jack Pope](https://jackpope.me), [Jason Bonta](https://threads.net/someextent), [Jordan Brown](https://github.com/jbrown215), [Jordan Eldredge](https://bsky.app/profile/capt.dev), [Mofei Zhang](https://threads.net/z_mofei), [Sebastien Lorber](https://bsky.app/profile/sebastienlorber.com), [Sebastian MarkbΓ₯ge](https://bsky.app/profile/sebmarkbage.calyptus.eu), and [Tim Yung](https://github.com/yungsters) for reviewing this post._
diff --git a/src/content/blog/2025/10/01/react-19-2.md b/src/content/blog/2025/10/01/react-19-2.md
new file mode 100644
index 000000000..51c30f70a
--- /dev/null
+++ b/src/content/blog/2025/10/01/react-19-2.md
@@ -0,0 +1,339 @@
+---
+title: "React 19.2"
+author: The React Team
+date: 2025/10/01
+description: React 19.2 adds new features like Activity, React Performance Tracks, useEffectEvent, and more.
+---
+
+October 1, 2025 by [The React Team](/community/team)
+
+---
+
+
+
+React 19.2 is now available on npm!
+
+
+
+This is our third release in the last year, following React 19 in December and React 19.1 in June. In this post, we'll give an overview of the new features in React 19.2, and highlight some notable changes.
+
+
+
+---
+
+## New React Features {/*new-react-features*/}
+
+### `` {/*activity*/}
+
+`` lets you break your app into "activities" that can be controlled and prioritized.
+
+You can use Activity as an alternative to conditionally rendering parts of your app:
+
+```js
+// Before
+{isVisible && }
+
+// After
+
+
+
+```
+
+In React 19.2, Activity supports two modes: `visible` and `hidden`.
+
+- `hidden`: hides the children, unmounts effects, and defers all updates until React has nothing left to work on.
+- `visible`: shows the children, mounts effects, and allows updates to be processed normally.
+
+This means you can pre-render and keep rendering hidden parts of the app without impacting the performance of anything visible on screen.
+
+You can use Activity to render hidden parts of the app that a user is likely to navigate to next, or to save the state of parts the user navigates away from. This helps make navigations quicker by loading data, css, and images in the background, and allows back navigations to maintain state such as input fields.
+
+In the future, we plan to add more modes to Activity for different use cases.
+
+For examples on how to use Activity, check out the [Activity docs](/reference/react/Activity).
+
+---
+
+### `useEffectEvent` {/*use-effect-event*/}
+
+One common pattern with `useEffect` is to notify the app code about some kind of "events" from an external system. For example, when a chat room gets connected, you might want to display a notification:
+
+```js {5,11}
+function ChatRoom({ roomId, theme }) {
+ useEffect(() => {
+ const connection = createConnection(serverUrl, roomId);
+ connection.on('connected', () => {
+ showNotification('Connected!', theme);
+ });
+ connection.connect();
+ return () => {
+ connection.disconnect()
+ };
+ }, [roomId, theme]);
+ // ...
+```
+
+The problem with the code above is that a change to any values used inside such an "event" will cause the surrounding Effect to re-run. For example, changing the `theme` will cause the chat room to reconnect. This makes sense for values related to the Effect logic itself, like `roomId`, but it doesn't make sense for `theme`.
+
+To solve this, most users just disable the lint rule and exclude the dependency. But that can lead to bugs since the linter can no longer help you keep the dependencies up to date if you need to update the Effect later.
+
+With `useEffectEvent`, you can split the "event" part of this logic out of the Effect that emits it:
+
+```js {2,3,4,9}
+function ChatRoom({ roomId, theme }) {
+ const onConnected = useEffectEvent(() => {
+ showNotification('Connected!', theme);
+ });
+
+ useEffect(() => {
+ const connection = createConnection(serverUrl, roomId);
+ connection.on('connected', () => {
+ onConnected();
+ });
+ connection.connect();
+ return () => connection.disconnect();
+ }, [roomId]); // β All dependencies declared (Effect Events aren't dependencies)
+ // ...
+```
+
+Similar to DOM events, Effect Events always βseeβ the latest props and state.
+
+**Effect Events should _not_ be declared in the dependency array**. You'll need to upgrade to `eslint-plugin-react-hooks@latest` so that the linter doesn't try to insert them as dependencies. Note that Effect Events can only be declared in the same component or Hook as "their" Effect. These restrictions are verified by the linter.
+
+
+
+#### When to use `useEffectEvent` {/*when-to-use-useeffectevent*/}
+
+You should use `useEffectEvent` for functions that are conceptually "events" that happen to be fired from an Effect instead of a user event (that's what makes it an "Effect Event"). You don't need to wrap everything in `useEffectEvent`, or to use it just to silence the lint error, as this can lead to bugs.
+
+For a deep dive on how to think about Event Effects, see: [Separating Events from Effects](/learn/separating-events-from-effects#extracting-non-reactive-logic-out-of-effects).
+
+
+
+---
+
+### `cacheSignal` {/*cache-signal*/}
+
+
+
+`cacheSignal` is only for use with [React Server Components](/reference/rsc/server-components).
+
+
+
+`cacheSignal` allows you to know when the [`cache()`](/reference/react/cache) lifetime is over:
+
+```
+import {cache, cacheSignal} from 'react';
+const dedupedFetch = cache(fetch);
+
+async function Component() {
+ await dedupedFetch(url, { signal: cacheSignal() });
+}
+```
+
+This allows you to clean up or abort work when the result will no longer be used in the cache, such as:
+
+- React has successfully completed rendering
+- The render was aborted
+- The render has failed
+
+For more info, see the [`cacheSignal` docs](/reference/react/cacheSignal).
+
+---
+
+### Performance Tracks {/*performance-tracks*/}
+
+React 19.2 adds a new set of [custom tracks](https://developer.chrome.com/docs/devtools/performance/extension) to Chrome DevTools performance profiles to provide more information about the performance of your React app:
+
+
+
+
+
+
+
+
+
+
+
+
+The [React Performance Tracks docs](/reference/dev-tools/react-performance-tracks) explain everything included in the tracks, but here is a high-level overview.
+
+#### Scheduler β {/*scheduler-*/}
+
+The Scheduler track shows what React is working on for different priorities such as "blocking" for user interactions, or "transition" for updates inside startTransition. Inside each track, you will see the type of work being performed such as the event that scheduled an update, and when the render for that update happened.
+
+We also show information such as when an update is blocked waiting for a different priority, or when React is waiting for paint before continuing. The Scheduler track helps you understand how React splits your code into different priorities, and the order it completed the work.
+
+See the [Scheduler track](/reference/dev-tools/react-performance-tracks#scheduler) docs to see everything included.
+
+#### Components β {/*components-*/}
+
+The Components track shows the tree of components that React is working on either to render or run effects. Inside you'll see labels such as "Mount" for when children mount or effects are mounted, or "Blocked" for when rendering is blocked due to yielding to work outside React.
+
+The Components track helps you understand when components are rendered or run effects, and the time it takes to complete that work to help identify performance problems.
+
+See the [Components track docs](/reference/dev-tools/react-performance-tracks#components) for see everything included.
+
+---
+
+## New React DOM Features {/*new-react-dom-features*/}
+
+### Partial Pre-rendering {/*partial-pre-rendering*/}
+
+In 19.2 we're adding a new capability to pre-render part of the app ahead of time, and resume rendering it later.
+
+This feature is called "Partial Pre-rendering", and allows you to pre-render the static parts of your app and serve it from a CDN, and then resume rendering the shell to fill it in with dynamic content later.
+
+To pre-render an app to resume later, first call `prerender` with an `AbortController`:
+
+```
+const {prelude, postponed} = await prerender(, {
+ signal: controller.signal,
+});
+
+// Save the postponed state for later
+await savePostponedState(postponed);
+
+// Send prelude to client or CDN.
+```
+
+Then, you can return the `prelude` shell to the client, and later call `resume` to "resume" to a SSR stream:
+
+```
+const postponed = await getPostponedState(request);
+const resumeStream = await resume(, postponed);
+
+// Send stream to client.
+```
+
+Or you can call `resumeAndPrerender` to resume to get static HTML for SSG:
+
+```
+const postponedState = await getPostponedState(request);
+const { prelude } = await resumeAndPrerender(, postponedState);
+
+// Send complete HTML prelude to CDN.
+```
+
+For more info, see the docs for the new APIs:
+- `react-dom/server`
+ - [`resume`](/reference/react-dom/server/resume): for Web Streams.
+ - [`resumeToPipeableStream`](/reference/react-dom/server/resumeToPipeableStream) for Node Streams.
+- `react-dom/static`
+ - [`resumeAndPrerender`](/reference/react-dom/static/resumeAndPrerender) for Web Streams.
+ - [`resumeAndPrerenderToNodeStream`](/reference/react-dom/static/resumeAndPrerenderToNodeStream) for Node Streams.
+
+Additionally, the prerender apis now return a `postpone` state to pass to the `resume` apis.
+
+---
+
+## Notable Changes {/*notable-changes*/}
+
+### Batching Suspense Boundaries for SSR {/*batching-suspense-boundaries-for-ssr*/}
+
+We fixed a behavioral bug where Suspense boundaries would reveal differently depending on if they were rendered on the client or when streaming from server-side rendering.
+
+Starting in 19.2, React will batch reveals of server-rendered Suspense boundaries for a short time, to allow more content to be revealed together and align with the client-rendered behavior.
+
+
+
+Previously, during streaming server-side rendering, suspense content would immediately replace fallbacks.
+
+
+
+
+
+In React 19.2, suspense boundaries are batched for a small amount of time, to allow revealing more content together.
+
+
+
+This fix also prepares apps for supporting `` for Suspense during SSR. By revealing more content together, animations can run in larger batches of content, and avoid chaining animations of content that stream in close together.
+
+
+
+React uses heuristics to ensure throttling does not impact core web vitals and search ranking.
+
+For example, if the total page load time is approaching 2.5s (which is the time considered "good" for [LCP](https://web.dev/articles/lcp)), React will stop batching and reveal content immediately so that the throttling is not the reason to miss the metric.
+
+
+
+---
+
+### SSR: Web Streams support for Node {/*ssr-web-streams-support-for-node*/}
+
+React 19.2 adds support for Web Streams for streaming SSR in Node.js:
+- [`renderToReadableStream`](/reference/react-dom/server/renderToReadableStream) is now available for Node.js
+- [`prerender`](/reference/react-dom/static/prerender) is now available for Node.js
+
+As well as the new `resume` APIs:
+- [`resume`](/reference/react-dom/server/resume) is available for Node.js.
+- [`resumeAndPrerender`](/reference/react-dom/static/resumeAndPrerender) is available for Node.js.
+
+
+
+
+#### Prefer Node Streams for server-side rendering in Node.js {/*prefer-node-streams-for-server-side-rendering-in-nodejs*/}
+
+In Node.js environments, we still highly recommend using the Node Streams APIs:
+
+- [`renderToPipeableStream`](/reference/react-dom/server/renderToPipeableStream)
+- [`resumeToPipeableStream`](/reference/react-dom/server/resumeToPipeableStream)
+- [`prerenderToNodeStream`](/reference/react-dom/static/prerenderToNodeStream)
+- [`resumeAndPrerenderToNodeStream`](/reference/react-dom/static/resumeAndPrerenderToNodeStream)
+
+This is because Node Streams are much faster than Web Streams in Node, and Web Streams do not support compression by default, leading to users accidentally missing the benefits of streaming.
+
+
+
+---
+
+### `eslint-plugin-react-hooks` v6 {/*eslint-plugin-react-hooks*/}
+
+We also published `eslint-plugin-react-hooks@latest` with flat config by default in the `recommended` preset, and opt-in for new React Compiler powered rules.
+
+To continue using the legacy config, you can change to `recommended-legacy`:
+
+```diff
+- extends: ['plugin:react-hooks/recommended']
++ extends: ['plugin:react-hooks/recommended-legacy']
+```
+
+For a full list of compiler enabled rules, [check out the linter docs](/reference/eslint-plugin-react-hooks#recommended).
+
+Check out the `eslint-plugin-react-hooks` [changelog for a full list of changes](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md#610).
+
+---
+
+### Update the default `useId` prefix {/*update-the-default-useid-prefix*/}
+
+In 19.2, we're updating the default `useId` prefix from `:r:` (19.0.0) or `Β«rΒ»` (19.1.0) to `_r_`.
+
+The original intent of using a special character that was not valid for CSS selectors was that it would be unlikely to collide with IDs written by users. However, to support View Transitions, we need to ensure that IDs generated by `useId` are valid for `view-transition-name` and XML 1.0 names.
+
+---
+
+## Changelog {/*changelog*/}
+
+Other notable changes
+- `react-dom`: Allow nonce to be used on hoistable styles [#32461](https://github.com/facebook/react/pull/32461)
+- `react-dom`: Warn for using a React owned node as a Container if it also has text content [#32774](https://github.com/facebook/react/pull/32774)
+
+Notable bug fixes
+- `react`: Stringify context as "SomeContext" instead of "SomeContext.Provider" [#33507](https://github.com/facebook/react/pull/33507)
+- `react`: Fix infinite useDeferredValue loop in popstate event [#32821](https://github.com/facebook/react/pull/32821)
+- `react`: Fix a bug when an initial value was passed to useDeferredValue [#34376](https://github.com/facebook/react/pull/34376)
+- `react`: Fix a crash when submitting forms with Client Actions [#33055](https://github.com/facebook/react/pull/33055)
+- `react`: Hide/unhide the content of dehydrated suspense boundaries if they resuspend [#32900](https://github.com/facebook/react/pull/32900)
+- `react`: Avoid stack overflow on wide trees during Hot Reload [#34145](https://github.com/facebook/react/pull/34145)
+- `react`: Improve component stacks in various places [#33629](https://github.com/facebook/react/pull/33629), [#33724](https://github.com/facebook/react/pull/33724), [#32735](https://github.com/facebook/react/pull/32735), [#33723](https://github.com/facebook/react/pull/33723)
+- `react`: Fix a bug with React.use inside React.lazy-ed Component [#33941](https://github.com/facebook/react/pull/33941)
+- `react-dom`: Stop warning when ARIA 1.3 attributes are used [#34264](https://github.com/facebook/react/pull/34264)
+- `react-dom`: Fix a bug with deeply nested Suspense inside Suspense fallbacks [#33467](https://github.com/facebook/react/pull/33467)
+- `react-dom`: Avoid hanging when suspending after aborting while rendering [#34192](https://github.com/facebook/react/pull/34192)
+
+For a full list of changes, please see the [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md).
+
+
+---
+
+_Thanks to [Ricky Hanlon](https://bsky.app/profile/ricky.fm) for [writing this post](https://www.youtube.com/shorts/T9X3YkgZRG0), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Matt Carroll](https://twitter.com/mattcarrollcode), [Jack Pope](https://jackpope.me), and [Joe Savona](https://x.com/en_JS) for reviewing this post._
diff --git a/src/content/blog/2025/10/07/introducing-the-react-foundation.md b/src/content/blog/2025/10/07/introducing-the-react-foundation.md
new file mode 100644
index 000000000..a9b922dbc
--- /dev/null
+++ b/src/content/blog/2025/10/07/introducing-the-react-foundation.md
@@ -0,0 +1,67 @@
+---
+title: "Introducing the React Foundation"
+author: Seth Webster, Matt Carroll, Joe Savona
+date: 2025/10/07
+description: Today, we're announcing our plans to create the React Foundation a new technical governance structure
+---
+
+October 7, 2025 by [Seth Webster](https://x.com/sethwebster), [Matt Carroll](https://x.com/mattcarrollcode), [Joe Savona](https://x.com/en_JS), [Sophie Alpert](https://x.com/sophiebits)
+
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Today, we're announcing our plans to create the React Foundation and a new technical governance structure.
+
+
+
+---
+
+We open sourced React over a decade ago to help developers build great user experiences. From its earliest days, React has received substantial contributions from contributors outside of Meta. Over time, the number of contributors and the scope of their contributions has grown significantly. What started out as a tool developed for Meta has expanded into a project that spans multiple companies with regular contributions from across the ecosystem. React has outgrown the confines of any one company.
+
+To better serve the React community, we are announcing our plans to move React and React Native from Meta to a new React Foundation. As a part of this change, we will also be implementing a new independent technical governance structure. We believe these changes will enable us to give React ecosystem projects more resources.
+
+## The React Foundation {/*the-react-foundation*/}
+
+We will make the React Foundation the new home for React, React Native, and some supporting projects like JSX. The React Foundationβs mission will be to support the React community and ecosystem. Once implemented, the React Foundation will
+
+* Maintain Reactβs infrastructure like GitHub, CI, and trademarks
+* Organize React Conf
+* Create initiatives to support the React ecosystem like financial support of ecosystem projects, issuing grants, and creating programs
+
+The React Foundation will be governed by a board of directors, with Seth Webster serving as the executive director. This board will direct funds and resources to support Reactβs development, community, and ecosystem. We believe that this is the best structure to ensure that the React Foundation is vendor-neutral and reflects the best interests of the community.
+
+The founding corporate members of the React Foundation will be Amazon, Callstack, Expo, Meta, Microsoft, Software Mansion, and Vercel. These companies have had a major impact on the React and React Native ecosystems and we are grateful for their support. We are excited to welcome even more members in the future.
+
+
+
+
+
+
+
+
+
+
+
+
+## Reactβs technical governance {/*reacts-technical-governance*/}
+
+We believe that React's technical direction should be set by the people who contribute to and maintain React. As React moves to a foundation, it is important that no single company or organization is overrepresented. To achieve this, we plan to define a new technical governance structure for React that is independent from the React Foundation.
+
+As a part of creating Reactβs new technical governance structure we will reach out to the community for feedback. Once finalized, we will share details in a future post.
+
+## Thank you {/*thank-you*/}
+
+React's incredible growth is thanks to the thousands of people, companies, and projects that have shaped React. The creation of the React Foundation is a testament to the strength and vibrancy of the React community. Together, the React Foundation and Reactβs new technical governance will ensure that Reactβs future is secure for years to come.
diff --git a/src/content/blog/2025/10/07/react-compiler-1.md b/src/content/blog/2025/10/07/react-compiler-1.md
new file mode 100644
index 000000000..080f3586e
--- /dev/null
+++ b/src/content/blog/2025/10/07/react-compiler-1.md
@@ -0,0 +1,194 @@
+---
+title: "React Compiler v1.0"
+author: Lauren Tan, Joe Savona, and Mofei Zhang
+date: 2025/10/07
+description: We are releasing the compiler's first stable release today.
+
+---
+
+Oct 7, 2025 by [Lauren Tan](https://x.com/potetotes), [Joe Savona](https://x.com/en_JS), and [Mofei Zhang](https://x.com/zmofei).
+
+---
+
+
+
+The React team is excited to share new updates:
+
+
+
+1. React Compiler 1.0 is available today.
+2. Compiler-powered lint rules ship in `eslint-plugin-react-hooks`'s `recommended` and `recommended-latest` preset.
+3. We've published an incremental adoption guide, and partnered with Expo, Vite, and Next.js so new apps can start with the compiler enabled.
+
+---
+
+We are releasing the compiler's first stable release today. React Compiler works on both React and React Native, and automatically optimizes components and hooks without requiring rewrites. The compiler has been battle tested on major apps at Meta and is fully production-ready.
+
+[React Compiler](/learn/react-compiler) is a build-time tool that optimizes your React app through automatic memoization. Last year, we published React Compiler's [first beta](/blog/2024/10/21/react-compiler-beta-release) and received lots of great feedback and contributions. We're excited about the wins we've seen from folks adopting the compiler (see case studies from [Sanity Studio](https://github.com/reactwg/react-compiler/discussions/33) and [Wakelet](https://github.com/reactwg/react-compiler/discussions/52)) and are excited to bring the compiler to more users in the React community.
+
+This release is the culmination of a huge and complex engineering effort spanning almost a decade. The React team's first exploration into compilers started with [Prepack](https://github.com/facebookarchive/prepack) in 2017. While this project was eventually shut down, there were many learnings that informed the team on the design of Hooks, which were designed with a future compiler in mind. In 2021, [Xuan Huang](https://x.com/Huxpro) demoed the [first iteration](https://www.youtube.com/watch?v=lGEMwh32soc) of a new take on React Compiler.
+
+Although this first version of the new React Compiler was eventually rewritten, the first prototype gave us increased confidence that this was a tractable problem, and the learnings that an alternative compiler architecture could precisely give us the memoization characteristics we wanted. [Joe Savona](https://x.com/en_JS), [Sathya Gunasekaran](https://x.com/_gsathya), [Mofei Zhang](https://x.com/zmofei), and [Lauren Tan](https://x.com/potetotes) worked through our first rewrite, moving the compiler's architecture into a Control Flow Graph (CFG) based High-Level Intermediate Representation (HIR). This paved the way for much more precise analysis and even type inference within React Compiler. Since then, many significant portions of the compiler have been rewritten, with each rewrite informed by our learnings from the previous attempt. And we have received significant help and contributions from many members of the [React team](/community/team) along the way.
+
+This stable release is our first of many. The compiler will continue to evolve and improve, and we expect to see it become a new foundation and era for the next decade and more of React.
+
+You can jump straight to the [quickstart](/learn/react-compiler), or read on for the highlights from React Conf 2025.
+
+
+
+#### How does React Compiler work? {/*how-does-react-compiler-work*/}
+
+React Compiler is an optimizing compiler that optimizes components and hooks through automatic memoization. While it is implemented as a Babel plugin currently, the compiler is largely decoupled from Babel and lowers the Abstract Syntax Tree (AST) provided by Babel into its own novel HIR, and through multiple compiler passes, carefully understands data-flow and mutability of your React code. This allows the compiler to granularly memoize values used in rendering, including the ability to memoize conditionally, which is not possible through manual memoization.
+
+```js {8}
+import { use } from 'react';
+
+export default function ThemeProvider(props) {
+ if (!props.children) {
+ return null;
+ }
+ // The compiler can still memoize code after a conditional return
+ const theme = mergeTheme(props.theme, use(ThemeContext));
+ return (
+
+ {props.children}
+
+ );
+}
+```
+_See this example in the [React Compiler Playground](https://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBUYCBAvgQGYwQYEDkMCAhnHowNwA6AdvwQAPHPgIATBNVZQANoWpQ+HNBD4EAKgAsEGBAAU6ANzSSYACix0sYAJRF+BAmmoFzAQisQbAOjha0WXEWPntgRycCFjxYdT45WV51Sgi4NTBCPB09AgBeAj0YAHMEbV0ES2swHyzygBoSMnMyvQBhNTxhPFtbJKdo2LcIpwAeFoR2vk6hQiNWWSgEXOBavQoAPmHI4C9ff0DghD4KLZGAenHJ6bxN5N7+ChA6kDS+ajQilHRsXEyATyw5GI+gWRTQfAA8lg8Ko+GBKDQ6AxGAAjVgohCyAC0WFB4KxLHYeCxaWwgQQMDO4jQGW4-H45nCyTOZ1JWECrBhagAshBJMgCDwQPNZEKHgQwJyae8EPCQVAwZDobC7FwnuAtBAAO4ASSmFL48zAKGksjIFCAA)_
+
+In addition to automatic memoization, React Compiler also has validation passes that run on your React code. These passes encode the [Rules of React](/reference/rules), and uses the compiler's understanding of data-flow and mutability to provide diagnostics where the Rules of React are broken. These diagnostics often expose latent bugs hiding in React code, and are primarily surfaced through `eslint-plugin-react-hooks`.
+
+To learn more about how the compiler optimizes your code, visit the [Playground](https://playground.react.dev).
+
+
+
+## Use React Compiler Today {/*use-react-compiler-today*/}
+To install the compiler:
+
+npm
+
+npm install --save-dev --save-exact babel-plugin-react-compiler@latest
+
+
+pnpm
+
+pnpm add --save-dev --save-exact babel-plugin-react-compiler@latest
+
+
+yarn
+
+yarn add --dev --exact babel-plugin-react-compiler@latest
+
+
+As part of the stable release, we've been making React Compiler easier to add to your projects and added optimizations to how the compiler generates memoization. React Compiler now supports optional chains and array indices as dependencies. These improvements ultimately result in fewer re-renders and more responsive UIs, while letting you keep writing idiomatic declarative code.
+
+You can find more details on using the Compiler in [our docs](/learn/react-compiler).
+
+## What we're seeing in production {/*react-compiler-at-meta*/}
+[The compiler has already shipped in apps like Meta Quest Store](https://youtu.be/lyEKhv8-3n0?t=3002). We've seen initial loads and cross-page navigations improve by up to 12%, while certain interactions are more than 2.5Γ faster. Memory usage stays neutral even with these wins. Although your mileage may vary, we recommend experimenting with the compiler in your app to see similar performance gains.
+
+## Backwards Compatibility {/*backwards-compatibility*/}
+As noted in the Beta announcement, React Compiler is compatible with React 17 and up. If you are not yet on React 19, you can use React Compiler by specifying a minimum target in your compiler config, and adding `react-compiler-runtime` as a dependency. You can find docs on this [here](/reference/react-compiler/target#targeting-react-17-or-18).
+
+## Enforce the Rules of React with compiler-powered linting {/*migrating-from-eslint-plugin-react-compiler-to-eslint-plugin-react-hooks*/}
+React Compiler includes an ESLint rule that helps identify code that breaks the [Rules of React](/reference/rules). The linter does not require the compiler to be installed, so there's no risk in upgrading eslint-plugin-react-hooks. We recommend everyone upgrade today.
+
+If you have already installed `eslint-plugin-react-compiler`, you can now remove it and use `eslint-plugin-react-hooks@latest`. Many thanks to [@michaelfaith](https://bsky.app/profile/michael.faith) for contributing to this improvement!
+
+To install:
+
+npm
+
+npm install --save-dev eslint-plugin-react-hooks@latest
+
+
+pnpm
+
+pnpm add --save-dev eslint-plugin-react-hooks@latest
+
+
+yarn
+
+yarn add --dev eslint-plugin-react-hooks@latest
+
+
+```js {6}
+// eslint.config.js (Flat Config)
+import reactHooks from 'eslint-plugin-react-hooks';
+import { defineConfig } from 'eslint/config';
+
+export default defineConfig([
+ reactHooks.configs.flat.recommended,
+]);
+```
+
+```js {3}
+// eslintrc.json (Legacy Config)
+{
+ "extends": ["plugin:react-hooks/recommended"],
+ // ...
+}
+```
+
+To enable React Compiler rules, we recommend using the `recommended` preset. You can also check out the [README](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/README.md) for more instructions. Here are a few examples we featured at React Conf:
+
+- Catching `setState` patterns that cause render loops with [`set-state-in-render`](/reference/eslint-plugin-react-hooks/lints/set-state-in-render).
+- Flagging expensive work inside effects via [`set-state-in-effect`](/reference/eslint-plugin-react-hooks/lints/set-state-in-effect).
+- Preventing unsafe ref access during render with [`refs`](/reference/eslint-plugin-react-hooks/lints/refs).
+
+## What should I do about useMemo, useCallback, and React.memo? {/*what-should-i-do-about-usememo-usecallback-and-reactmemo*/}
+By default, React Compiler will memoize your code based on its analysis and heuristics. In most cases, this memoization will be as precise, or moreso, than what you may have written β and as noted above, the compiler can memoize even in cases where `useMemo`/`useCallback` cannot be used, such as after an early return.
+
+However, in some cases developers may need more control over memoization. The `useMemo` and `useCallback` hooks can continue to be used with React Compiler as an escape hatch to provide control over which values are memoized. A common use-case for this is if a memoized value is used as an effect dependency, in order to ensure that an effect does not fire repeatedly even when its dependencies do not meaningfully change.
+
+For new code, we recommend relying on the compiler for memoization and using `useMemo`/`useCallback` where needed to achieve precise control.
+
+For existing code, we recommend either leaving existing memoization in place (removing it can change compilation output) or carefully testing before removing the memoization.
+
+## New apps should use React Compiler {/*new-apps-should-use-react-compiler*/}
+We have partnered with the Expo, Vite, and Next.js teams to add the compiler to the new app experience.
+
+[Expo SDK 54](https://docs.expo.dev/guides/react-compiler/) and up has the compiler enabled by default, so new apps will automatically be able to take advantage of the compiler from the start.
+
+
+npx create-expo-app@latest
+
+
+[Vite](https://vite.dev/guide/) and [Next.js](https://nextjs.org/docs/app/api-reference/cli/create-next-app) users can choose the compiler enabled templates in `create-vite` and `create-next-app`.
+
+
+npm create vite@latest
+
+
+
+
+
+npx create-next-app@latest
+
+
+## Adopt React Compiler incrementally {/*adopt-react-compiler-incrementally*/}
+If you're maintaining an existing application, you can roll out the compiler at your own pace. We published a step-by-step [incremental adoption guide](/learn/react-compiler/incremental-adoption) that covers gating strategies, compatibility checks, and rollout tooling so you can enable the compiler with confidence.
+
+## swc support (experimental) {/*swc-support-experimental*/}
+React Compiler can be installed across [several build tools](/learn/react-compiler#installation) such as Babel, Vite, and Rsbuild.
+
+In addition to those tools, we have been collaborating with Kang Dongyoon ([@kdy1dev](https://x.com/kdy1dev)) from the [swc](https://swc.rs/) team on adding additional support for React Compiler as an swc plugin. While this work isn't done, Next.js build performance should now be considerably faster when the [React Compiler is enabled in your Next.js app](https://nextjs.org/docs/app/api-reference/config/next-config-js/reactCompiler).
+
+We recommend using Next.js [15.3.1](https://github.com/vercel/next.js/releases/tag/v15.3.1) or greater to get the best build performance.
+
+Vite users can continue to use [vite-plugin-react](https://github.com/vitejs/vite-plugin-react) to enable the compiler, by adding it as a [Babel plugin](/learn/react-compiler/installation#vite). We are also working with the [oxc](https://oxc.rs/) team to [add support for the compiler](https://github.com/oxc-project/oxc/issues/10048). Once [rolldown](https://github.com/rolldown/rolldown) is officially released and supported in Vite and oxc support is added for React Compiler, we'll update the docs with information on how to migrate.
+
+## Upgrading React Compiler {/*upgrading-react-compiler*/}
+React Compiler works best when the auto-memoization applied is strictly for performance. Future versions of the compiler may change how memoization is applied, for example it could become more granular and precise.
+
+However, because product code may sometimes break the [rules of React](/reference/rules) in ways that aren't always statically detectable in JavaScript, changing memoization can occasionally have unexpected results. For example, a previously memoized value might be used as a dependency for a `useEffect` somewhere in the component tree. Changing how or whether this value is memoized can cause over or under-firing of that `useEffect`. While we encourage [useEffect only for synchronization](/learn/synchronizing-with-effects), your codebase may have `useEffect`s that cover other use cases, such as effects that needs to only run in response to specific values changing.
+
+In other words, changing memoization may under rare circumstances cause unexpected behavior. For this reason, we recommend following the Rules of React and employing continuous end-to-end testing of your app so you can upgrade the compiler with confidence and identify any rules of React violations that might cause issues.
+
+If you don't have good test coverage, we recommend pinning the compiler to an exact version (eg `1.0.0`) rather than a SemVer range (eg `^1.0.0`). You can do this by passing the `--save-exact` (npm/pnpm) or `--exact` flags (yarn) when upgrading the compiler. You should then do any upgrades of the compiler manually, taking care to check that your app still works as expected.
+
+---
+
+Thanks to [Jason Bonta](https://x.com/someextent), [Jimmy Lai](https://x.com/feedthejim), [Kang Dongyoon](https://x.com/kdy1dev) (@kdy1dev), and [Dan Abramov](https://bsky.app/profile/danabra.mov) for reviewing and editing this post.
diff --git a/src/content/blog/2025/10/16/react-conf-2025-recap.md b/src/content/blog/2025/10/16/react-conf-2025-recap.md
new file mode 100644
index 000000000..8476b02aa
--- /dev/null
+++ b/src/content/blog/2025/10/16/react-conf-2025-recap.md
@@ -0,0 +1,133 @@
+---
+title: "React Conf 2025 Recap"
+author: Matt Carroll and Ricky Hanlon
+date: 2025/10/16
+description: Last week we hosted React Conf 2025, in this post, we summarize the talks and announcements from the event...
+---
+
+Oct 16, 2025 by [Matt Carroll](https://x.com/mattcarrollcode) and [Ricky Hanlon](https://bsky.app/profile/ricky.fm)
+
+---
+
+
+
+Last week we hosted React Conf 2025 where we announced the [React Foundation](/blog/2025/10/07/introducing-the-react-foundation) and showcased new features coming to React and React Native.
+
+
+
+---
+
+React Conf 2025 was held on October 7-8, 2025, in Henderson, Nevada.
+
+The entire [day 1](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=1067s) and [day 2](https://www.youtube.com/watch?v=p9OcztRyDl0&t=2299s) streams are available online, and you can view photos from the event [here](https://conf.react.dev/photos).
+
+In this post, we'll summarize the talks and announcements from the event.
+
+
+## Day 1 Keynote {/*day-1-keynote*/}
+
+_Watch the full day 1 stream [here.](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=1067s)_
+
+In the day 1 keynote, Joe Savona shared the updates from the team and community since the last React Conf and highlights from React 19.0 and 19.1.
+
+Mofei Zhang highlighted the new features in React 19.2 including:
+* [``](https://react.dev/reference/react/Activity) β a new component to manage visibility.
+* [`useEffectEvent`](https://react.dev/reference/react/useEffectEvent) to fire events from Effects.
+* [Performance Tracks](https://react.dev/reference/dev-tools/react-performance-tracks) β a new profiling tool in DevTools.
+* [Partial Pre-Rendering](https://react.dev/blog/2025/10/01/react-19-2#partial-pre-rendering) to pre-render part of an app ahead of time, and resume rendering it later.
+
+Jack Pope announced new features in Canary including:
+
+* [``](https://react.dev/reference/react/ViewTransition) β a new component to animate page transitions.
+* [Fragment Refs](https://react.dev/reference/react/Fragment#fragmentinstance) β a new way to interact with the DOM nodes wrapped by a Fragment.
+
+Lauren Tan announced [React Compiler v1.0](https://react.dev/blog/2025/10/07/react-compiler-1) and recommended all apps use React Compiler for benefits like:
+* [Automatic memoization](/learn/react-compiler/introduction#what-does-react-compiler-do) that understands React code.
+* [New lint rules](/learn/react-compiler/installation#eslint-integration) powered by React Compiler to teach best practices.
+* [Default support](/learn/react-compiler/installation#basic-setup) for new apps in Vite, Next.js, and Expo.
+* [Migration guides](/learn/react-compiler/incremental-adoption) for existing apps migrating to React Compiler.
+
+Finally, Seth Webster announced the [React Foundation](/blog/2025/10/07/introducing-the-react-foundation) to steward React's open source development and community.
+
+Watch day 1 here:
+
+
+
+## Day 2 Keynote {/*day-2-keynote*/}
+
+_Watch the full day 2 stream [here.](https://www.youtube.com/watch?v=p9OcztRyDl0&t=2299s)_
+
+Jorge Cohen and Nicola Corti kicked off day 2 highlighting React Nativeβs incredible growth with 4M weekly downloads (100% growth YoY), and some notable app migrations from Shopify, Zalando, and HelloFresh, award-winning apps like RISE, RUNNA, and Partyful, and AI apps from Mistral, Replit, and v0.
+
+Riccardo Cipolleschi shared two major announcements for React Native:
+- [React Native 0.82 will be New Architecture only](https://reactnative.dev/blog/2025/10/08/react-native-0.82#new-architecture-only)
+- [Experimental Hermes V1 support](https://reactnative.dev/blog/2025/10/08/react-native-0.82#experimental-hermes-v1)
+
+Ruben Norte and Alex Hunt finished out the keynote by announcing:
+- [New web-aligned DOM APIs](https://reactnative.dev/blog/2025/10/08/react-native-0.82#dom-node-apis) for improved compatibility with React on the web.
+- [New Performance APIs](https://reactnative.dev/blog/2025/10/08/react-native-0.82#web-performance-apis-canary) with a new network panel and desktop app.
+
+Watch day 2 here:
+
+
+
+
+## React team talks {/*react-team-talks*/}
+
+Throughout the conference, there were talks from the React team including:
+* [Async React Part I](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=10907s) and [Part II](https://www.youtube.com/watch?v=p9OcztRyDl0&t=29073s) [(Ricky Hanlon)](https://x.com/rickhanlonii) showed what's possible using the last 10 years of innovation.
+* [Exploring React Performance](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=20274s) [(Joe Savona)](https://x.com/en_js) showed the results of our React performance research.
+* [Reimagining Lists in React Native](https://www.youtube.com/watch?v=p9OcztRyDl0&t=10382s) [(Luna Wei)](https://x.com/lunaleaps) introduced Virtual View, a new primitive for lists that manages visibility with mode-based rendering (hidden/pre-render/visible).
+* [Profiling with React Performance tracks](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=8276s) [(Ruslan Lesiutin)](https://x.com/ruslanlesiutin) showed how to use the new React Performance Tracks to debug performance issues and build great apps.
+* [React Strict DOM](https://www.youtube.com/watch?v=p9OcztRyDl0&t=9026s) [(Nicolas Gallagher)](https://nicolasgallagher.com/) talked about Meta's approach to using web code on native.
+* [View Transitions and Activity](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=4870s) [(Chance Strickland)](https://x.com/chancethedev) β Chance worked with the React team to showcase how to use `` and `` to build fast, native-feeling animations.
+* [In case you missed the memo](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=9525s) [(Cody Olsen)](https://bsky.app/profile/codey.bsky.social) - Cody worked with the React team to adopt the Compiler at Sanity Studio, and shared how it went.
+## React framework talks {/*react-framework-talks*/}
+
+The second half of day 2 had a series of talks from React Framework teams including:
+
+* [React Native, Amplified](https://www.youtube.com/watch?v=p9OcztRyDl0&t=5737s) by [Giovanni Laquidara](https://x.com/giolaq) and [Eric Fahsl](https://x.com/efahsl).
+* [React Everywhere: Bringing React Into Native Apps](https://www.youtube.com/watch?v=p9OcztRyDl0&t=18213s) by [Mike Grabowski](https://x.com/grabbou).
+* [How Parcel Bundles React Server Components](https://www.youtube.com/watch?v=p9OcztRyDl0&t=19538s) by [Devon Govett](https://x.com/devonovett).
+* [Designing Page Transitions](https://www.youtube.com/watch?v=p9OcztRyDl0&t=20640s) by [Delba de Oliveira](https://x.com/delba_oliveira).
+* [Build Fast, Deploy Faster β Expo in 2025](https://www.youtube.com/watch?v=p9OcztRyDl0&t=21350s) by [Evan Bacon](https://x.com/baconbrix).
+* [The React Router's take on RSC](https://www.youtube.com/watch?v=p9OcztRyDl0&t=22367s) by [Kent C. Dodds](https://x.com/kentcdodds).
+* [RedwoodSDK: Web Standards Meet Full-Stack React](https://www.youtube.com/watch?v=p9OcztRyDl0&t=24992s) by [Peter Pistorius](https://x.com/appfactory) and [Aurora Scharff](https://x.com/aurorascharff).
+* [TanStack Start](https://www.youtube.com/watch?v=p9OcztRyDl0&t=26065s) by [Tanner Linsley](https://x.com/tannerlinsley).
+
+## Q&A {/*q-and-a*/}
+There were three Q&A panels during the conference:
+
+* [React Team at Meta Q&A](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=26304s) hosted by [Shruti Kapoor](https://x.com/shrutikapoor08)
+* [React Frameworks Q&A](https://www.youtube.com/watch?v=p9OcztRyDl0&t=26812s) hosted by [Jack Herrington](https://x.com/jherr)
+* [React and AI Panel](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=18741s) hosted by [Lee Robinson](https://x.com/leerob)
+
+## And more... {/*and-more*/}
+
+We also heard talks from the community including:
+* [Building an MCP Server](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=24204s) by [James Swinton](https://x.com/JamesSwintonDev) ([AG Grid](https://www.ag-grid.com/?utm_source=react-conf&utm_medium=react-conf-homepage&utm_campaign=react-conf-sponsorship-2025))
+* [Modern Emails using React](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=25521s) by [Zeno Rocha](https://x.com/zenorocha) ([Resend](https://resend.com/))
+* [Why React Native Apps Make All the Money](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=24917s) by [Perttu LΓ€hteenlahti](https://x.com/plahteenlahti) ([RevenueCat](https://www.revenuecat.com/))
+* [The invisible craft of great UX](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=23400s) by [MichaΕ Dudak](https://x.com/michaldudak) ([MUI](https://mui.com/))
+
+## Thanks {/*thanks*/}
+
+Thank you to all the staff, speakers, and participants, who made React Conf 2025 possible. There are too many to list, but we want to thank a few in particular.
+
+Thank you to [Matt Carroll](https://x.com/mattcarrollcode) for planning the entire event and building the conference website.
+
+Thank you to [Michael Chan](https://x.com/chantastic) for MCing React Conf with incredible dedication and energy, delivering thoughtful speaker intros, fun jokes, and genuine enthusiasm throughout the event. Thank you to [Jorge Cohen](https://x.com/JorgeWritesCode) for hosting the livestream, interviewing each speaker, and bringing the in-person React Conf experience online.
+
+Thank you to [Mateusz Kornacki](https://x.com/mat_kornacki), [Mike Grabowski](https://x.com/grabbou), [Kris Lis](https://www.linkedin.com/in/krzysztoflisakakris/) and the team at [Callstack](https://www.callstack.com/) for co-organizing React Conf and providing design, engineering, and marketing support. Thank you to the [ZeroSlope team](https://zeroslopeevents.com/contact-us/): Sunny Leggett, Tracey Harrison, Tara Larish, Whitney Pogue, and Brianne Smythia for helping to organize the event.
+
+Thank you to [Jorge Cabiedes Acosta](https://github.com/jorge-cab), [Gijs Weterings](https://x.com/gweterings), [Tim Yung](https://x.com/yungsters), and [Jason Bonta](https://x.com/someextent) for bringing questions from the Discord to the livestream. Thank you to [Lynn Yu](https://github.com/lynnshaoyu) for leading the moderation of the Discord. Thank you to [Seth Webster](https://x.com/sethwebster) for welcoming us each day; and to [Christopher Chedeau](https://x.com/vjeux), [Kevin Gozali](https://x.com/fkgozali), and [Pieter De Baets](https://x.com/Javache) for joining us with a special message during the after-party.
+
+Thank you to [Kadi Kraman](https://x.com/kadikraman), [Beto](https://x.com/betomoedano) and [Nicolas Solerieu](https://www.linkedin.com/in/nicolas-solerieu/) for building the conference mobile app. Thank you [Wojtek Szafraniec](https://x.com/wojteg1337) for help with the conference website. Thank you to [Mustache](https://www.mustachepower.com/) & [Cornerstone](https://cornerstoneav.com/) for the visuals, stage, and sound; and to the Westin Hotel for hosting us.
+
+Thank you to all the sponsors who made the event possible: [Amazon](https://www.developer.amazon.com), [MUI](https://mui.com/), [Vercel](https://vercel.com/), [Expo](https://expo.dev/), [RedwoodSDK](https://rwsdk.com), [Ag Grid](https://www.ag-grid.com), [RevenueCat](https://www.revenuecat.com/), [Resend](https://resend.com), [Mux](https://www.mux.com/), [Old Mission](https://www.oldmissioncapital.com/), [Arcjet](https://arcjet.com), [Infinite Red](https://infinite.red/), and [RenderATL](https://renderatl.com).
+
+Thank you to all the speakers who shared their knowledge and experience with the community.
+
+Finally, thank you to everyone who attended in person and online to show what makes React, React. React is more than a library, it is a community, and it was inspiring to see everyone come together to share and learn together.
+
+See you next time!
diff --git a/src/content/blog/2025/12/03/critical-security-vulnerability-in-react-server-components.md b/src/content/blog/2025/12/03/critical-security-vulnerability-in-react-server-components.md
new file mode 100644
index 000000000..310a84116
--- /dev/null
+++ b/src/content/blog/2025/12/03/critical-security-vulnerability-in-react-server-components.md
@@ -0,0 +1,208 @@
+---
+title: "Critical Security Vulnerability in React Server Components"
+author: The React Team
+date: 2025/12/03
+description: There is an unauthenticated remote code execution vulnerability in React Server Components. A fix has been published in versions 19.0.1, 19.1.2, and 19.2.1. We recommend upgrading immediately.
+
+---
+
+December 3, 2025 by [The React Team](/community/team)
+
+---
+
+
+
+There is an unauthenticated remote code execution vulnerability in React Server Components.
+
+We recommend upgrading immediately.
+
+
+
+---
+
+On November 29th, Lachlan Davidson reported a security vulnerability in React that allows unauthenticated remote code execution by exploiting a flaw in how React decodes payloads sent to React Server Function endpoints.
+
+Even if your app does not implement any React Server Function endpoints it may still be vulnerable if your app supports React Server Components.
+
+This vulnerability was disclosed as [CVE-2025-55182](https://www.cve.org/CVERecord?id=CVE-2025-55182) and is rated CVSS 10.0.
+
+The vulnerability is present in versions 19.0, 19.1.0, 19.1.1, and 19.2.0 of:
+
+* [react-server-dom-webpack](https://www.npmjs.com/package/react-server-dom-webpack)
+* [react-server-dom-parcel](https://www.npmjs.com/package/react-server-dom-parcel)
+* [react-server-dom-turbopack](https://www.npmjs.com/package/react-server-dom-turbopack?activeTab=readme)
+
+## Immediate Action Required {/*immediate-action-required*/}
+
+A fix was introduced in versions [19.0.1](https://github.com/facebook/react/releases/tag/v19.0.1), [19.1.2](https://github.com/facebook/react/releases/tag/v19.1.2), and [19.2.1](https://github.com/facebook/react/releases/tag/v19.2.1). If you are using any of the above packages please upgrade to any of the fixed versions immediately.
+
+If your appβs React code does not use a server, your app is not affected by this vulnerability. If your app does not use a framework, bundler, or bundler plugin that supports React Server Components, your app is not affected by this vulnerability.
+
+### Affected frameworks and bundlers {/*affected-frameworks-and-bundlers*/}
+
+Some React frameworks and bundlers depended on, had peer dependencies for, or included the vulnerable React packages. The following React frameworks & bundlers are affected: [next](https://www.npmjs.com/package/next), [react-router](https://www.npmjs.com/package/react-router), [waku](https://www.npmjs.com/package/waku), [@parcel/rsc](https://www.npmjs.com/package/@parcel/rsc), [@vitejs/plugin-rsc](https://www.npmjs.com/package/@vitejs/plugin-rsc), and [rwsdk](https://www.npmjs.com/package/rwsdk).
+
+See the [update instructions below](#update-instructions) for how to upgrade to these patches.
+
+### Hosting Provider Mitigations {/*hosting-provider-mitigations*/}
+
+We have worked with a number of hosting providers to apply temporary mitigations.
+
+You should not depend on these to secure your app, and still update immediately.
+
+### Vulnerability overview {/*vulnerability-overview*/}
+
+[React Server Functions](https://react.dev/reference/rsc/server-functions) allow a client to call a function on a server. React provides integration points and tools that frameworks and bundlers use to help React code run on both the client and the server. React translates requests on the client into HTTP requests which are forwarded to a server. On the server, React translates the HTTP request into a function call and returns the needed data to the client.
+
+An unauthenticated attacker could craft a malicious HTTP request to any Server Function endpoint that, when deserialized by React, achieves remote code execution on the server. Further details of the vulnerability will be provided after the rollout of the fix is complete.
+
+## Update Instructions {/*update-instructions*/}
+
+
+
+These instructions have been updated to include the new vulnerabilities:
+
+- **Denial of Service - High Severity**: [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184) and [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779) (CVSS 7.5)
+- **Source Code Exposure - Medium Severity**: [CVE-2025-55183](https://www.cve.org/CVERecord?id=CVE-2025-55183) (CVSS 5.3)
+- **Denial of Service - High Severity**: January 26, 2026 [CVE-2026-23864](https://www.cve.org/CVERecord?id=CVE-2026-23864) (CVSS 7.5)
+
+See the [follow-up blog post](/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components) for more info.
+
+-----
+
+_Updated January 26, 2026._
+
+
+### Next.js {/*update-next-js*/}
+
+All users should upgrade to the latest patched version in their release line:
+
+```bash
+npm install next@14.2.35 // for 13.3.x, 13.4.x, 13.5.x, 14.x
+npm install next@15.0.8 // for 15.0.x
+npm install next@15.1.12 // for 15.1.x
+npm install next@15.2.9 // for 15.2.x
+npm install next@15.3.9 // for 15.3.x
+npm install next@15.4.11 // for 15.4.x
+npm install next@15.5.10 // for 15.5.x
+npm install next@16.0.11 // for 16.0.x
+npm install next@16.1.5 // for 16.1.x
+
+npm install next@15.6.0-canary.60 // for 15.x canary releases
+npm install next@16.1.0-canary.19 // for 16.x canary releases
+```
+
+15.0.8, 15.1.12, 15.2.9, 15.3.9, 15.4.10, 15.5.10, 15.6.0-canary.61, 16.0.11, 16.1.5
+
+If you are on version `13.3` or later version of Next.js 13 (`13.3.x`, `13.4.x`, or `13.5.x`) please upgrade to version `14.2.35`.
+
+If you are on `next@14.3.0-canary.77` or a later canary release, downgrade to the latest stable 14.x release:
+
+```bash
+npm install next@14
+```
+
+See the [Next.js blog](https://nextjs.org/blog/security-update-2025-12-11) for the latest update instructions and the [previous changelog](https://nextjs.org/blog/CVE-2025-66478) for more info.
+
+### React Router {/*update-react-router*/}
+
+If you are using React Router's unstable RSC APIs, you should upgrade the following package.json dependencies if they exist:
+
+```bash
+npm install react@latest
+npm install react-dom@latest
+npm install react-server-dom-parcel@latest
+npm install react-server-dom-webpack@latest
+npm install @vitejs/plugin-rsc@latest
+```
+
+### Expo {/*expo*/}
+
+To learn more about mitigating, read the article on [expo.dev/changelog](https://expo.dev/changelog/mitigating-critical-security-vulnerability-in-react-server-components).
+
+### Redwood SDK {/*update-redwood-sdk*/}
+
+Ensure you are on rwsdk>=1.0.0-alpha.0
+
+For the latest beta version:
+
+```bash
+npm install rwsdk@latest
+```
+
+Upgrade to the latest `react-server-dom-webpack`:
+
+```bash
+npm install react@latest react-dom@latest react-server-dom-webpack@latest
+```
+
+See [Redwood docs](https://docs.rwsdk.com/migrating/) for more migration instructions.
+
+### Waku {/*update-waku*/}
+
+Upgrade to the latest `react-server-dom-webpack`:
+
+```bash
+npm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest
+```
+
+See [Waku announcement](https://github.com/wakujs/waku/discussions/1823) for more migration instructions.
+
+### `@vitejs/plugin-rsc` {/*vitejs-plugin-rsc*/}
+
+Upgrade to the latest RSC plugin:
+
+```bash
+npm install react@latest react-dom@latest @vitejs/plugin-rsc@latest
+```
+
+### `react-server-dom-parcel` {/*update-react-server-dom-parcel*/}
+
+Update to the latest version:
+
+ ```bash
+ npm install react@latest react-dom@latest react-server-dom-parcel@latest
+ ```
+
+### `react-server-dom-turbopack` {/*update-react-server-dom-turbopack*/}
+
+Update to the latest version:
+
+ ```bash
+ npm install react@latest react-dom@latest react-server-dom-turbopack@latest
+ ```
+
+### `react-server-dom-webpack` {/*update-react-server-dom-webpack*/}
+
+Update to the latest version:
+
+ ```bash
+npm install react@latest react-dom@latest react-server-dom-webpack@latest
+ ```
+
+
+### React Native {/*react-native*/}
+
+For React Native users not using a monorepo or `react-dom`, your `react` version should be pinned in your `package.json`, and there are no additional steps needed.
+
+If you are using React Native in a monorepo, you should update _only_ the impacted packages if they are installed:
+
+- `react-server-dom-webpack`
+- `react-server-dom-parcel`
+- `react-server-dom-turbopack`
+
+This is required to mitigate the security advisory, but you do not need to update `react` and `react-dom` so this will not cause the version mismatch error in React Native.
+
+See [this issue](https://github.com/facebook/react-native/issues/54772#issuecomment-3617929832) for more information.
+
+
+## Timeline {/*timeline*/}
+
+* **November 29th**: Lachlan Davidson reported the security vulnerability via [Meta Bug Bounty](https://bugbounty.meta.com/).
+* **November 30th**: Meta security researchers confirmed and began working with the React team on a fix.
+* **December 1st**: A fix was created and the React team began working with affected hosting providers and open source projects to validate the fix, implement mitigations and roll out the fix
+* **December 3rd**: The fix was published to npm and the publicly disclosed as CVE-2025-55182.
+
+## Attribution {/*attribution*/}
+
+Thank you to [Lachlan Davidson](https://github.com/lachlan2k) for discovering, reporting, and working to help fix this vulnerability.
diff --git a/src/content/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components.md b/src/content/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components.md
new file mode 100644
index 000000000..70e5c2e65
--- /dev/null
+++ b/src/content/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components.md
@@ -0,0 +1,202 @@
+---
+title: "Denial of Service and Source Code Exposure in React Server Components"
+author: The React Team
+date: 2025/12/11
+description: Security researchers have found and disclosed two additional vulnerabilities in React Server Components while attempting to exploit the patches in last weekβs critical vulnerability. High vulnerability Denial of Service (CVE-2025-55184), and medium vulnerability Source Code Exposure (CVE-2025-55183)
+
+
+---
+
+December 11, 2025 by [The React Team](/community/team)
+
+_Updated January 26, 2026._
+
+---
+
+
+
+Security researchers have found and disclosed two additional vulnerabilities in React Server Components while attempting to exploit the patches in last weekβs critical vulnerability.
+
+**These new vulnerabilities do not allow for Remote Code Execution.** The patch for React2Shell remains effective at mitigating the Remote Code Execution exploit.
+
+
+
+---
+
+The new vulnerabilities are disclosed as:
+
+- **Denial of Service - High Severity**: [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184), [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779), and [CVE-2026-23864](https://www.cve.org/CVERecord?id=CVE-2026-23864) (CVSS 7.5)
+- **Source Code Exposure - Medium Severity**: [CVE-2025-55183](https://www.cve.org/CVERecord?id=CVE-2025-55183) (CVSS 5.3)
+
+We recommend upgrading immediately due to the severity of the newly disclosed vulnerabilities.
+
+
+
+#### The patches published earlier are vulnerable. {/*the-patches-published-earlier-are-vulnerable*/}
+
+If you already updated for the previous vulnerabilities, you will need to update again.
+
+If you updated to 19.0.3, 19.1.4, and 19.2.3, [these are incomplete](#additional-fix-published), and you will need to update again.
+
+Please see [the instructions in the previous post](/blog/2025/12/03/critical-security-vulnerability-in-react-server-components#update-instructions) for upgrade steps.
+
+-----
+
+_Updated January 26, 2026._
+
+
+
+Further details of these vulnerabilities will be provided after the rollout of the fixes are complete.
+
+## Immediate Action Required {/*immediate-action-required*/}
+
+These vulnerabilities are present in the same packages and versions as [CVE-2025-55182](/blog/2025/12/03/critical-security-vulnerability-in-react-server-components).
+
+This includes 19.0.0, 19.0.1, 19.0.2, 19.0.3, 19.1.0, 19.1.1, 19.1.2, 19.1.3, 19.2.0, 19.2.1, 19.2.2, and 19.2.3 of:
+
+* [react-server-dom-webpack](https://www.npmjs.com/package/react-server-dom-webpack)
+* [react-server-dom-parcel](https://www.npmjs.com/package/react-server-dom-parcel)
+* [react-server-dom-turbopack](https://www.npmjs.com/package/react-server-dom-turbopack?activeTab=readme)
+
+Fixes were backported to versions 19.0.4, 19.1.5, and 19.2.4. If you are using any of the above packages please upgrade to any of the fixed versions immediately.
+
+As before, if your appβs React code does not use a server, your app is not affected by these vulnerabilities. If your app does not use a framework, bundler, or bundler plugin that supports React Server Components, your app is not affected by these vulnerabilities.
+
+
+
+#### Itβs common for critical CVEs to uncover followβup vulnerabilities. {/*its-common-for-critical-cves-to-uncover-followup-vulnerabilities*/}
+
+When a critical vulnerability is disclosed, researchers scrutinize adjacent code paths looking for variant exploit techniques to test whether the initial mitigation can be bypassed.
+
+This pattern shows up across the industry, not just in JavaScript. For example, after [Log4Shell](https://nvd.nist.gov/vuln/detail/cve-2021-44228), additional CVEs ([1](https://nvd.nist.gov/vuln/detail/cve-2021-45046), [2](https://nvd.nist.gov/vuln/detail/cve-2021-45105)) were reported as the community probed the original fix.
+
+Additional disclosures can be frustrating, but they are generally a sign of a healthy response cycle.
+
+
+
+### Affected frameworks and bundlers {/*affected-frameworks-and-bundlers*/}
+
+Some React frameworks and bundlers depended on, had peer dependencies for, or included the vulnerable React packages. The following React frameworks & bundlers are affected: [next](https://www.npmjs.com/package/next), [react-router](https://www.npmjs.com/package/react-router), [waku](https://www.npmjs.com/package/waku), [@parcel/rsc](https://www.npmjs.com/package/@parcel/rsc), [@vite/rsc-plugin](https://www.npmjs.com/package/@vitejs/plugin-rsc), and [rwsdk](https://www.npmjs.com/package/rwsdk).
+
+Please see [the instructions in the previous post](/blog/2025/12/03/critical-security-vulnerability-in-react-server-components#update-instructions) for upgrade steps.
+
+### Hosting Provider Mitigations {/*hosting-provider-mitigations*/}
+
+As before, we have worked with a number of hosting providers to apply temporary mitigations.
+
+You should not depend on these to secure your app, and still update immediately.
+
+### React Native {/*react-native*/}
+
+For React Native users not using a monorepo or `react-dom`, your `react` version should be pinned in your `package.json`, and there are no additional steps needed.
+
+If you are using React Native in a monorepo, you should update _only_ the impacted packages if they are installed:
+
+- `react-server-dom-webpack`
+- `react-server-dom-parcel`
+- `react-server-dom-turbopack`
+
+This is required to mitigate the security advisories, but you do not need to update `react` and `react-dom` so this will not cause the version mismatch error in React Native.
+
+See [this issue](https://github.com/facebook/react-native/issues/54772#issuecomment-3617929832) for more information.
+
+---
+
+## High Severity: Multiple Denial of Service {/*high-severity-multiple-denial-of-service*/}
+
+**CVEs:** [CVE-2026-23864](https://www.cve.org/CVERecord?id=CVE-2026-23864)
+**Base Score:** 7.5 (High)
+**Date**: January 26, 2026
+
+Security researchers discovered additional DoS vulnerabilities still exist in React Server Components.
+
+The vulnerabilities are triggered by sending specially crafted HTTP requests to Server Function endpoints, and could lead to server crashes, out-of-memory exceptions or excessive CPU usage; depending on the vulnerable code path being exercised, the application configuration and application code.
+
+The patches published January 26th mitigate these DoS vulnerabilities.
+
+
+
+#### Additional fixes published {/*additional-fix-published*/}
+
+The original fix addressing the DoS in [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184) was incomplete.
+
+This left previous versions vulnerable. Versions 19.0.4, 19.1.5, 19.2.4 are safe.
+
+-----
+
+_Updated January 26, 2026._
+
+
+
+---
+
+## High Severity: Denial of Service {/*high-severity-denial-of-service*/}
+
+**CVEs:** [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184) and [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779)
+**Base Score:** 7.5 (High)
+
+Security researchers have discovered that a malicious HTTP request can be crafted and sent to any Server Functions endpoint that, when deserialized by React, can cause an infinite loop that hangs the server process and consumes CPU. Even if your app does not implement any React Server Function endpoints it may still be vulnerable if your app supports React Server Components.
+
+This creates a vulnerability vector where an attacker may be able to deny users from accessing the product, and potentially have a performance impact on the server environment.
+
+The patches published today mitigate by preventing the infinite loop.
+
+## Medium Severity: Source Code Exposure {/*low-severity-source-code-exposure*/}
+
+**CVE:** [CVE-2025-55183](https://www.cve.org/CVERecord?id=CVE-2025-55183)
+**Base Score**: 5.3 (Medium)
+
+A security researcher has discovered that a malicious HTTP request sent to a vulnerable Server Function may unsafely return the source code of any Server Function. Exploitation requires the existence of a Server Function which explicitly or implicitly exposes a stringified argument:
+
+```javascript
+'use server';
+
+export async function serverFunction(name) {
+ const conn = db.createConnection('SECRET KEY');
+ const user = await conn.createUser(name); // implicitly stringified, leaked in db
+
+ return {
+ id: user.id,
+ message: `Hello, ${name}!` // explicitly stringified, leaked in reply
+ }}
+```
+
+An attacker may be able to leak the following:
+
+```txt
+0:{"a":"$@1","f":"","b":"Wy43RxUKdxmr5iuBzJ1pN"}
+1:{"id":"tva1sfodwq","message":"Hello, async function(a){console.log(\"serverFunction\");let b=i.createConnection(\"SECRET KEY\");return{id:(await b.createUser(a)).id,message:`Hello, ${a}!`}}!"}
+```
+
+The patches published today prevent stringifying the Server Function source code.
+
+
+
+#### Only secrets in source code may be exposed. {/*only-secrets-in-source-code-may-be-exposed*/}
+
+Secrets hardcoded in source code may be exposed, but runtime secrets such as `process.env.SECRET` are not affected.
+
+The scope of the exposed code is limited to the code inside the Server Function, which may include other functions depending on the amount of inlining your bundler provides.
+
+Always verify against production bundles.
+
+
+
+---
+
+## Timeline {/*timeline*/}
+* **December 3rd**: Leak reported to Vercel and [Meta Bug Bounty](https://bugbounty.meta.com/) by [Andrew MacPherson](https://github.com/AndrewMohawk).
+* **December 4th**: Initial DoS reported to [Meta Bug Bounty](https://bugbounty.meta.com/) by [RyotaK](https://ryotak.net).
+* **December 6th**: Both issues confirmed by the React team, and the team began investigating.
+* **December 7th**: Initial fixes created and the React team began verifying and planning new patch.
+* **December 8th**: Affected hosting providers and open source projects notified.
+* **December 10th**: Hosting provider mitigations in place and patches verified.
+* **December 11th**: Additional DoS reported to [Meta Bug Bounty](https://bugbounty.meta.com/) by Shinsaku Nomura.
+* **December 11th**: Patches published and publicly disclosed as [CVE-2025-55183](https://www.cve.org/CVERecord?id=CVE-2025-55183) and [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184).
+* **December 11th**: Missing DoS case found internally, patched and publicly disclosed as [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779).
+* **January 26th**: Additional DoS cases found, patched, and publicly disclosed as [CVE-2026-23864](https://www.cve.org/CVERecord?id=CVE-2026-23864).
+---
+
+## Attribution {/*attribution*/}
+
+Thank you to [Andrew MacPherson (AndrewMohawk)](https://github.com/AndrewMohawk) for reporting the Source Code Exposure, [RyotaK](https://ryotak.net) from GMO Flatt Security Inc and Shinsaku Nomura of Bitforest Co., Ltd. for reporting the Denial of Service vulnerabilities. Thank you to [Mufeed VH](https://x.com/mufeedvh) from [Winfunc Research](https://winfunc.com), [Joachim Viide](https://jviide.iki.fi), [RyotaK](https://ryotak.net) from [GMO Flatt Security Inc](https://flatt.tech/en/) and Xiangwei Zhang of Tencent Security YUNDING LAB for reporting the additional DoS vulnerabilities.
diff --git a/src/content/blog/2026/02/24/the-react-foundation.md b/src/content/blog/2026/02/24/the-react-foundation.md
new file mode 100644
index 000000000..17b17b7b9
--- /dev/null
+++ b/src/content/blog/2026/02/24/the-react-foundation.md
@@ -0,0 +1,67 @@
+---
+title: "The React Foundation: A New Home for React Hosted by the Linux Foundation"
+author: Matt Carroll
+date: 2026/02/24
+description: The React Foundation has officially launched, hosted by the Linux Foundation.
+---
+
+February 24, 2026 by [Matt Carroll](https://x.com/mattcarrollcode)
+
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+The React Foundation has officially launched, hosted by the Linux Foundation.
+
+
+
+---
+
+[In October](/blog/2025/10/07/introducing-the-react-foundation), we announced our intent to form the React Foundation. Today, we're excited to share that the React Foundation has officially launched.
+
+React, React Native, and supporting projects like JSX are no longer owned by Meta β they are now owned by the React Foundation, an independent foundation hosted by the Linux Foundation. You can read more in the [Linux Foundation's press release](https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-react-foundation).
+
+### Founding Members {/*founding-members*/}
+
+The React Foundation has eight Platinum founding members: **Amazon**, **Callstack**, **Expo**, **Huawei**, **Meta**, **Microsoft**, **Software Mansion**, and **Vercel**. **Huawei** has joined since [our announcement in October](/blog/2025/10/07/introducing-the-react-foundation). The React Foundation will be governed by a board of directors composed of representatives from each member, with [Seth Webster](https://sethwebster.com/) serving as executive director.
+
+
+
+
+
+
+
+
+
+
+
+
+### New Provisional Leadership Council {/*new-provisional-leadership-council*/}
+
+React's technical governance will always be independent from the React Foundation board β React's technical direction will continue to be set by the people who contribute to and maintain React. We have formed a provisional leadership council to determine this structure. We will share an update in the coming months.
+
+### Next Steps {/*next-steps*/}
+
+There is still work to do to complete the transition. In the coming months we will be:
+
+* Finalizing the technical governance structure for React
+* Transferring repositories, websites, and other infrastructure to the React Foundation
+* Exploring programs to support the React ecosystem
+* Kicking off planning for the next React Conf
+
+We will share updates as this work progresses.
+
+### Thank You {/*thank-you*/}
+
+None of this would be possible without the thousands of contributors who have shaped React over the past decade. Thank you to our founding members, to every contributor who has opened a pull request, filed an issue, or helped someone learn React, and to the millions of developers who build with React every day. The React Foundation exists because of this community, and we're looking forward to building its future together.
diff --git a/src/content/blog/index.md b/src/content/blog/index.md
index e37631e80..2e24aaa0f 100644
--- a/src/content/blog/index.md
+++ b/src/content/blog/index.md
@@ -4,102 +4,158 @@ title: React Blog
-This blog is the official source for the updates from the React team. Anything important, including release notes or deprecation notices, will be posted here first. You can also follow the [@reactjs](https://twitter.com/reactjs) account on Twitter, but you wonβt miss anything essential if you only read this blog.
+Bu blog, React ekibinden gelen gΓΌncellemeler iΓ§in resmi kaynaktΔ±r. SΓΌrΓΌm notlarΔ± veya kullanΔ±m dΔ±ΕΔ± bΔ±rakma duyurularΔ± gibi ΓΆnemli her Εey ΓΆncelikle burada paylaΕΔ±lΔ±r.
+
+Bu blog, React ekibinden gelen gΓΌncellemeler iΓ§in resmi kaynaktΔ±r. Γnemli her Εey, sΓΌrΓΌm notlarΔ± veya kullanΔ±mdan kaldΔ±rma bildirimleri dahil, ilk olarak burada yayΔ±nlanacaktΔ±r.
+
+Bluesky'de [@react.dev](https://bsky.app/profile/react.dev) hesabΔ±nΔ± veya Twitter'da [@reactjs](https://twitter.com/reactjs) hesabΔ±nΔ± takip edebilirsiniz, ancak sadece bu blogu okuyarak hiΓ§bir ΓΆnemli Εeyi kaΓ§Δ±rmazsΔ±nΔ±z.
-
+
+
+The React Foundation has officially launched under the Linux Foundation.
+
+
+
+
+
+Security researchers have found and disclosed two additional vulnerabilities in React Server Components while attempting to exploit the patches in last weekβs critical vulnerability...
+
+
+
+
+
+There is an unauthenticated remote code execution vulnerability in React Server Components. A fix has been published in versions 19.0.1, 19.1.2, and 19.2.1. We recommend upgrading immediately.
+
+
+
+
+
+Last week we hosted React Conf 2025. In this post, we summarize the talks and announcements from the event...
+
+
+
+
-We announced an experimental release of React Compiler at React Conf 2024. We've made a lot of progress since then, and in this post we want to share what's next for React Compiler ...
+We're releasing the compiler's first stable release today, plus linting and tooling improvements to make adoption easier.
-
+
-Last week we hosted React Conf 2024, a two-day conference in Henderson, Nevada where 700+ attendees gathered in-person to discuss the latest in UI engineering. This was our first in-person conference since 2019, and we were thrilled to be able to bring the community together again ...
+Today, we're announcing our plans to create the React Foundation and a new technical governance structure ...
-
+
-In the React 19 RC Upgrade Guide, we shared step-by-step instructions for upgrading your app to React 19. In this post, we'll give an overview of the new features in React 19, and how you can adopt them ...
+React 19.2 adds new features like Activity, React Performance Tracks, useEffectEvent, and more. In this post ...
-
+
-The improvements added to React 19 require some breaking changes, but we've worked to make the upgrade as smooth as possible, and we don't expect the changes to impact most apps. In this post, we will guide you through the steps for upgrading libraries to React 19 ...
+React Labs gΓΆnderilerinde, aktif olarak araΕtΔ±rΔ±lan ve geliΕtirilen projeler hakkΔ±nda yazarΔ±z. Bu yazΔ±da, bugΓΌn denemeye hazΔ±r iki yeni deneysel ΓΆzelliΔi ve Εu anda ΓΌzerinde Γ§alΔ±ΕtΔ±ΔΔ±mΔ±z diΔer alanlarΔ± paylaΕΔ±yoruz...
-
+
-In React Labs posts, we write about projects in active research and development. Since our last update, we've made significant progress on React Compiler, new features, and React 19, and we'd like to share what we learned.
+BugΓΌn, yeni uygulamalar iΓ§in Create React App'i kullanΔ±mdan kaldΔ±rΔ±yoruz ve mevcut uygulamalarΔ± bir framework'e geΓ§meye veya Vite, Parcel veya RSBuild gibi bir derleme aracΔ±na geΓ§meye teΕvik ediyoruz. AyrΔ±ca, bir framework'ΓΌn projeniz iΓ§in uygun olmadΔ±ΔΔ±, kendi framework'ΓΌnΓΌzΓΌ oluΕturmak istediΔiniz veya React'in nasΔ±l Γ§alΔ±ΕtΔ±ΔΔ±nΔ± ΓΆΔrenmek iΓ§in sΔ±fΔ±rdan bir React uygulamasΔ± geliΕtirmek istediΔiniz durumlar iΓ§in belgeler saΔlΔ±yoruz...
-
+
-Traditionally, new React features used to only be available at Meta first, and land in the open source releases later. We'd like to offer the React community an option to adopt individual new features as soon as their design is close to final--similar to how Meta uses React internally. We are introducing a new officially supported Canary release channel. It lets curated setups like frameworks decouple adoption of individual React features from the React release schedule.
+React 19 YΓΌkseltme KΔ±lavuzu'nda, uygulamanΔ±zΔ± React 19'a yΓΌkseltmek iΓ§in adΔ±m adΔ±m talimatlarΔ± paylaΕtΔ±k. Bu yazΔ±da, React 19'daki yeni ΓΆzelliklere ve bunlarΔ± nasΔ±l benimseyebileceΔinize genel bir bakΔ±Ε sunacaΔΔ±z ...
-
+
-In React Labs posts, we write about projects in active research and development. Since our last update, we've made significant progress on React Server Components, Asset Loading, Optimizing Compiler, Offscreen Rendering, and Transition Tracing, and we'd like to share what we learned.
+React Conf 2024'te React Compiler'Δ±n deneysel bir sΓΌrΓΌmΓΌnΓΌ duyurmuΕtuk. O zamandan bu yana Γ§ok ilerleme kaydettik ve bu yazΔ±da React Compiler iΓ§in sΔ±rada ne olduΔunu paylaΕmak istiyoruz ...
+
-
+GeΓ§tiΔimiz hafta Henderson, Nevada'da iki gΓΌnlΓΌk bir konferans olan React Conf 2024'e ev sahipliΔi yaptΔ±k. 700'den fazla katΔ±lΔ±mcΔ±, kullanΔ±cΔ± arayΓΌzΓΌ mΓΌhendisliΔindeki en son geliΕmeleri tartΔ±Εmak ΓΌzere bir araya geldi. Bu, 2019'dan bu yana ilk yΓΌz yΓΌze konferansΔ±mΔ±zdΔ± ve topluluΔu tekrar bir araya getirebildiΔimiz iΓ§in Γ§ok heyecanlΔ±ydΔ±k ...
-Today we are thrilled to launch react.dev, the new home for React and its documentation. In this post, we would like to give you a tour of the new site.
+
+
+
+
+React 19'a eklenen iyileΕtirmeler bazΔ± kΔ±rΔ±lma deΔiΕiklikleri gerektiriyor, ancak yΓΌkseltmeyi olabildiΔince sorunsuz hale getirmek iΓ§in Γ§alΔ±ΕtΔ±k ve deΔiΕikliklerin Γ§oΔu uygulamayΔ± etkilemesini beklemiyoruz. Bu yazΔ±da, kΓΌtΓΌphaneleri React 19'a yΓΌkseltme adΔ±mlarΔ±nda size rehberlik edeceΔiz ...
+
+
+
+
+
+React Labs yazΔ±larΔ±nda, aktif araΕtΔ±rma ve geliΕtirme aΕamasΔ±ndaki projeler hakkΔ±nda yazΔ±yoruz. Son gΓΌncellememizden bu yana React Compiler, yeni ΓΆzellikler ve React 19 ΓΌzerinde ΓΆnemli ilerlemeler kaydettik ve ΓΆΔrendiklerimizi paylaΕmak istiyoruz.
+
+
+
+
+
+Geleneksel olarak, yeni React ΓΆzellikleri ΓΆnce sadece Meta'da kullanΔ±labilir ve daha sonra aΓ§Δ±k kaynak sΓΌrΓΌmlerinde yer alΔ±rdΔ±. React topluluΔuna, Meta'nΔ±n React'i dahili olarak kullanmasΔ±na benzer Εekilde, tasarΔ±mlarΔ± son haline yaklaΕΔ±r yaklaΕmaz bireysel yeni ΓΆzellikleri benimseme seΓ§eneΔi sunmak istiyoruz. Resmi olarak desteklenen yeni bir Canary sΓΌrΓΌm kanalΔ± sunuyoruz. Bu, framework'ler gibi kΓΌratΓΆrlΓΌ kurulumlarΔ±n bireysel React ΓΆzelliklerinin benimsenmesini React sΓΌrΓΌm programΔ±ndan ayΔ±rmasΔ±na olanak tanΔ±r.
+
+
+React Labs gΓΆnderilerinde, aktif araΕtΔ±rma ve geliΕtirme aΕamasΔ±ndaki projeler hakkΔ±nda yazΔ±yoruz. Son gΓΌncellememizden bu yana React Sunucu BileΕenleri, Asset Loading, Optimizing Compiler, Offscreen Rendering ve Transition Tracing konularΔ±nda ΓΆnemli ilerlemeler kaydettik ve ΓΆΔrendiklerimizi paylaΕmak istiyoruz.
+
+
+
+
+
+BugΓΌn React ve dokΓΌmantasyonu iΓ§in yeni bir yuva olan react.dev'i aΓ§manΔ±n heyecanΔ±nΔ± yaΕΔ±yoruz. Bu yazΔ±da size yeni siteyi gezdirmek istiyoruz.
+
+
-
-React 18 was years in the making, and with it brought valuable lessons for the React team. Its release was the result of many years of research and exploring many paths. Some of those paths were successful; many more were dead-ends that led to new insights. One lesson weβve learned is that itβs frustrating for the community to wait for new features without having insight into these paths that weβre exploring...
+
+React 18'in yapΔ±m aΕamasΔ± yΔ±llar sΓΌrdΓΌ ve React ekibi iΓ§in deΔerli dersleri de beraberinde getirdi. Piyasaya sΓΌrΓΌlmesi, uzun yΔ±llar sΓΌren araΕtΔ±rmalarΔ±n ve birΓ§ok yolun keΕfedilmesinin sonucuydu. Bu yollardan bazΔ±larΔ± baΕarΔ±lΔ±ydΔ±; birΓ§oΔu ise yeni kavrayΔ±Εlara yol aΓ§an Γ§Δ±kmaz sokaklardΔ±. ΓΔrendiΔimiz derslerden biri, keΕfetmekte olduΔumuz bu yollar hakkΔ±nda fikir sahibi olmadan yeni ΓΆzellikleri beklemenin topluluk iΓ§in sinir bozucu olduΔudur...
-
-React 18 is now available on npm! In our last post, we shared step-by-step instructions for upgrading your app to React 18. In this post, weβll give an overview of whatβs new in React 18, and what it means for the future...
+
+React 18 artΔ±k npm'de mevcut! Son yazΔ±mΔ±zda, uygulamanΔ±zΔ± React 18'e yΓΌkseltmek iΓ§in adΔ±m adΔ±m talimatlarΔ± paylaΕtΔ±k. Bu yazΔ±da, React 18'deki yeniliklere ve bunlarΔ±n gelecek iΓ§in ne anlama geldiΔine genel bir bakΔ±Ε sunacaΔΔ±z...
-
-As we shared in the release post, React 18 introduces features powered by our new concurrent renderer, with a gradual adoption strategy for existing applications. In this post, we will guide you through the steps for upgrading to React 18...
+
+SΓΌrΓΌm gΓΆnderisinde paylaΕtΔ±ΔΔ±mΔ±z gibi, React 18, mevcut uygulamalar iΓ§in kademeli bir benimseme stratejisi ile yeni eΕzamanlΔ± oluΕturucumuz tarafΔ±ndan desteklenen ΓΆzellikler sunuyor. Bu yazΔ±da, React 18'e yΓΌkseltme adΔ±mlarΔ± boyunca size rehberlik edeceΔiz...
-
-Last week we hosted our 6th React Conf. In previous years, weβve used the React Conf stage to deliver industry changing announcements such as React Native and React Hooks. This year, we shared our multi-platform vision for React, starting with the release of React 18 and gradual adoption of concurrent features...
+
+GeΓ§tiΔimiz hafta 6. React KonferansΔ±'na ev sahipliΔi yaptΔ±k. Γnceki yΔ±llarda React Conf sahnesini React Native ve React Hooks gibi sektΓΆrΓΌ deΔiΕtiren duyurular yapmak iΓ§in kullandΔ±k. Bu yΔ±l, React 18'in piyasaya sΓΌrΓΌlmesi ve eΕ zamanlΔ± ΓΆzelliklerin kademeli olarak benimsenmesiyle baΕlayarak React iΓ§in Γ§ok platformlu vizyonumuzu paylaΕtΔ±k...
-
-The React team is excited to share a few updates:
+
+React ekibi birkaΓ§ gΓΌncellemeyi paylaΕmaktan heyecan duyuyor:
-- Weβve started work on the React 18 release, which will be our next major version.
-- Weβve created a Working Group to prepare the community for gradual adoption of new features in React 18.
-- Weβve published a React 18 Alpha so that library authors can try it and provide feedback...
+- Bir sonraki major sΓΌrΓΌmΓΌmΓΌz olacak olan React 18 sΓΌrΓΌmΓΌ ΓΌzerinde Γ§alΔ±Εmaya baΕladΔ±k.
+- TopluluΔu React 18'deki yeni ΓΆzelliklerin kademeli olarak benimsenmesine hazΔ±rlamak iΓ§in bir ΓalΔ±Εma Grubu oluΕturduk.
+- KΓΌtΓΌphane yazarlarΔ±nΔ±n deneyebilmesi ve geri bildirimde bulunabilmesi iΓ§in bir React 18 Alpha yayΔ±nladΔ±k...
-
-2020 has been a long year. As it comes to an end we wanted to share a special Holiday Update on our research into zero-bundle-size React Server Components. To introduce React Server Components, we have prepared a talk and a demo. If you want, you can check them out during the holidays, or later when work picks back up in the new year...
+
+2020 uzun bir yΔ±l oldu. Sona yaklaΕΔ±rken, sΔ±fΔ±r paket boyutlu React Sunucu BileΕenlerine yΓΆnelik araΕtΔ±rmamΔ±zla ilgili ΓΆzel bir Tatil GΓΌncellemesi paylaΕmak istedik. React Sunucu BileΕenlerini tanΔ±tmak iΓ§in bir konuΕma ve bir demo hazΔ±rladΔ±k. Δ°sterseniz tatillerde ya da yeni yΔ±lda iΕler tekrar baΕladΔ±ΔΔ±nda bunlarΔ± kontrol edebilirsiniz...
---
-### All release notes {/*all-release-notes*/}
+### TΓΌm sΓΌrΓΌm notlarΔ± {/*all-release-notes*/}
-Not every React release deserves its own blog post, but you can find a detailed changelog for every release in the [`CHANGELOG.md`](https://github.com/facebook/react/blob/main/CHANGELOG.md) file in the React repository, as well as on the [Releases](https://github.com/facebook/react/releases) page.
+Her React sΓΌrΓΌmΓΌ kendi blog yazΔ±sΔ±nΔ± hak etmez, ancak React deposundaki [`CHANGELOG.md`](https://github.com/facebook/react/blob/main/CHANGELOG.md) dosyasΔ±nda ve [Releases](https://github.com/facebook/react/releases) sayfasΔ±nda her sΓΌrΓΌm iΓ§in ayrΔ±ntΔ±lΔ± bir deΔiΕiklik gΓΌnlΓΌΔΓΌ bulabilirsiniz.
---
-### Older posts {/*older-posts*/}
+### Eski gΓΆnderiler {/*older-posts*/}
-See the [older posts.](https://reactjs.org/blog/all.html)
+[Eski gΓΆnderilere](https://reactjs.org/blog/all.html) bakΔ±n.
diff --git a/src/content/community/acknowledgements.md b/src/content/community/acknowledgements.md
index 760076d83..bfe67f55a 100644
--- a/src/content/community/acknowledgements.md
+++ b/src/content/community/acknowledgements.md
@@ -36,6 +36,8 @@ We'd like to recognize a few people who have made significant contributions to R
* [Joe Critchley](https://github.com/joecritch)
* [Jeff Morrison](https://github.com/jeffmo)
* [Luna Ruan](https://github.com/lunaruan)
+* [Luna Wei](https://github.com/lunaleaps)
+* [Noah Lemen](https://github.com/noahlemen)
* [Kathryn Middleton](https://github.com/kmiddleton14)
* [Keyan Zhang](https://github.com/keyz)
* [Marco Salazar](https://github.com/salazarm)
@@ -51,9 +53,10 @@ We'd like to recognize a few people who have made significant contributions to R
* [Samuel Susla](https://github.com/sammy-SC)
* [Sander Spies](https://github.com/sanderspies)
* [Sasha Aickin](https://github.com/aickin)
-* [Sean Keegan](https://github.com/seanryankeegan)
+* [Sathya Gunasekaran](https://github.com/gsathya)
* [Sophia Shoemaker](https://github.com/mrscobbler)
* [Sunil Pai](https://github.com/threepointone)
+* [Tianyu Yao](https://github.com/)
* [Tim Yung](https://github.com/yungsters)
* [Xuan Huang](https://github.com/huxpro)
diff --git a/src/content/community/conferences.md b/src/content/community/conferences.md
index aaa761218..2e95e24ea 100644
--- a/src/content/community/conferences.md
+++ b/src/content/community/conferences.md
@@ -10,62 +10,168 @@ Do you know of a local React.js conference? Add it here! (Please keep the list c
## Upcoming Conferences {/*upcoming-conferences*/}
-### React Universe Conf 2024 {/*react-universe-conf-2024*/}
-September 5-6, 2024. WrocΕaw, Poland.
+### React Paris 2026 {/*react-paris-2026*/}
+March 26 - 27, 2026. In-person in Paris, France (hybrid event)
-[Website](https://www.reactuniverseconf.com/) - [Twitter](https://twitter.com/react_native_eu) - [LinkedIn](https://www.linkedin.com/events/reactuniverseconf7163919537074118657/)
+[Website](https://react.paris/) - [Twitter](https://x.com/BeJS_)
-### React Alicante 2024 {/*react-alicante-2024*/}
-September 19-21, 2024. Alicante, Spain.
+### CityJS London 2026 {/*cityjs-london-2026*/}
+April 14-17, 2026. In-person in London
-[Website](https://reactalicante.es/) - [Twitter](https://twitter.com/ReactAlicante) - [YouTube](https://www.youtube.com/channel/UCaSdUaITU1Cz6PvC97A7e0w)
+[Website](https://india.cityjsconf.org/) - [Twitter](https://x.com/cityjsconf) - [Bluesky](https://bsky.app/profile/cityjsconf.bsky.social)
-### RenderCon Kenya 2024 {/*rendercon-kenya-2024*/}
-October 04 - 05, 2024. Nairobi, Kenya
+### ZurichJS Conf 2026 {/*zurichjs-conf-2026*/}
+September 10-11, 2026. In-person in Zurich, Switzerland
-[Website](https://rendercon.org/) - [Twitter](https://twitter.com/renderconke) - [LinkedIn](https://www.linkedin.com/company/renderconke/) - [YouTube](https://www.youtube.com/channel/UC0bCcG8gHUL4njDOpQGcMIA)
+[Website](https://conf.zurichjs.com?utm_campaign=ZurichJS_Conf&utm_source=referral&utm_content=reactjs_community_conferences) - [Twitter](https://x.com/zurichjs) - [LinkedIn](https://www.linkedin.com/company/zurichjs/)
-### React India 2024 {/*react-india-2024*/}
-October 17 - 19, 2024. In-person in Goa, India (hybrid event) + Oct 15 2024 - remote day
+### React Conf Japan 2027 {/*react-conf-japan-2027*/}
+April 24, 2027. In-person in Tokyo, Japan
-[Website](https://www.reactindia.io) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia) - [Youtube](https://www.youtube.com/channel/UCaFbHCBkPvVv1bWs_jwYt3w)
+[Website](https://reactconf.jp/) - [Twitter](https://x.com/reactconfjp)
-### React Brussels 2024 {/*react-brussels-2024*/}
-October 18, 2024. In-person in Brussels, Belgium (hybrid event)
+## Past Conferences {/*past-conferences*/}
-[Website](https://www.react.brussels/) - [Twitter](https://x.com/BrusselsReact)
+### CityJS New Delhi 2026 {/*cityjs-newdelhi-2026*/}
+February 12-13, 2026. In-person in New Delhi, India
-### reactjsday 2024 {/*reactjsday-2024*/}
-October 25, 2024. In-person in Verona, Italy + online (hybrid event)
+[Website](https://india.cityjsconf.org/) - [Twitter](https://x.com/cityjsconf) - [Bluesky](https://bsky.app/profile/cityjsconf.bsky.social)
-[Website](https://2024.reactjsday.it/) - [Twitter](https://x.com/reactjsday) - [Facebook](https://www.facebook.com/GrUSP/) - [YouTube](https://www.youtube.com/c/grusp)
+### CityJS Singapore 2026 {/*cityjs-singapore-2026*/}
+February 4-6, 2026. In-person in Singapore
-### React Advanced London 2024 {/*react-advanced-london-2024*/}
-October 25 & 28, 2024. In-person in London, UK + online (hybrid event)
+[Website](https://india.cityjsconf.org/) - [Twitter](https://x.com/cityjsconf) - [Bluesky](https://bsky.app/profile/cityjsconf.bsky.social)
+
+### React Advanced London 2025 {/*react-advanced-london-2025*/}
+November 28 & December 1, 2025. In-person in London, UK + online (hybrid event)
[Website](https://reactadvanced.com/) - [Twitter](https://x.com/reactadvanced)
-### React Native London Conf 2024 {/*react-native-london-2024*/}
-November 14 & 15, 2024. In-person in London, UK
+### React Summit US 2025 {/*react-summit-us-2025*/}
+November 18 - 21, 2025. In-person in New York, USA + remote (hybrid event)
-[Website](https://reactnativelondon.co.uk/) - [Twitter](https://x.com/RNLConf)
+[Website](https://reactsummit.us/) - [Twitter](https://x.com/reactsummit)
-### React Summit US 2024 {/*react-summit-us-2024*/}
-November 19 & 22, 2024. In-person in New York, USA + online (hybrid event)
+### React India 2025 {/*react-india-2025*/}
+October 31 - November 01, 2025. In-person in Goa, India (hybrid event) + Oct 15 2025 - remote day
-[Website](https://reactsummit.us/) - [Twitter](https://twitter.com/reactsummit) - [Videos](https://portal.gitnation.org/)
+[Website](https://www.reactindia.io) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia) - [Youtube](https://www.youtube.com/channel/UCaFbHCBkPvVv1bWs_jwYt3w)
-### React Africa 2024 {/*react-africa-2024*/}
-November 29, 2024. In-person in Casablanca, Morocco (hybrid event)
+### React Conf 2025 {/*react-conf-2025*/}
+October 7-8, 2025. Henderson, Nevada, USA and free livestream
-[Website](https://react-africa.com/) - [Twitter](https://x.com/BeJS_)
+[Website](https://conf.react.dev/) - [Twitter](https://x.com/reactjs) - [Bluesky](https://bsky.app/profile/react.dev)
+
+### RenderCon Kenya 2025 {/*rendercon-kenya-2025*/}
+October 04, 2025. Nairobi, Kenya
+
+[Website](https://rendercon.org/) - [Twitter](https://twitter.com/renderconke) - [LinkedIn](https://www.linkedin.com/company/renderconke/) - [YouTube](https://www.youtube.com/channel/UC0bCcG8gHUL4njDOpQGcMIA)
+
+### React Alicante 2025 {/*react-alicante-2025*/}
+October 2-4, 2025. Alicante, Spain.
+
+[Website](https://reactalicante.es/) - [Twitter](https://x.com/ReactAlicante) - [Bluesky](https://bsky.app/profile/reactalicante.es) - [YouTube](https://www.youtube.com/channel/UCaSdUaITU1Cz6PvC97A7e0w)
+
+### React Universe Conf 2025 {/*react-universe-conf-2025*/}
+September 2-4, 2025. WrocΕaw, Poland.
+
+[Website](https://www.reactuniverseconf.com/) - [Twitter](https://twitter.com/react_native_eu) - [LinkedIn](https://www.linkedin.com/events/reactuniverseconf7163919537074118657/)
+
+### React Nexus 2025 {/*react-nexus-2025*/}
+July 03 - 05, 2025. In-person in Bangalore, India
+
+[Website](https://reactnexus.com/) - [Twitter](https://x.com/ReactNexus) - [Bluesky](https://bsky.app/profile/reactnexus.com) - [Linkedin](https://www.linkedin.com/company/react-nexus) - [YouTube](https://www.youtube.com/reactify_in)
+
+### React Summit 2025 {/*react-summit-2025*/}
+June 13 - 17, 2025. In-person in Amsterdam, Netherlands + remote (hybrid event)
+
+[Website](https://reactsummit.com/) - [Twitter](https://x.com/reactsummit)
+
+### React Norway 2025 {/*react-norway-2025*/}
+June 13, 2025. In-person in Oslo, Norway + remote (virtual event)
+
+[Website](https://reactnorway.com/) - [Twitter](https://x.com/ReactNorway)
+
+### CityJS Athens 2025 {/*cityjs-athens*/}
+May 27 - 31, 2025. In-person in Athens, Greece
+
+[Website](https://athens.cityjsconf.org/) - [Twitter](https://x.com/cityjsconf) - [Bluesky](https://bsky.app/profile/cityjsconf.bsky.social)
+
+### App.js Conf 2025 {/*appjs-conf-2025*/}
+May 28 - 30, 2025. In-person in KrakΓ³w, Poland + remote
+
+[Website](https://appjs.co) - [Twitter](https://twitter.com/appjsconf)
+
+### CityJS London 2025 {/*cityjs-london*/}
+April 23 - 25, 2025. In-person in London, UK
+
+[Website](https://london.cityjsconf.org/) - [Twitter](https://x.com/cityjsconf) - [Bluesky](https://bsky.app/profile/cityjsconf.bsky.social)
+
+### React Paris 2025 {/*react-paris-2025*/}
+March 20 - 21, 2025. In-person in Paris, France (hybrid event)
+
+[Website](https://react.paris/) - [Twitter](https://x.com/BeJS_) - [YouTube](https://www.youtube.com/playlist?list=PL53Z0yyYnpWitP8Zv01TSEQmKLvuRh_Dj)
+
+### React Native Connection 2025 {/*react-native-connection-2025*/}
+April 3 (Reanimated Training) + April 4 (Conference), 2025. Paris, France.
+
+[Website](https://reactnativeconnection.io/) - [X](https://x.com/reactnativeconn) - [Bluesky](https://bsky.app/profile/reactnativeconnect.bsky.social)
### React Day Berlin 2024 {/*react-day-berlin-2024*/}
December 13 & 16, 2024. In-person in Berlin, Germany + remote (hybrid event)
[Website](https://reactday.berlin/) - [Twitter](https://x.com/reactdayberlin)
-## Past Conferences {/*past-conferences*/}
+### React Africa 2024 {/*react-africa-2024*/}
+November 29, 2024. In-person in Casablanca, Morocco (hybrid event)
+
+[Website](https://react-africa.com/) - [Twitter](https://x.com/BeJS_)
+
+### React Summit US 2024 {/*react-summit-us-2024*/}
+November 19 & 22, 2024. In-person in New York, USA + online (hybrid event)
+
+[Website](https://reactsummit.us/) - [Twitter](https://twitter.com/reactsummit) - [Videos](https://portal.gitnation.org/)
+
+### React Native London Conf 2024 {/*react-native-london-2024*/}
+November 14 & 15, 2024. In-person in London, UK
+
+[Website](https://reactnativelondon.co.uk/) - [Twitter](https://x.com/RNLConf)
+
+### React Advanced London 2024 {/*react-advanced-london-2024*/}
+October 25 & 28, 2024. In-person in London, UK + online (hybrid event)
+
+[Website](https://reactadvanced.com/) - [Twitter](https://x.com/reactadvanced)
+
+### reactjsday 2024 {/*reactjsday-2024*/}
+October 25, 2024. In-person in Verona, Italy + online (hybrid event)
+
+[Website](https://2024.reactjsday.it/) - [Twitter](https://x.com/reactjsday) - [Facebook](https://www.facebook.com/GrUSP/) - [YouTube](https://www.youtube.com/c/grusp)
+
+### React Brussels 2024 {/*react-brussels-2024*/}
+October 18, 2024. In-person in Brussels, Belgium (hybrid event)
+
+[Website](https://www.react.brussels/) - [Twitter](https://x.com/BrusselsReact) - [YouTube](https://www.youtube.com/playlist?list=PL53Z0yyYnpWimQ0U75woee2zNUIFsiDC3)
+
+### React India 2024 {/*react-india-2024*/}
+October 17 - 19, 2024. In-person in Goa, India (hybrid event) + Oct 15 2024 - remote day
+
+[Website](https://www.reactindia.io) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia) - [Youtube](https://www.youtube.com/channel/UCaFbHCBkPvVv1bWs_jwYt3w)
+
+### RenderCon Kenya 2024 {/*rendercon-kenya-2024*/}
+October 04 - 05, 2024. Nairobi, Kenya
+
+[Website](https://rendercon.org/) - [Twitter](https://twitter.com/renderconke) - [LinkedIn](https://www.linkedin.com/company/renderconke/) - [YouTube](https://www.youtube.com/channel/UC0bCcG8gHUL4njDOpQGcMIA)
+
+### React Alicante 2024 {/*react-alicante-2024*/}
+September 19-21, 2024. Alicante, Spain.
+
+[Website](https://reactalicante.es/) - [Twitter](https://twitter.com/ReactAlicante) - [YouTube](https://www.youtube.com/channel/UCaSdUaITU1Cz6PvC97A7e0w)
+
+### React Universe Conf 2024 {/*react-universe-conf-2024*/}
+September 5-6, 2024. WrocΕaw, Poland.
+
+[Website](https://www.reactuniverseconf.com/) - [Twitter](https://twitter.com/react_native_eu) - [LinkedIn](https://www.linkedin.com/events/reactuniverseconf7163919537074118657/)
+
### React Rally 2024 π {/*react-rally-2024*/}
August 12-13, 2024. Park City, UT, USA
@@ -118,7 +224,7 @@ May 15 - 16, 2024. In-person in Henderson, NV, USA + remote
[Website](https://conf.react.dev) - [Twitter](https://twitter.com/reactjs)
### React Native Connection 2024 {/*react-native-connection-2024*/}
-April 23, 2024. In-person in Paris, France
+April 23, 2024. In-person in Paris, France
[Website](https://reactnativeconnection.io/) - [Twitter](https://twitter.com/ReactNativeConn)
@@ -160,7 +266,7 @@ October 20 & 23, 2023. In-person in London, UK + remote first interactivity (hyb
### React Brussels 2023 {/*react-brussels-2023*/}
October 13th 2023. In-person in Brussels, Belgium + Remote (hybrid)
-[Website](https://www.react.brussels/) - [Twitter](https://twitter.com/BrusselsReact) - [Videos](https://www.youtube.com/playlist?list=PL53Z0yyYnpWh85KeMomUoVz8_brrmh_aC)
+[Website](https://www.react.brussels/) - [Twitter](https://twitter.com/BrusselsReact) - [Videos](https://www.youtube.com/playlist?list=PL53Z0yyYnpWh85KeMomUoVz8_brrmh_aC)
### React India 2023 {/*react-india-2023*/}
October 5 - 7, 2023. In-person in Goa, India (hybrid event) + Oct 3 2023 - remote day
@@ -183,7 +289,7 @@ September 28 - 30, 2023. Alicante, Spain
[Website](https://reactalicante.es/) - [Twitter](https://twitter.com/reactalicante)
### RedwoodJS Conference 2023 {/*redwoodjs-conference-2023*/}
-September 26 - 29, 2023. Grants Pass, Oregon + remote (hybrid event)
+September 26 - 29, 2023. Grants Pass, Oregon + remote (hybrid event)
[Website](https://www.redwoodjsconf.com/) - [Twitter](https://twitter.com/redwoodjs)
diff --git a/src/content/community/docs-contributors.md b/src/content/community/docs-contributors.md
index 0f9d002d6..27b32a18f 100644
--- a/src/content/community/docs-contributors.md
+++ b/src/content/community/docs-contributors.md
@@ -11,7 +11,7 @@ React documentation is written and maintained by the [React team](/community/tea
## Content {/*content*/}
* [Rachel Nabors](https://twitter.com/RachelNabors): editing, writing, illustrating
-* [Dan Abramov](https://twitter.com/dan_abramov): writing, curriculum design
+* [Dan Abramov](https://bsky.app/profile/danabra.mov): writing, curriculum design
* [Sylwia Vargas](https://twitter.com/SylwiaVargas): example code
* [Rick Hanlon](https://twitter.com/rickhanlonii): writing
* [David McCabe](https://twitter.com/mcc_abe): writing
@@ -34,7 +34,7 @@ React documentation is written and maintained by the [React team](/community/tea
* [Jared Palmer](https://twitter.com/jaredpalmer): site development
* [ThisDotLabs](https://www.thisdot.co/) ([Dane Grant](https://twitter.com/danecando), [Dustin Goodman](https://twitter.com/dustinsgoodman)): site development
* [CodeSandbox](https://codesandbox.io/) ([Ives van Hoorne](https://twitter.com/CompuIves), [Alex Moldovan](https://twitter.com/alexnmoldovan), [Jasper De Moor](https://twitter.com/JasperDeMoor), [Danilo Woznica](https://twitter.com/danilowoz)): sandbox integration
-* [Dan Abramov](https://twitter.com/dan_abramov): site development
+* [Dan Abramov](https://bsky.app/profile/danabra.mov): site development
* [Rick Hanlon](https://twitter.com/rickhanlonii): site development
* [Harish Kumar](https://www.strek.in/): development and maintenance
* [Luna Ruan](https://twitter.com/lunaruan): sandbox improvements
diff --git a/src/content/community/index.md b/src/content/community/index.md
index 3c201c639..f3357fd98 100644
--- a/src/content/community/index.md
+++ b/src/content/community/index.md
@@ -29,4 +29,4 @@ Her topluluk, binlerce React kullanΔ±cΔ±sΔ±ndan oluΕur.
## Haberler {/*news*/}
-React ile ilgili en gΓΌncel haberler iΓ§in, [Twitter'da **@reactjs** hesabΔ±nΔ±](https://twitter.com/reactjs) ve Bu website'de bulunan [React Resmi Blogunu](/blog/) takip edin.
+React ile ilgili en gΓΌncel haberler iΓ§in, [Twitter da **@reactjs** hesabΔ±nΔ±](https://twitter.com/reactjs), [Bluesky da **@react.dev** hesabΔ±nΔ±](https://bsky.app/profile/react.dev) ve bu sitedeki [Resmi React blog'unu](/blog/) takip edebilirsiniz.
diff --git a/src/content/community/meetups.md b/src/content/community/meetups.md
index 14097aa4d..78d48093a 100644
--- a/src/content/community/meetups.md
+++ b/src/content/community/meetups.md
@@ -38,7 +38,7 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
## Canada {/*canada*/}
* [Halifax, NS](https://www.meetup.com/Halifax-ReactJS-Meetup/)
-* [Montreal, QC - React Native](https://www.meetup.com/fr-FR/React-Native-MTL/)
+* [Montreal, QC](https://guild.host/react-montreal/)
* [Vancouver, BC](https://www.meetup.com/ReactJS-Vancouver-Meetup/)
* [Ottawa, ON](https://www.meetup.com/Ottawa-ReactJS-Meetup/)
* [Saskatoon, SK](https://www.meetup.com/saskatoon-react-meetup/)
@@ -47,6 +47,9 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
## Colombia {/*colombia*/}
* [Medellin](https://www.meetup.com/React-Medellin/)
+## Czechia {/*czechia*/}
+* [Prague](https://guild.host/react-prague/)
+
## Denmark {/*denmark*/}
* [Aalborg](https://www.meetup.com/Aalborg-React-React-Native-Meetup/)
* [Aarhus](https://www.meetup.com/Aarhus-ReactJS-Meetup/)
@@ -55,8 +58,12 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
* [Manchester](https://www.meetup.com/Manchester-React-User-Group/)
* [React.JS Girls London](https://www.meetup.com/ReactJS-Girls-London/)
* [React Advanced London](https://guild.host/react-advanced-london)
+* [React Native Liverpool](https://www.meetup.com/react-native-liverpool/)
* [React Native London](https://guild.host/RNLDN)
+## Finland {/*finland*/}
+* [Helsinki](https://www.meetabit.com/communities/react-helsinki)
+
## France {/*france*/}
* [Lille](https://www.meetup.com/ReactBeerLille/)
* [Paris](https://www.meetup.com/ReactJS-Paris/)
@@ -75,13 +82,14 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
* [Thessaloniki](https://www.meetup.com/Thessaloniki-ReactJS-Meetup/)
## India {/*india*/}
-* [Ahmedabad](https://www.meetup.com/react-ahmedabad/)
+* [Ahmedabad](https://reactahmedabad.dev/)
* [Bangalore (React)](https://www.meetup.com/ReactJS-Bangalore/)
* [Bangalore (React Native)](https://www.meetup.com/React-Native-Bangalore-Meetup)
* [Chennai](https://www.linkedin.com/company/chennaireact)
* [Delhi NCR](https://www.meetup.com/React-Delhi-NCR/)
* [Mumbai](https://reactmumbai.dev)
* [Pune](https://www.meetup.com/ReactJS-and-Friends/)
+* [Rajasthan](https://reactrajasthan.com)
## Indonesia {/*indonesia*/}
* [Indonesia](https://www.meetup.com/reactindonesia/)
@@ -131,11 +139,14 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
* [Lisbon](https://www.meetup.com/JavaScript-Lisbon/)
## Scotland (UK) {/*scotland-uk*/}
-* [Edinburgh](https://www.meetup.com/React-Scotland/)
+* [Edinburgh](https://www.meetup.com/react-edinburgh/)
## Spain {/*spain*/}
* [Barcelona](https://www.meetup.com/ReactJS-Barcelona/)
+## Sri Lanka {/*sri-lanka*/}
+* [Colombo](https://www.javascriptcolombo.com/)
+
## Sweden {/*sweden*/}
* [Goteborg](https://www.meetup.com/ReactJS-Goteborg/)
* [Stockholm](https://www.meetup.com/Stockholm-ReactJS-Meetup/)
@@ -160,6 +171,7 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
* [Cleveland, OH - ReactJS](https://www.meetup.com/Cleveland-React/)
* [Columbus, OH - ReactJS](https://www.meetup.com/ReactJS-Columbus-meetup/)
* [Dallas, TX - ReactJS](https://www.meetup.com/ReactDallas/)
+* [Denver, CO - React Denver](https://reactdenver.com/)
* [Detroit, MI - Detroit React User Group](https://www.meetup.com/Detroit-React-User-Group/)
* [Indianapolis, IN - React.Indy](https://www.meetup.com/React-Indy)
* [Irvine, CA - ReactJS](https://www.meetup.com/ReactJS-OC/)
diff --git a/src/content/community/team.md b/src/content/community/team.md
index b11925407..da4ce0791 100644
--- a/src/content/community/team.md
+++ b/src/content/community/team.md
@@ -22,10 +22,14 @@ Current members of the React team are listed in alphabetical order below.
Dan got into programming after he accidentally discovered Visual Basic inside Microsoft PowerPoint. He has found his true calling in turning [Sebastian](#sebastian-markbΓ₯ge)'s tweets into long-form blog posts. Dan occasionally wins at Fortnite by hiding in a bush until the game ends.
-
+
Eli got into programming after he got suspended from middle school for hacking. He has been working on React and React Native since 2017. He enjoys eating treats, especially ice cream and apple pie. You can find Eli trying quirky activities like parkour, indoor skydiving, and aerial silks.
+
+ Hendrikβs journey in tech started in the late 90s when he built his first websites with Netscape Communicator. After earning a diploma in computer science and working at digital agencies, he built a React Server Components bundler and library, paving the way to his role on the Next.js team. Outside of work, he enjoys cycling and tinkering in his workshop.
+
+
Shortly after being introduced to AutoHotkey, Jack had written scripts to automate everything he could think of. When reaching limitations there, he dove headfirst into web app development and hasn't looked back. Most recently, Jack worked on the web platform at Instagram before moving to React. His favorite programming language is JSX.
@@ -38,28 +42,32 @@ Current members of the React team are listed in alphabetical order below.
Joe was planning to major in math and philosophy but got into computer science after writing physics simulations in Matlab. Prior to React, he worked on Relay, RSocket.js, and the Skip programming language. While heβs not building some sort of reactive system he enjoys running, studying Japanese, and spending time with his family.
+
+ Jordan started coding by building iPhone apps, where he was pushing and popping view controllers before he knew that for-loops were a thing. He enjoys working on technology that developers love, which naturally drew him to React. Outside of work he enjoys reading, kiteboarding, and playing guitar.
+
+
Josh majored in Mathematics and discovered programming while in college. His first professional developer job was to program insurance rate calculations in Microsoft Excel, the paragon of Reactive Programming which must be why he now works on React. In between that time Josh has been an IC, Manager, and Executive at a few startups. outside of work he likes to push his limits with cooking.
- Lauren's programming career peaked when she first discovered the `
-
-
- Luna first learnt the fundamentals of python at the age of 6 from her father. Since then, she has been unstoppable. Luna aspires to be a gen z, and the road to success is paved with environmental advocacy, urban gardening and lots of quality time with her Voo-Dooβd (as pictured).
+ Lauren's programming career peaked when she first discovered the `
Matt stumbled into coding, and since then, has become enamored with creating things in communities that canβt be created alone. Prior to React, he worked on YouTube, the Google Assistant, Fuchsia, and Google Cloud AI and Evernote. When he's not trying to make better developer tools he enjoys the mountains, jazz, and spending time with his family.
+
+ Mike went to grad school dreaming of becoming a professor but realized that he liked building things a lot more than writing grant applications. Mike joined Meta to work on Javascript infrastructure, which ultimately led him to work on the React Compiler. When not hacking on either Javascript or OCaml, Mike can often be found hiking or skiing in the Pacific Northwest.
+
+
Mofei started programming when she realized it can help her cheat in video games. She focused on operating systems in undergrad / grad school, but now finds herself happily tinkering on React. Outside of work, she enjoys debugging bouldering problems and planning her next backpacking trip(s).
-
- Noahβs interest in UI programming sparked during his education in music technology at NYU. At Meta, he's worked on internal tools, browsers, web performance, and is currently focused on React. Outside of work, Noah can be found tinkering with synthesizers or spending time with his cat.
+
+ Pieter studied building science but after failing to get a job he made himself a website and things escalated from there. At Meta, he enjoys working on performance, languages and now React. When he's not programming you can find him off-road in the mountains.
@@ -70,10 +78,6 @@ Current members of the React team are listed in alphabetical order below.
Ruslan's introduction to UI programming started when he was a kid by manually editing HTML templates for his custom gaming forums. Somehow, he ended up majoring in Computer Science. He enjoys music, games, and memes. Mostly memes.
-
- Sathya hated the Dragon Book in school but somehow ended up working on compilers all his career. When he's not compiling React components, he's either drinking coffee or eating yet another Dosa.
-
-
Sebastian majored in psychology. He's usually quiet. Even when he says something, it often doesn't make sense to the rest of us until a few months later. The correct way to pronounce his surname is "mark-boa-geh" but he settled for "mark-beige" out of pragmatism -- and that's how he approaches React.
@@ -90,10 +94,6 @@ Current members of the React team are listed in alphabetical order below.
Four days after React was released, Sophie rewrote the entirety of her then-current project to use it, which she now realizes was perhaps a bit reckless. After she became the project's #1 committer, she wondered why she wasn't getting paid by Facebook like everyone else was and joined the team officially to lead React through its adolescent years. Though she quit that job years ago, somehow she's still in the team's group chats and βproviding valueβ.
-
- Tianyuβs interest in computers started as a kid because he loves video games. So he majored in computer science and still plays childish games like League of Legends. When he is not in front of a computer, he enjoys playing with his two kittens, hiking and kayaking.
-
-
Yuzhi studied Computer Science in school. She liked the instant gratification of seeing code come to life without having to physically be in a laboratory. Now sheβs a manager in the React org. Before management, she used to work on the Relay data fetching framework. In her spare time, Yuzhi enjoys optimizing her life via gardening and home improvement projects.
diff --git a/src/content/community/translations.md b/src/content/community/translations.md
index 4c07e6a1e..fd49bd3e9 100644
--- a/src/content/community/translations.md
+++ b/src/content/community/translations.md
@@ -28,7 +28,7 @@ For the progress of each translation, see: [Is React Translated Yet?](https://tr
## How to contribute {/*how-to-contribute*/}
-You can contribute to the translation efforts!
+You can contribute to the translation efforts!
The community conducts the translation work for the React docs on each language-specific fork of react.dev. Typical translation work involves directly translating a Markdown file and creating a pull request. Click the "contribute" link above to the GitHub repository for your language, and follow the instructions there to help with the translation effort.
diff --git a/src/content/community/versioning-policy.md b/src/content/community/versioning-policy.md
index 7aa71efd2..a61d19942 100644
--- a/src/content/community/versioning-policy.md
+++ b/src/content/community/versioning-policy.md
@@ -8,7 +8,7 @@ All stable builds of React go through a high level of testing and follow semanti
-For a list of previous releases, see the [Versions](/versions) page.
+This versioning policy describes our approach to version numbers for packages such as `react` and `react-dom`. For a list of previous releases, see the [Versions](/versions) page.
## Stable releases {/*stable-releases*/}
@@ -24,7 +24,9 @@ Major releases can also contain new features, and any release can include bug fi
Minor releases are the most common type of release.
-### Breaking Changes {/*breaking-changes*/}
+We know our users continue to use old versions of React in production. If we learn of a security vulnerability in React, we release a backported fix for all major versions that are affected by the vulnerability.
+
+### Breaking changes {/*breaking-changes*/}
Breaking changes are inconvenient for everyone, so we try to minimize the number of major releases β for example, React 15 was released in April 2016 and React 16 was released in September 2017, and React 17 was released in October 2020.
diff --git a/src/content/community/videos.md b/src/content/community/videos.md
index 3fad95786..1fca60307 100644
--- a/src/content/community/videos.md
+++ b/src/content/community/videos.md
@@ -8,6 +8,75 @@ Videos dedicated to the discussion of React and the React ecosystem.
+## React Conf 2024 {/*react-conf-2024*/}
+
+At React Conf 2024, Meta CTO [Andrew "Boz" Bosworth](https://www.threads.net/@boztank) shared a welcome message to kick off the conference:
+
+
+
+### React 19 Keynote {/*react-19-keynote*/}
+
+In the Day 1 keynote, we shared vision for React starting with React 19 and the React Compiler. Watch the full keynote from [Joe Savona](https://twitter.com/en_JS), [Lauren Tan](https://twitter.com/potetotes), [Andrew Clark](https://twitter.com/acdlite), [Josh Story](https://twitter.com/joshcstory), [Sathya Gunasekaran](https://twitter.com/_gsathya), and [Mofei Zhang](https://twitter.com/zmofei):
+
+
+
+
+### React Unpacked: A Roadmap to React 19 {/*react-unpacked-a-roadmap-to-react-19*/}
+
+React 19 introduced new features including Actions, `use()`, `useOptimistic` and more. For a deep dive on using new features in React 19, see [Sam Selikoff's](https://twitter.com/samselikoff) talk:
+
+
+
+### What's New in React 19 {/*whats-new-in-react-19*/}
+
+[Lydia Hallie](https://twitter.com/lydiahallie) gave a visual deep dive of React 19's new features:
+
+
+
+### React 19 Deep Dive: Coordinating HTML {/*react-19-deep-dive-coordinating-html*/}
+
+[Josh Story](https://twitter.com/joshcstory) provided a deep dive on the document and resource streaming APIs in React 19:
+
+
+
+### React for Two Computers {/*react-for-two-computers*/}
+
+[Dan Abramov](https://bsky.app/profile/danabra.mov) imagined an alternate history where React started server-first:
+
+
+
+### Forget About Memo {/*forget-about-memo*/}
+
+[Lauren Tan](https://twitter.com/potetotes) gave a talk on using the React Compiler in practice:
+
+
+
+### React Compiler Deep Dive {/*react-compiler-deep-dive*/}
+
+[Sathya Gunasekaran](https://twitter.com/_gsathya) and [Mofei Zhang](https://twitter.com/zmofei) provided a deep dive on how the React Compiler works:
+
+
+
+### And more... {/*and-more-2024*/}
+
+**We also heard talks from the community on Server Components:**
+* [Enhancing Forms with React Server Components](https://www.youtube.com/embed/0ckOUBiuxVY&t=25280s) by [Aurora Walberg Scharff](https://twitter.com/aurorascharff)
+* [And Now You Understand React Server Components](https://www.youtube.com/embed/pOo7x8OiAec) by [Kent C. Dodds](https://twitter.com/kentcdodds)
+* [Real-time Server Components](https://www.youtube.com/embed/6sMANTHWtLM) by [Sunil Pai](https://twitter.com/threepointone)
+
+**Talks from React frameworks using new features:**
+
+* [Vanilla React](https://www.youtube.com/embed/ZcwA0xt8FlQ) by [Ryan Florence](https://twitter.com/ryanflorence)
+* [React Rhythm & Blues](https://www.youtube.com/embed/rs9X5MjvC4s) by [Lee Robinson](https://twitter.com/leeerob)
+* [RedwoodJS, now with React Server Components](https://www.youtube.com/embed/sjyY4MTECUU) by [Amy Dutton](https://twitter.com/selfteachme)
+* [Introducing Universal React Server Components in Expo Router](https://www.youtube.com/embed/djhEgxQf3Kw) by [Evan Bacon](https://twitter.com/Baconbrix)
+
+**And Q&As with the React and React Native teams:**
+- [React Q&A](https://www.youtube.com/embed/T8TZQ6k4SLE&t=27518s) hosted by [Michael Chan](https://twitter.com/chantastic)
+- [React Native Q&A](https://www.youtube.com/embed/0ckOUBiuxVY&t=27935s) hosted by [Jamon Holmgren](https://twitter.com/jamonholmgren)
+
+You can watch all of the talks at React Conf 2024 at [conf2024.react.dev](https://conf2024.react.dev/talks).
+
## React Conf 2021 {/*react-conf-2021*/}
### React 18 Keynote {/*react-18-keynote*/}
@@ -16,13 +85,13 @@ In the keynote, we shared our vision for the future of React starting with React
Watch the full keynote from [Andrew Clark](https://twitter.com/acdlite), [Juan Tejada](https://twitter.com/_jstejada), [Lauren Tan](https://twitter.com/potetotes), and [Rick Hanlon](https://twitter.com/rickhanlonii) here:
-
+
### React 18 for Application Developers {/*react-18-for-application-developers*/}
For a demo of upgrading to React 18, see [Shruti Kapoor](https://twitter.com/shrutikapoor08)βs talk here:
-
+
### Streaming Server Rendering with Suspense {/*streaming-server-rendering-with-suspense*/}
@@ -32,7 +101,7 @@ Streaming server rendering lets you generate HTML from React components on the s
For a deep dive, see [Shaundai Person](https://twitter.com/shaundai)βs talk here:
-
+
### The first React working group {/*the-first-react-working-group*/}
@@ -40,7 +109,7 @@ For React 18, we created our first Working Group to collaborate with a panel of
For an overview of this work, see [Aakansha' Doshi](https://twitter.com/aakansha1216)'s talk:
-
+
### React Developer Tooling {/*react-developer-tooling*/}
@@ -48,19 +117,19 @@ To support the new features in this release, we also announced the newly formed
For more information and a demo of new DevTools features, see [Brian Vaughn](https://twitter.com/brian_d_vaughn)βs talk:
-
+
### React without memo {/*react-without-memo*/}
Looking further into the future, [Xuan Huang (ι»η)](https://twitter.com/Huxpro) shared an update from our React Labs research into an auto-memoizing compiler. Check out this talk for more information and a demo of the compiler prototype:
-
+
### React docs keynote {/*react-docs-keynote*/}
[Rachel Nabors](https://twitter.com/rachelnabors) kicked off a section of talks about learning and designing with React with a keynote about our investment in React's new docs ([now shipped as react.dev](/blog/2023/03/16/introducing-react-dev)):
-
+
### And more... {/*and-more*/}
diff --git a/src/content/errors/index.md b/src/content/errors/index.md
index 25746d25d..d4fc3927a 100644
--- a/src/content/errors/index.md
+++ b/src/content/errors/index.md
@@ -7,4 +7,4 @@ In the minified production build of React, we avoid sending down full error mess
We highly recommend using the development build locally when debugging your app since it tracks additional debug info and provides helpful warnings about potential problems in your apps, but if you encounter an exception while using the production build, the error message will include just a link to the docs for the error.
-For an example, see: [https://react.dev/errors/149](/errors/421).
+For an example, see: [https://react.dev/errors/149](/errors/149).
diff --git a/src/content/learn/add-react-to-an-existing-project.md b/src/content/learn/add-react-to-an-existing-project.md
index e6089a74c..e7ae9099e 100644
--- a/src/content/learn/add-react-to-an-existing-project.md
+++ b/src/content/learn/add-react-to-an-existing-project.md
@@ -20,11 +20,11 @@ Diyelim ki `example.com`'da baΕka bir sunucu teknolojisi (Rails gibi) ile oluΕ
Kurulumu Εu Εekilde yapmanΔ±zΔ± ΓΆneririz:
-1. [React tabanlΔ± kΓΌtΓΌphanelerden](/learn/start-a-new-react-project) birini kullanarak **uygulamanΔ±zΔ±n React bΓΆlΓΌmΓΌnΓΌ oluΕturun**.
-2. **KΓΌtΓΌphanenizin yapΔ±landΔ±rΔ±lmasΔ±nda *base path* olarak `/some-app`'i belirtin.** (Εu Εekilde: [Next.js](https://nextjs.org/docs/api-reference/next.config.js/basepath), [Gatsby](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting/path-prefix/)).
-3. `/some-app/` altΔ±ndaki tΓΌm isteklerin React uygulamanΔ±z tarafΔ±ndan iΕlenmesi iΓ§in **sunucunuzu veya bir proxy'yi yapΔ±landΔ±rΔ±n.**
+1. UygulamanΔ±zΔ±n **React kΔ±smΔ±nΔ± build edin** ve bunu [React tabanlΔ± frameworkβlerden](/learn/creating-a-react-app) biriyle yapΔ±n.
+2. Framework konfigΓΌrasyonunuzda **`/some-app` yolunu *base path* olarak belirtin** (nasΔ±l yapΔ±lacaΔΔ± burada: [Next.js](https://nextjs.org/docs/app/api-reference/config/next-config-js/basePath), [Gatsby](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting/path-prefix/)).
+3. TΓΌm `/some-app/` altΔ±ndaki isteklerin React uygulamanΔ±z tarafΔ±ndan handle edilmesi iΓ§in **sunucunuzu veya bir proxyβyi konfigΓΌre edin**.
-Bu, uygulamanΔ±zΔ±n React bΓΆlΓΌmΓΌnΓΌn bu kΓΌtΓΌphanelerde oluΕturulmuΕ [en iyi uygulamalardan yararlanabilmesini saΔlar](/learn/start-a-new-react-project#can-i-use-react-without-a-framework).
+Bu, React uygulamanΔ±zΔ±n o frameworkβlere dahil edilmiΕ [en iyi uygulamalardan yararlanmasΔ±nΔ±](/learn/build-a-react-app-from-scratch#consider-using-a-framework) saΔlar.
BirΓ§ok React tabanlΔ± kΓΌtΓΌphaneler, ΓΆn ve arka yΓΌz geliΕtirmede kullanΔ±labilir ve React uygulamanΔ±zΔ±n sunucudan yararlanmasΔ±na izin verir. Ancak, sunucuda JavaScript Γ§alΔ±ΕtΔ±ramasanΔ±z veya istemeseniz bile aynΔ± yaklaΕΔ±mΔ± kullanabilirsiniz. Bu durumda HTML/CSS/JS dΔ±Εa aktarΔ±mΔ±nΔ± (Next.js iΓ§in [`next export` Γ§Δ±ktΔ±sΔ±](https://nextjs.org/docs/advanced-features/static-html-export), Gatsby iΓ§in varsayΔ±lan) bunun yerine `/some-app/` konumunda sunun.
@@ -45,7 +45,7 @@ ModΓΌler bir JavaScript ortamΔ±, tΓΌm kodunuzu tek bir dosyaya yazmak yerine, Re
* **UygulamanΔ±z zaten `import` ifadelerini kullanan dosyalara bΓΆlΓΌnmΓΌΕse,** mevcut kurulumunuzu kullanmayΔ± deneyin. JS kodunuza `` yazmanΔ±n bir syntax hatasΔ±na neden olup olmadΔ±ΔΔ±nΔ± kontrol edin. Bir syntax hatasΔ±na neden olursa, [JavaScript kodunuzu Babel ile dΓΆnΓΌΕtΓΌrmeniz](https://babeljs.io/setup), ve JSX kullanmak iΓ§in [Babel React ΓΆn ayarΔ±nΔ±](https://babeljs.io/docs/babel-preset-react) etkinleΕtirmeniz gerekebilir.
-* **UygulamanΔ±zΔ±n JavaScript modΓΌllerini derlemek iΓ§in mevcut bir kurulumu yoksa,** [Vite](https://vitejs.dev/) ile kurun. Vite topluluΔu, Rails, Django ve Laravel dahil olmak ΓΌzere [backend kΓΌtΓΌphaneleri ile birΓ§ok entegrasyonu](https://github.com/vitejs/awesome-vite#integrations-with-backends) sΓΌrdΓΌrΓΌr. Backend kΓΌtΓΌphaneniz listelenmemiΕse, Vite yapΔ±larΔ±nΔ± arka ucunuzla manuel olarak entegre etmek iΓ§in [bu kΔ±lavuzu izleyin](https://vitejs.dev/guide/backend-integration.html).
+* **UygulamanΔ±zΔ±n JavaScript modΓΌllerini derlemek iΓ§in mevcut bir kurulumu yoksa,** [Vite](https://vite.dev/) ile kurun. Vite topluluΔu, Rails, Django ve Laravel dahil olmak ΓΌzere [backend frameworkleriyle birΓ§ok entegrasyonu](https://github.com/vitejs/awesome-vite#integrations-with-backends) sΓΌrdΓΌrmektedir. Backend framework'ΓΌnΓΌz listelenmemiΕse, Vite derlemelerini arka ucunuzla manuel olarak entegre etmek iΓ§in [bu kΔ±lavuzu izleyin](https://vite.dev/guide/backend-integration.html).
Kurulumunuzun Γ§alΔ±ΕΔ±p Γ§alΔ±ΕmadΔ±ΔΔ±nΔ± kontrol etmek iΓ§in proje klasΓΆrΓΌnΓΌzde Εu komutu Γ§alΔ±ΕtΔ±rΔ±n:
@@ -57,12 +57,13 @@ ArdΔ±ndan, ana JavaScript dosyanΔ±zΔ±n en ΓΌstΓΌne Εu kod satΔ±rlarΔ±nΔ± ekleyi
-```html index.html hidden
+```html public/index.html hidden
My app
+
```
@@ -84,7 +85,7 @@ SayfanΔ±zΔ±n tΓΌm iΓ§eriΔi βMerhaba dΓΌnya!β ile deΔiΕtirildiyse, her Εe
-ModΓΌler bir JavaScript ortamΔ±nΔ± mevcut bir projeye ilk kez entegre etmek gΓΆzΓΌnΓΌzΓΌ korkutabilir ama buna deΔer! TakΔ±lΔ±rsanΔ±z, [topluluk kaynaklarΔ±mΔ±zΔ±](/community) ya da [Vite Chat'imizi](https://chat.vitejs.dev/) deneyin.
+ModΓΌler bir JavaScript ortamΔ±nΔ± mevcut bir projeye ilk kez entegre etmek gΓΆz korkutucu gelebilir, ancak buna deΔer! EΔer takΔ±lΔ±rsanΔ±z, [topluluk kaynaklarΔ±](/community) veya [Vite Chat](https://chat.vite.dev/) adreslerini deneyin.
@@ -119,7 +120,7 @@ Bu, [`document.getElementById`](https://developer.mozilla.org/en-US/docs/Web/API
-```html index.html
+```html public/index.html
My app
@@ -148,7 +149,7 @@ root.render();
`index.html'deki` orijinal HTML iΓ§eriΔinin nasΔ±l korunduΔuna dikkat edin, ancak kendi `NavigationBar` React bileΕeniniz artΔ±k HTML'nizden `
-BazΔ± `Item` bileΕenlerinin `isPacked` prop'unun `false` (`yanlΔ±Ε`) yerine `true` (`doΔru`) olduΔuna dikkat edin. EΔer bileΕen prop'u `isPacked={true}` ise eΕyalarΔ±n yanΔ±nda bir tik (β ) iΕareti olmalΔ±.
+BazΔ± `Item` bileΕenlerinin `isPacked` prop'unun `false` (`yanlΔ±Ε`) yerine `true` (`doΔru`) olduΔuna dikkat edin. EΔer bileΕen prop'u `isPacked={true}` ise eΕyalarΔ±n yanΔ±nda bir tik (β ) iΕareti olmalΔ±.
Bunu bir [`if`/`else` ifadesi](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else) olarak ΕΓΆyle yazabilirsiniz:
@@ -80,17 +80,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -132,17 +132,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -236,17 +236,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -290,17 +290,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -370,17 +370,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -416,17 +416,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -445,7 +445,7 @@ EΔer JavaScript diline aΕina deΔilseniz, bu yΓΆntem Γ§eΕitliliΔi ilk baΕta
* Bir JSX ifadesini koΕullu olarak bir deΔiΕkene atayabilir ve sΓΌslΓΌ parantez kullanarak ("{}") baΕka bir JSX'in iΓ§ine dahil edebilirsiniz.
* JSX'te, `{cond ? : }` ifadesi Εu anlama gelmektedir: *"eΔer `cond` varsa, ``'yΔ± render et, aksi halde ``'yi render et"*.
* JSX'te, `{cond && }` ifadesi Εu anlama gelmektedir: *"eΔer `cond` varsa, ``'yΔ± render et, aksi halde hiΓ§bir Εey render etme"*.
-* Kod tabanlarΔ±nda bu kΔ±sayollarΔ± gΓΆrmek yaygΔ±ndΔ±r, ancak kendiniz dΓΌz `if` ifadesini tercih edebilirsiniz.
+* Kod tabanlarΔ±nda bu kΔ±sayollarΔ± gΓΆrmek yaygΔ±ndΔ±r, ancak kendiniz dΓΌz `if` ifadesini tercih edebilirsiniz.
@@ -473,17 +473,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -511,17 +511,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -559,17 +559,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -603,17 +603,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
diff --git a/src/content/learn/creating-a-react-app.md b/src/content/learn/creating-a-react-app.md
new file mode 100644
index 000000000..978b9c004
--- /dev/null
+++ b/src/content/learn/creating-a-react-app.md
@@ -0,0 +1,121 @@
+---
+title: Creating a React App
+---
+
+
+
+If you want to build a new app or website with React, we recommend starting with a framework.
+
+
+
+
+If your app has constraints not well-served by existing frameworks, you prefer to build your own framework, or you just want to learn the basics of a React app, you can [build a React app from scratch](/learn/build-a-react-app-from-scratch).
+
+## Full-stack frameworks {/*full-stack-frameworks*/}
+
+
+These recommended frameworks support all the features you need to deploy and scale your app in production. They have integrated the latest React features and take advantage of Reactβs architecture.
+
+
+
+
+#### Full-stack frameworks do not require a server. {/*react-frameworks-do-not-require-a-server*/}
+
+All the frameworks on this page support client-side rendering ([CSR](https://developer.mozilla.org/en-US/docs/Glossary/CSR)), single-page apps ([SPA](https://developer.mozilla.org/en-US/docs/Glossary/SPA)), and static-site generation ([SSG](https://developer.mozilla.org/en-US/docs/Glossary/SSG)). These apps can be deployed to a [CDN](https://developer.mozilla.org/en-US/docs/Glossary/CDN) or static hosting service without a server. Additionally, these frameworks allow you to add server-side rendering on a per-route basis, when it makes sense for your use case.
+
+This allows you to start with a client-only app, and if your needs change later, you can opt-in to using server features on individual routes without rewriting your app. See your framework's documentation for configuring the rendering strategy.
+
+
+
+
+### Next.js (App Router) {/*nextjs-app-router*/}
+
+**[Next.js's App Router](https://nextjs.org/docs) is a React framework that takes full advantage of React's architecture to enable full-stack React apps.**
+
+
+npx create-next-app@latest
+
+
+Next.js is maintained by [Vercel](https://vercel.com/). You can [deploy a Next.js app](https://nextjs.org/docs/app/building-your-application/deploying) to any hosting provider that supports Node.js or Docker containers, or to your own server. Next.js also supports [static export](https://nextjs.org/docs/app/building-your-application/deploying/static-exports) which doesn't require a server.
+
+### React Router (v7) {/*react-router-v7*/}
+
+**[React Router](https://reactrouter.com/start/framework/installation) is the most popular routing library for React and can be paired with Vite to create a full-stack React framework**. It emphasizes standard Web APIs and has several [ready to deploy templates](https://github.com/remix-run/react-router-templates) for various JavaScript runtimes and platforms.
+
+To create a new React Router framework project, run:
+
+
+npx create-react-router@latest
+
+
+React Router is maintained by [Shopify](https://www.shopify.com).
+
+### Expo (for native apps) {/*expo*/}
+
+**[Expo](https://expo.dev/) is a React framework that lets you create universal Android, iOS, and web apps with truly native UIs.** It provides an SDK for [React Native](https://reactnative.dev/) that makes the native parts easier to use. To create a new Expo project, run:
+
+
+npx create-expo-app@latest
+
+
+If you're new to Expo, check out the [Expo tutorial](https://docs.expo.dev/tutorial/introduction/).
+
+Expo is maintained by [Expo (the company)](https://expo.dev/about). Building apps with Expo is free, and you can submit them to the Google and Apple app stores without restrictions. Expo additionally provides opt-in paid cloud services.
+
+
+
+## Other frameworks {/*other-frameworks*/}
+
+
+There are other up-and-coming frameworks that are working towards our full stack React vision:
+
+- [TanStack Start (Beta)](https://tanstack.com/start/): TanStack Start is a full-stack React framework powered by TanStack Router. It provides a full-document SSR, streaming, server functions, bundling, and more using tools like Nitro and Vite.
+- [RedwoodSDK](https://rwsdk.com/): Redwood is a full stack React framework with lots of pre-installed packages and configuration that makes it easy to build full-stack web applications.
+
+
+
+#### Which features make up the React teamβs full-stack architecture vision? {/*which-features-make-up-the-react-teams-full-stack-architecture-vision*/}
+
+Next.js's App Router bundler fully implements the official [React Server Components specification](https://github.com/reactjs/rfcs/blob/main/text/0188-server-components.md). This lets you mix build-time, server-only, and interactive components in a single React tree.
+
+For example, you can write a server-only React component as an `async` function that reads from a database or from a file. Then you can pass data down from it to your interactive components:
+
+```js
+// This component runs *only* on the server (or during the build).
+async function Talks({ confId }) {
+ // 1. You're on the server, so you can talk to your data layer. API endpoint not required.
+ const talks = await db.Talks.findAll({ confId });
+
+ // 2. Add any amount of rendering logic. It won't make your JavaScript bundle larger.
+ const videos = talks.map(talk => talk.video);
+
+ // 3. Pass the data down to the components that will run in the browser.
+ return ;
+}
+```
+
+Next.js's App Router also integrates [data fetching with Suspense](/blog/2022/03/29/react-v18#suspense-in-data-frameworks). This lets you specify a loading state (like a skeleton placeholder) for different parts of your user interface directly in your React tree:
+
+```js
+}>
+
+
+```
+
+Server Components and Suspense are React features rather than Next.js features. However, adopting them at the framework level requires buy-in and non-trivial implementation work. At the moment, the Next.js App Router is the most complete implementation. The React team is working with bundler developers to make these features easier to implement in the next generation of frameworks.
+
+
+
+
+## Start From Scratch {/*start-from-scratch*/}
+
+If your app has constraints not well-served by existing frameworks, you prefer to build your own framework, or you just want to learn the basics of a React app, there are other options available for starting a React project from scratch.
+
+Starting from scratch gives you more flexibility, but does require that you make choices on which tools to use for routing, data fetching, and other common usage patterns. It's a lot like building your own framework, instead of using a framework that already exists. The [frameworks we recommend](#full-stack-frameworks) have built-in solutions for these problems.
+
+If you want to build your own solutions, see our guide to [build a React app from Scratch](/learn/build-a-react-app-from-scratch) for instructions on how to set up a new React project starting with a build tool like [Vite](https://vite.dev/), [Parcel](https://parceljs.org/), or [RSbuild](https://rsbuild.dev/).
+
+
+-----
+
+_If youβre a framework author interested in being included on this page, [please let us know](https://github.com/reactjs/react.dev/issues/new?assignees=&labels=type%3A+framework&projects=&template=3-framework.yml&title=%5BFramework%5D%3A+)._
diff --git a/src/content/learn/describing-the-ui.md b/src/content/learn/describing-the-ui.md
index 7fd6fd910..7f0f8c6e7 100644
--- a/src/content/learn/describing-the-ui.md
+++ b/src/content/learn/describing-the-ui.md
@@ -18,7 +18,7 @@ React, kullanΔ±cΔ± arayΓΌzleri (UI) render etmek iΓ§in kullanΔ±lan bir JavaScrip
* [BileΕenleri koΕullu olarak nasΔ±l render edebilirim](/learn/conditional-rendering)
* [Birden Γ§ok bileΕeni aynΔ± anda nasΔ±l render edebilirim](/learn/rendering-lists)
* [BileΕenleri saf tutarak kafa karΔ±ΕΔ±klΔ±ΔΔ±na neden olan hatalardan nasΔ±l kaΓ§Δ±nΔ±lΔ±r](/learn/keeping-components-pure)
-* [KullanΔ±cΔ± arayΓΌzΓΌnΓΌzΓΌ aΔaΓ§lar olarak anlamak neden yararlΔ±dΔ±r](/learn/understanding-your-ui-as-a-tree)
+* [KullanΔ±cΔ± arayΓΌzΓΌnΓΌzΓΌ aΔaΓ§lar olarak anlamak neden yararlΔ±dΔ±r](/learn/understanding-your-ui-as-a-tree)
@@ -32,7 +32,7 @@ React uygulamalarΔ±, *bileΕenler* adΔ± verilen izole kullanΔ±cΔ± arayΓΌzΓΌ par
function Profile() {
return (
);
@@ -98,7 +98,7 @@ export default function Gallery() {
export default function Profile() {
return (
);
@@ -131,7 +131,7 @@ export default function TodoList() {
// Bu tam olarak iΕe yaramaz!
Hedy Lamarr'Δ±n YapΔ±lacaklarΔ±
@@ -160,7 +160,7 @@ export default function TodoList() {
<>
Hedy Lamarr'Δ±n YapΔ±lacaklarΔ±
@@ -207,7 +207,7 @@ export default function TodoList() {
{person.name}'nΔ±n YapΔ±lacaklasΔ±
@@ -282,7 +282,7 @@ function Card({ children }) {
```js src/utils.js
export function getImageUrl(person, size = 's') {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
size +
'.jpg'
@@ -435,7 +435,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
@@ -474,7 +474,7 @@ BileΕenlerinizi yalnΔ±zca saf fonksiyonlar olarak yazarsanΔ±z, kod tabanΔ±nΔ±z
-```js
+```js {expectedErrors: {'react-compiler': [5]}}
let guest = 0;
function Cup() {
@@ -526,9 +526,9 @@ BileΕenlerin saf, ΓΆngΓΆrΓΌlebilir fonksiyonlar olarak nasΔ±l yazΔ±lacaΔΔ±nΔ±
## ArayΓΌzΓΌnΓΌzΓΌ bir aΔaΓ§ olarak dΓΌΕΓΌnΓΌn {/*your-ui-as-a-tree*/}
-React, bileΕenler ve modΓΌller arasΔ±ndaki iliΕkileri modellemek iΓ§in aΔaΓ§larΔ± kullanΔ±r.
+React, componentβler ve moduleβler arasΔ±ndaki iliΕkileri modellemek iΓ§in treeβleri kullanΔ±r.
-React render aΔacΔ±, bileΕenler arasΔ±ndaki ΓΌst ve alt iliΕkisinin bir temsilidir.
+Bir React render tree, componentβler arasΔ±ndaki parent ve child iliΕkisinin bir temsilidir.
@@ -538,7 +538,7 @@ React render aΔacΔ±, bileΕenler arasΔ±ndaki ΓΌst ve alt iliΕkisinin bir temsi
AΔacΔ±n tepesine, kΓΆk bileΕene yakΔ±n bileΕenler ΓΌst dΓΌzey bileΕenler olarak kabul edilir. Alt elemanΔ± olmayan bileΕenler yaprak bileΕenlerdir. BileΕenlerin bu Εekilde kategorize edilmesi, veri akΔ±ΕΔ±nΔ± ve render etme performansΔ±nΔ± anlamak iΓ§in kullanΔ±ΕlΔ±dΔ±r.
-JavaScript modΓΌlleri arasΔ±ndaki iliΕkiyi modellemek, uygulamanΔ±zΔ± anlamanΔ±n bir baΕka yararlΔ± yoludur. Bunu modΓΌl baΔΔ±mlΔ±lΔ±k aΔacΔ± olarak adlandΔ±rΔ±yoruz.
+JavaScript moduleβleri arasΔ±ndaki iliΕkiyi modellemek de appβinizi anlamanΔ±n baΕka bir faydalΔ± yoludur. Buna module dependency tree diyoruz.
@@ -546,7 +546,7 @@ JavaScript modΓΌlleri arasΔ±ndaki iliΕkiyi modellemek, uygulamanΔ±zΔ± anlamanΔ±
-BaΔΔ±mlΔ±lΔ±k aΔacΔ± genellikle derleme araΓ§larΔ± tarafΔ±ndan istemcinin indirmesi ve renderlamasΔ± iΓ§in ilgili tΓΌm JavaScript kodunu paketlemek iΓ§in kullanΔ±lΔ±r. BΓΌyΓΌk bir paket boyutu, React uygulamalarΔ± iΓ§in kullanΔ±cΔ± deneyimini geriletir. ModΓΌl baΔΔ±mlΔ±lΔ±k aΔacΔ±nΔ± anlamak, bu tΓΌr sorunlarΔ± ayΔ±klamak iΓ§in yardΔ±mcΔ± olur.
+Bir dependency tree, genellikle build tools tarafΔ±ndan clientβΔ±n indirip render edebilmesi iΓ§in ilgili tΓΌm JavaScript codeβunu bundle etmek amacΔ±yla kullanΔ±lΔ±r. BΓΌyΓΌk bundle size, React appβlerinde user experienceβΔ± kΓΆtΓΌleΕtirir. Module dependency treeβyi anlamak, bu tΓΌr sorunlarΔ± debug etmek iΓ§in faydalΔ±dΔ±r.
diff --git a/src/content/learn/editor-setup.md b/src/content/learn/editor-setup.md
index 2b744197a..3b2acf2dc 100644
--- a/src/content/learn/editor-setup.md
+++ b/src/content/learn/editor-setup.md
@@ -31,9 +31,9 @@ BazΔ± dΓΌzenleyiciler bu ΓΆzelliklerle birlikte gelir, ancak diΔerleri bir ekle
### Linting {/*linting*/}
-Kod linter araΓ§larΔ± kodunuzu yazarken problemleri bulmanΔ±zΔ± ve dΓΌzeltmenizi saΔlar. [ESLint](https://eslint.org/) popΓΌler bir aΓ§Δ±k kaynak JavaScript linter aracΔ±dΔ±r.
+Code linterβlarΔ±, siz code yazarken codeβunuzdaki problemleri bulur ve bunlarΔ± erken aΕamada fix etmenize yardΔ±mcΔ± olur. [ESLint](https://eslint.org/), JavaScript iΓ§in popΓΌler, open source bir linterβdΔ±r.
-* [React iΓ§in ΓΆnerilen ESLint ayarlarΔ±nΔ± kurmak](https://www.npmjs.com/package/eslint-config-react-app) ([Node'un yΓΌklΓΌ](https://nodejs.org/en/download/current/)olduΔundan emin olun!)
+* [React iΓ§in ΓΆnerilen ESLint ayarlarΔ±nΔ± kurmak](https://www.npmjs.com/package/eslint-config-react-app) ([Node'un yΓΌklΓΌ](https://nodejs.org/en/download/current/)olduΔundan emin olun!)
* [ESLint'i, VSCode'a resmi eklenti ile entegre edin](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
** [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) kurallarΔ±nΔ± projeniz iΓ§in etkinleΕtirdiΔinizden emin olun.
diff --git a/src/content/learn/escape-hatches.md b/src/content/learn/escape-hatches.md
index ae846cb35..750a3e03e 100644
--- a/src/content/learn/escape-hatches.md
+++ b/src/content/learn/escape-hatches.md
@@ -201,7 +201,7 @@ Efekte ihtiyacΔ±nΔ±zΔ±n olmadΔ±ΔΔ± iki sΔ±k karΕΔ±laΕΔ±lan durum vardΔ±r:
ΓrneΔin, bir state'i baΕka bir state'e gΓΆre ayarlamak iΓ§in Efekte ihtiyacΔ±nΔ±z yoktur:
-```js {5-9}
+```js {expectedErrors: {'react-compiler': [8]}} {5-9}
function Form() {
const [firstName, setFirstName] = useState('Taylor');
const [lastName, setLastName] = useState('Swift');
@@ -227,7 +227,7 @@ function Form() {
}
```
-Ancak, harici sistemler ile senkronize etmek iΓ§in Efektlere ihtiyacΔ±nΔ±z vardΔ±r.
+Ancak external systemβlerle senkronize olmak iΓ§in Effectβlere *gerΓ§ekten* ihtiyacΔ±nΔ±z vardΔ±r.
@@ -312,13 +312,7 @@ React, Efektinizin baΔΔ±mlΔ±lΔ±klarΔ±nΔ± doΔru belirtip belirtmediΔinizi kont
## OlaylarΔ± Efektlerden AyΔ±rmak {/*separating-events-from-effects*/}
-
-
-Bu bΓΆlΓΌmde, React'in stabil sΓΌrΓΌmΓΌnde henΓΌz yayΔ±nlanmamΔ±Ε **deneysel bir API** aΓ§Δ±klanmaktadΔ±r.
-
-
-
-Olay yΓΆneticileri yalnΔ±zca aynΔ± etkileΕimi tekrar gerΓ§ekleΕtirdiΔinizde yeniden Γ§alΔ±ΕΔ±r. Olay yΓΆneticileri aksine, Efektler bir prop veya state deΔiΕkeni gibi okuduklarΔ± bir deΔerin son render sΔ±rasΔ±nda olduΔundan farklΔ± olmasΔ± durumunda yeniden senkronize olur. Bazen, her iki davranΔ±ΕΔ±n bir karΔ±ΕΔ±mΔ±nΔ± da istersiniz: bazΔ± deΔerlere yanΔ±t olarak yeniden Γ§alΔ±Εan ancak diΔerlerine yanΔ±t vermeyen bir Efekt.
+Event handler'lar yalnΔ±zca aynΔ± etkileΕimi tekrar gerΓ§ekleΕtirdiΔinde yeniden Γ§alΔ±ΕΔ±r. Unlike event handler'lar, Effect'ler okuduklarΔ± deΔerlerden (ΓΆrneΔin props veya state) herhangi biri son render sΔ±rasΔ±nda farklΔ±ysa yeniden senkronize olurlar. Bazen, her iki davranΔ±ΕΔ±n karΔ±ΕΔ±mΔ±nΔ± istersin: bazΔ± deΔerlere tepki olarak yeniden Γ§alΔ±Εan, ancak diΔerlerine tepki vermeyen bir Effect.
Efetkler iΓ§indeki tΓΌm kodlar *reaktiftir.* OkuduΔu bazΔ± reaktif deΔerler yeniden render edilme nedeniyle deΔiΕmiΕse tekrar Γ§alΔ±ΕacaktΔ±r. ΓrneΔin, eΔer `roomId` ya da `theme` deΔiΕirse bu Efekt sohbete tekrar baΔlanacaktΔ±r:
@@ -388,7 +382,7 @@ export default function App() {
>
);
@@ -455,8 +449,8 @@ Bu ideal deΔildir. Sohbete yalnΔ±zca `roomId` deΔiΕtiΔinde tekrar baΔlanmak
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -471,7 +465,7 @@ Bu ideal deΔildir. Sohbete yalnΔ±zca `roomId` deΔiΕtiΔinde tekrar baΔlanmak
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import { createConnection, sendMessage } from './chat.js';
import { showNotification } from './notifications.js';
@@ -521,7 +515,7 @@ export default function App() {
>
);
diff --git a/src/content/learn/importing-and-exporting-components.md b/src/content/learn/importing-and-exporting-components.md
index b1355f0e8..6688f9284 100644
--- a/src/content/learn/importing-and-exporting-components.md
+++ b/src/content/learn/importing-and-exporting-components.md
@@ -28,7 +28,7 @@ BileΕenlerin bΓΌyΓΌsΓΌ yeniden kullanΔ±labilirliklerinde yatar: diΔer bileΕen
function Profile() {
return (
);
@@ -51,11 +51,11 @@ img { margin: 0 10px 10px 0; height: 90px; }
```
-Bu ΓΆrnekte, bileΕenler `App.js` adlΔ± bir **kΓΆk bileΕen dosyasΔ±**'nΔ±n iΓ§erisinde barΔ±nmaktadΔ±r. [Create React App](https://create-react-app.dev/)'de uygulamanΔ±z `src/App.js` dosyasΔ± iΓ§inde barΔ±nmaktadΔ±r. Fakat kurulumunuza baΔlΔ± olarak kΓΆk bileΕeniniz baΕka bir dosyanΔ±n iΓ§erisinde olabilir. EΔer dosya tabanlΔ± yΓΆnlendirmesi olan bir Γ§atΔ± kullanΔ±yorsanΔ±z, kΓΆk bileΕeniniz her sayfa iΓ§in ayrΔ± olacaktΔ±r.
+Bu ΓΆrnekte, bileΕenler `App.js` adlΔ± bir **kΓΆk bileΕen dosyasΔ±**'nΔ±n iΓ§erisinde barΔ±nmaktadΔ±r. [Create React App](https://create-react-app.dev/)'de uygulamanΔ±z `src/App.js` dosyasΔ± iΓ§inde barΔ±nmaktadΔ±r. Fakat kurulumunuza baΔlΔ± olarak kΓΆk bileΕeniniz baΕka bir dosyanΔ±n iΓ§erisinde olabilir. EΔer dosya tabanlΔ± yΓΆnlendirmesi olan bir framework kullanΔ±yorsanΔ±z, kΓΆk bileΕeniniz her sayfa iΓ§in ayrΔ± olacaktΔ±r.
## BileΕenleri iΓ§e ve dΔ±Εa aktarma {/*exporting-and-importing-a-component*/}
-Bu ΓΆrnekte bileΕenler `App.js` adlΔ± bir **kΓΆk bileΕen dosyasΔ±nda** bulunmaktadΔ±r. Kurulumunuza baΔlΔ± olarak, kΓΆk bileΕeniniz (root component) baΕka bir dosyada olabilir. Next.js gibi dosya tabanlΔ± yΓΆnlendirmeye sahip bir Γ§atΔ± (framework) kullanΔ±yorsanΔ±z, kΓΆk bileΕeniniz her sayfa iΓ§in farklΔ± olacaktΔ±r.
+Bu ΓΆrnekte bileΕenler `App.js` adlΔ± bir **kΓΆk bileΕen dosyasΔ±nda** bulunmaktadΔ±r. Kurulumunuza baΔlΔ± olarak, kΓΆk bileΕeniniz (root component) baΕka bir dosyada olabilir. Next.js gibi dosya tabanlΔ± yΓΆnlendirmeye sahip bir framework kullanΔ±yorsanΔ±z, kΓΆk bileΕeniniz her sayfa iΓ§in farklΔ± olacaktΔ±r.
EΔer aΓ§Δ±lΔ±Ε ekranΔ±nΔ± deΔiΕtirmek ve bilim kitaplarΔ±nΔ±n bir listesini koymak isterseniz ne olur? Veya tΓΌm profilleri baΕka bir yere yerleΕtirmek isterseniz? Bu durumda `Galeri` ve `Profil` bileΕenlerini kΓΆk bileΕen dosyasΔ±ndan Γ§Δ±karmak mantΔ±klΔ±dΔ±r. Bu, onlarΔ±n daha modΓΌler olmasΔ±nΔ± ve diΔer dosyalarda yeniden kullanΔ±labilir olmasΔ±nΔ± saΔlayacaktΔ±r. Bir bileΕeni ΓΌΓ§ adΔ±mda taΕΔ±yabilirsiniz:
@@ -81,7 +81,7 @@ export default function App() {
function Profile() {
return (
);
@@ -109,7 +109,7 @@ Bu ΓΆrneΔin iki farklΔ± bileΕen dosyasΔ±na nasΔ±l ayrΔ±ldΔ±ΔΔ±na dikkat edini
1. `Gallery.js`:
- Sadece aynΔ± dosya iΓ§erisinde kullanΔ±lan ve dΔ±Εa aktarΔ±lmayan `Profile` bileΕenini tanΔ±mlar.
- - **VarsayΔ±lan dΔ±Εa aktarma** olarak `Gallery` bileΕenini dΔ±Εa aktarΔ±r.
+ - **VarsayΔ±lan dΔ±Εa aktarma** olarak `Gallery` bileΕenini dΔ±Εa aktarΔ±r.
2. `App.js`:
- `Gallery.js` dosyasΔ±ndan **varsayΔ±lan iΓ§e aktarma** olarak `Gallery` bileΕenini iΓ§e aktarΔ±r.
- **VarsayΔ±lan dΔ±Εa aktarma** olarak `App` bileΕenini dΔ±Εa aktarΔ±r.
@@ -119,7 +119,7 @@ Bu ΓΆrneΔin iki farklΔ± bileΕen dosyasΔ±na nasΔ±l ayrΔ±ldΔ±ΔΔ±na dikkat edini
`.js` dosya uzantΔ±sΔ±nΔ± kullanmayan dosyalarla karΕΔ±laΕabilirsiniz:
-```js
+```js
import Gallery from './Gallery';
```
@@ -199,7 +199,7 @@ export default function App() {
export function Profile() {
return (
);
@@ -238,7 +238,7 @@ ArtΔ±k varsayΔ±lan ve adlandΔ±rΔ±lmΔ±Ε dΔ±Εa aktarmalarΔ± bir arada kullanΔ±yo
Bu sayfada ΓΆΔrendikleriniz:
* KΓΆk bileΕeni nedir
-* Bir bileΕen iΓ§e ve dΔ±Εa nasΔ±l aktarΔ±lΔ±r
+* Bir bileΕen iΓ§e ve dΔ±Εa nasΔ±l aktarΔ±lΔ±r
* VarsayΔ±lan ve adlandΔ±rΔ±lmΔ±Ε iΓ§e ve dΔ±Εa aktarmalar ne zaman ve nasΔ±l kullanΔ±lmalΔ±dΔ±r
* AynΔ± dosya iΓ§erisinden birden fazla bileΕen nasΔ±l dΔ±ΕarΔ± aktarΔ±labilir
@@ -250,7 +250,7 @@ Bu sayfada ΓΆΔrendikleriniz:
#### BileΕenleri daha fazla ayΔ±rΔ±n {/*split-the-components-further*/}
-Εu anda Gallery.js, hem `Profile`'i hem de `Gallery`i dΔ±Εa aktarΔ±yor, bu biraz kafa karΔ±ΕtΔ±cΔ±.
+Εu anda Gallery.js, hem `Profile`'i hem de `Gallery`i dΔ±Εa aktarΔ±yor, bu biraz kafa karΔ±ΕtΔ±cΔ±.
`Profile` bileΕenini kendi `Profile.js` dosyasΔ±na taΕΔ±yΔ±nΔ±z, ve sonrasΔ±nda `App` bileΕenini sΔ±rasΔ±yla `` ve `` render edecek Εekilde deΔiΕtiriniz.
@@ -288,7 +288,7 @@ export default function App() {
export function Profile() {
return (
);
@@ -356,7 +356,7 @@ export default function Gallery() {
export function Profile() {
return (
);
@@ -406,7 +406,7 @@ export default function Gallery() {
export default function Profile() {
return (
);
diff --git a/src/content/learn/index.md b/src/content/learn/index.md
index 4b02a3b03..efd2cba13 100644
--- a/src/content/learn/index.md
+++ b/src/content/learn/index.md
@@ -4,7 +4,7 @@ title: HΔ±zlΔ± BaΕlangΔ±Γ§
-React dokΓΌmantasyonuna hoΕgeldiniz! Bu sayfa, gΓΌnlΓΌk hayatΔ±nΔ±zda kullanacaΔΔ±nΔ±z React konseptlerinin %80'ine bir giriΕ yapacaktΔ±r.
+React dΓΆkΓΌmantasyonuna hoΕ geldiniz! Bu sayfa, gΓΌnlΓΌk olarak kullanacaΔΔ±nΔ±z React kavramlarΔ±nΔ±n %80'ine giriΕ yapmanΔ±zΔ± saΔlayacaktΔ±r.
@@ -111,7 +111,7 @@ Daha sonra CSS kurallarΔ±nΔ± ayrΔ± bir CSS dosyasΔ±nda yazarsΔ±nΔ±z:
}
```
-React, CSS dosyalarΔ±nΔ±z nasΔ±l ekleyeceΔinizi belirtmez. En basit durumda, HTML'inize bir [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) elemanΔ± eklersiniz. Bir derleme aracΔ± veya Γ§atΔ± kullanΔ±yorsanΔ±z, projenize nasΔ±l CSS dosyasΔ± ekleyeceΔinizi ΓΆΔrenmek iΓ§in dokΓΌmantasyonlara baΕvurun.
+React, CSS dosyalarΔ±nΔ±z nasΔ±l ekleyeceΔinizi belirtmez. En basit durumda, HTML'inize bir [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) elemanΔ± eklersiniz. Bir derleme aracΔ± veya framework kullanΔ±yorsanΔ±z, projenize nasΔ±l CSS dosyasΔ± ekleyeceΔinizi ΓΆΔrenmek iΓ§in dokΓΌmantasyonlara baΕvurun.
## Veri gΓΆsterme {/*displaying-data*/}
@@ -143,7 +143,7 @@ JSX sΓΌslΓΌ parentezleri iΓ§ine daha karmaΕΔ±k ifadeler koyabilirsiniz, ΓΆrneΔ
```js
const user = {
name: 'Hedy Lamarr',
- imageUrl: 'https://i.imgur.com/yXOvdOSs.jpg',
+ imageUrl: 'https://react.dev/images/docs/scientists/yXOvdOSs.jpg',
imageSize: 90,
};
diff --git a/src/content/learn/installation.md b/src/content/learn/installation.md
index 0071db30e..7703d62df 100644
--- a/src/content/learn/installation.md
+++ b/src/content/learn/installation.md
@@ -1,55 +1,58 @@
---
-title: Kurulum
+title: Installation
---
-React, baΕtan sona aΕamalΔ± olarak benimsenmesi iΓ§in tasarlandΔ±. Reactβi ihtiyacΔ±nΔ±z kadar az veya Γ§ok kullanabilirsiniz. React'in tadΔ±na bakmak, basit bir HTML sayfasΔ±na biraz etkileΕim eklemek veya karmaΕΔ±k bir React destekli uygulamaya baΕlamak istiyorsanΔ±z, bu bΓΆlΓΌm baΕlamanΔ±za yardΔ±mcΔ± olacaktΔ±r.
+React has been designed from the start for gradual adoption. You can use as little or as much React as you need. Whether you want to get a taste of React, add some interactivity to an HTML page, or start a complex React-powered app, this section will help you get started.
-
+## Try React {/*try-react*/}
-* [Bir HTML sayfasΔ±na React nasΔ±l eklenir](/learn/add-react-to-a-website)
-* [BaΔΔ±msΔ±z bir React projesine nasΔ±l baΕlanΔ±r](/learn/start-a-new-react-project)
-* [EditΓΆrΓΌnΓΌzΓΌ nasΔ±l kurarsΔ±nΔ±z](/learn/editor-setup)
-* [React Developer Tools nasΔ±l kurulur](/learn/react-developer-tools)
-
-
-
-## React'i deneyin {/*try-react*/}
-
-React ile vakit geΓ§irmek iΓ§in herhangi bir Εey yΓΌklemeniz gerekmez. Bu Γ§evrimiΓ§i kod oyun alanΔ±nΔ± dΓΌzenlemeyi deneyin!
+You don't need to install anything to play with React. Try editing this sandbox!
```js
function Greeting({ name }) {
- return
Selam, {name}
;
+ return
Hello, {name}
;
}
export default function App() {
- return
+ return
}
```
-ΓevrimiΓ§i kod oyun alanlarΔ±nΔ± bu dokΓΌmanlarda eΔitim yardΔ±mcΔ±larΔ± olarak kullanΔ±yoruz. ΓevrimiΓ§i kod oyun alanlarΔ±, React'in nasΔ±l Γ§alΔ±ΕtΔ±ΔΔ±nΔ± anlamanΔ±za ve React'in sizin iΓ§in doΔru olup olmadΔ±ΔΔ± konusunda karar vermenize yardΔ±mcΔ± olabilir. React dokΓΌmanlarΔ±nΔ±n dΔ±ΕΔ±nda, React'i destekleyen birΓ§ok Γ§evrimiΓ§i kod oyun alan var: ΓΆrneΔin, [CodeSandbox](https://codesandbox.io/s/new), [Stackblitz](https://stackblitz.com/fork/react), veya [CodePen](https://codepen.io/pen?template=QWYVwWN).
+You can edit it directly or open it in a new tab by pressing the "Fork" button in the upper right corner.
+
+Most pages in the React documentation contain sandboxes like this. Outside of the React documentation, there are many online sandboxes that support React: for example, [CodeSandbox](https://codesandbox.io/s/new), [StackBlitz](https://stackblitz.com/fork/react), or [CodePen.](https://codepen.io/pen?template=QWYVwWN)
+
+To try React locally on your computer, [download this HTML page.](https://gist.githubusercontent.com/gaearon/0275b1e1518599bbeafcde4722e79ed1/raw/db72dcbf3384ee1708c4a07d3be79860db04bff0/example.html) Open it in your editor and in your browser!
+
+## Creating a React App {/*creating-a-react-app*/}
+
+If you want to start a new React app, you can [create a React app](/learn/creating-a-react-app) using a recommended framework.
+
+## Build a React App from Scratch {/*build-a-react-app-from-scratch*/}
+
+If a framework is not a good fit for your project, you prefer to build your own framework, or you just want to learn the basics of a React app you can [build a React app from scratch](/learn/build-a-react-app-from-scratch).
-### React'i kendi bilgisayarΔ±nΔ±zda deneyin {/*try-react-locally*/}
+## Add React to an existing project {/*add-react-to-an-existing-project*/}
-React'i bilgisayarΔ±nΔ±zda yerel olarak denemek iΓ§in, [bu HTML sayfasΔ±nΔ± indirΔ±n](https://raw.githubusercontent.com/reactjs/reactjs.org/main/static/html/single-file-example.html). EditΓΆrΓΌnΓΌzde ve tarayΔ±cΔ±nΔ±zda aΓ§Δ±n!
+If want to try using React in your existing app or a website, you can [add React to an existing project.](/learn/add-react-to-an-existing-project)
-## Bir sayfaya React ekleyin {/*add-react-to-a-page*/}
-Mevcut bir site ΓΌzerinde Γ§alΔ±ΕΔ±yorsanΔ±z ve biraz React eklemeniz gerekiyorsa, [bir script etiketi ile React ekleyebilirsiniz](/learn/add-react-to-a-website).
+
-## Bir React projesi oluΕturun {/*start-a-react-project*/}
+#### Should I use Create React App? {/*should-i-use-create-react-app*/}
-EΔer [baΔΔ±msΔ±z bir React projesine](/learn/start-a-new-react-project) baΕlamaya hazΔ±rsanΔ±z, tatlΔ± bir geliΕtirici deneyimi iΓ§in minimal bir araΓ§ zinciri kurabilirsiniz. AyrΔ±ca, halihazΔ±rda sizin iΓ§in birΓ§ok karar veren bir Γ§atΔ± ile de baΕlayabilirsiniz.
+No. Create React App has been deprecated. For more information, see [Sunsetting Create React App](/blog/2025/02/14/sunsetting-create-react-app).
-## Sonraki adΔ±mlar {/*next-steps*/}
+
-Her gΓΌn karΕΔ±laΕacaΔΔ±nΔ±z en ΓΆnmeli React konseptlerini gΓΆrmek iΓ§in [HΔ±zlΔ± BaΕlangΔ±Γ§](/learn) rehberini ziyaret edin!
+## Next steps {/*next-steps*/}
+Head to the [Quick Start](/learn) guide for a tour of the most important React concepts you will encounter every day.
\ No newline at end of file
diff --git a/src/content/learn/javascript-in-jsx-with-curly-braces.md b/src/content/learn/javascript-in-jsx-with-curly-braces.md
index 50cf92c91..a9c6bd166 100644
--- a/src/content/learn/javascript-in-jsx-with-curly-braces.md
+++ b/src/content/learn/javascript-in-jsx-with-curly-braces.md
@@ -29,7 +29,7 @@ export default function Avatar() {
return (
);
@@ -42,7 +42,7 @@ export default function Avatar() {
-Burada, `"https://i.imgur.com/7vQD0fPs.jpg"` ve `"Gregorio Y. Zara"` string olarak iletildi.
+Burada, `"https://react.dev/images/docs/scientists/7vQD0fPs.jpg"` ve `"Gregorio Y. Zara"` string olarak pass ediliyor.
Ancak `src` veya `alt` metnini dinamik olarak belirtmek isterseniz ne olur? **`" `ve` "` yerine `{ `ve` }` ile deΔiΕtirerek JavaScript'ten bir deΔer** kullanabilirsiniz:
@@ -50,7 +50,7 @@ Ancak `src` veya `alt` metnini dinamik olarak belirtmek isterseniz ne olur? **`
```js
export default function Avatar() {
- const avatar = 'https://i.imgur.com/7vQD0fPs.jpg';
+ const avatar = 'https://react.dev/images/docs/scientists/7vQD0fPs.jpg';
const description = 'Gregorio Y. Zara';
return (
{person.name}'nΔ±n YapΔ±lacaklarΔ±
@@ -267,7 +267,7 @@ export default function TodoList() {
{person}'nΔ±n YapΔ±lacaklarΔ±
@@ -288,7 +288,7 @@ body > div > div { padding: 20px; }
-Sorunu bulabilir misin ?
+Sorunu bulabilir misin ?
SΓΌslΓΌ parantezlerin iΓ§ine ne koyduΔumuza bakalΔ±m. Oraya doΔru Εeyi mi koyuyoruz?
@@ -314,7 +314,7 @@ export default function TodoList() {
{person.name}'nΔ±n YapΔ±lacaklarΔ±
@@ -358,7 +358,7 @@ export default function TodoList() {
{person.name}'nΔ±n YapΔ±lacaklarΔ±
@@ -388,7 +388,7 @@ Resim URL'ini `person.imageUrl` adlΔ± bir ΓΆzelliΔe taΕΔ±yΔ±n ve sΓΌslΓΌ paran
```js
const person = {
name: 'Gregorio Y. Zara',
- imageUrl: "https://i.imgur.com/7vQD0fPs.jpg",
+ imageUrl: "https://react.dev/images/docs/scientists/7vQD0fPs.jpg",
theme: {
backgroundColor: 'black',
color: 'pink'
@@ -428,7 +428,7 @@ body > div > div { padding: 20px; }
AΕaΔΔ±daki objede, tam resim URL'si dΓΆrt parΓ§aya bΓΆlΓΌnmΓΌΕtΓΌr: temel URL, `imageId`, `imageSize` ve dosya uzantΔ±sΔ±.
-Resim URL'sini bu ΓΆzellikleri bir araya getirecek Εekilde istiyoruz: temel URL (her zaman `'https://i.imgur.com/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`) ve dosya uzantΔ±sΔ± (her zaman `'.jpg'`). Ancak, `` etiketinin `srcyi belirtme biΓ§iminde bir sorun var.
+Image URLβnin Εu attributeβlarΔ± bir araya getirmesini istiyoruz: base URL (her zaman `'https://react.dev/images/docs/scientists/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`) ve file extension (her zaman `'.jpg'`). Ancak `` tagβinin `src`βyi belirtme Εeklinde bir sorun var.
Bu hatayΔ± dΓΌzeltebilir misiniz?
@@ -436,7 +436,7 @@ Bu hatayΔ± dΓΌzeltebilir misiniz?
```js
-const baseUrl = 'https://i.imgur.com/';
+const baseUrl = 'https://react.dev/images/docs/scientists/';
const person = {
name: 'Gregorio Y. Zara',
imageId: '7vQD0fP',
@@ -487,7 +487,7 @@ YaptΔ±ΔΔ±nΔ±z dΓΌzeltmenin Γ§alΔ±ΕtΔ±ΔΔ±nΔ± kontrol etmek iΓ§in `imageSize` d
```js
-const baseUrl = 'https://i.imgur.com/';
+const baseUrl = 'https://react.dev/images/docs/scientists/';
const person = {
name: 'Gregorio Y. Zara',
imageId: '7vQD0fP',
@@ -564,7 +564,7 @@ export default function TodoList() {
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
person.imageSize +
'.jpg'
diff --git a/src/content/learn/keeping-components-pure.md b/src/content/learn/keeping-components-pure.md
index 5ada39414..739536665 100644
--- a/src/content/learn/keeping-components-pure.md
+++ b/src/content/learn/keeping-components-pure.md
@@ -1,5 +1,5 @@
---
-title: BileΕenleri Saf Tutmak
+title: BileΕenleri Saf Tutmak
---
@@ -18,7 +18,7 @@ BazΔ± JavaScript fonksiyonlarΔ± *saf* olarak adlandΔ±rΔ±lΔ±r. Saf fonksiyonlar s
## SaflΔ±k: FormΓΌller olarak bileΕenler {/*purity-components-as-formulas*/}
-Bilgisayar biliminde (ve ΓΆzellikle fonksiyonel programlama dΓΌnyasΔ±nda), [saf bir fonksiyon](https://wikipedia.org/wiki/Pure_function) aΕaΔΔ±daki ΓΆzelliklere sahip fonksiyonlardΔ±r:
+Bilgisayar biliminde (ve ΓΆzellikle fonksiyonel programlama dΓΌnyasΔ±nda), [saf bir fonksiyon](https://wikipedia.org/wiki/Pure_function) aΕaΔΔ±daki ΓΆzelliklere sahip fonksiyonlardΔ±r:
* **Kendi iΕine bakar.** ΓaΔrΔ±lmadan ΓΆnce var olan herhangi bir nesneyi ve objeyi deΔiΕtirmez.
* **AynΔ± girdi, aynΔ± Γ§Δ±ktΔ±.** AynΔ± girdiler verildiΔinde, saf bir fonksiyon her zaman aynΔ± sonucu dΓΆndΓΌrmelidir.
@@ -27,13 +27,13 @@ Saf fonksiyonlarΔ±n bir ΓΆrneΔini zaten biliyor olabilirsiniz: matematikteki fo
Bu formΓΌlΓΌ ele alalΔ±m: .
-EΔer ise 'tΓΌr. Her zaman.
+EΔer ise . Her zaman.
-EΔer ise 'dΔ±r. Her zaman.
+EΔer ise . Her zaman.
-EΔer ise, y gΓΌnΓΌn zamanΔ±na veya borsanΔ±n durumuna baΔlΔ± olarak bazen ya da veya olmaz.
+EΔer ise, y gΓΌnΓΌn saatine veya borsanΔ±n durumuna baΔlΔ± olarak bazen , ya da olmaz.
-EΔer ve ise, y _her zaman_ 'dΔ±r.
+EΔer ve ise, y *her zaman* olur.
EΔer bunu bir JavaScript fonksiyonuna Γ§evirseydik, ΕΓΆyle gΓΆrΓΌnΓΌrdΓΌ:
@@ -52,7 +52,7 @@ React bu konseptin etrafΔ±nda tasarlanmΔ±ΕtΔ±r. **React yazdΔ±ΔΔ±nΔ±z her bile
```js src/App.js
function Recipe({ drinkers }) {
return (
-
+
Boil {drinkers} cups of water.
Add {drinkers} spoons of tea and {0.5 * drinkers} spoons of spice.
Add {0.5 * drinkers} cups of milk to boil and sugar to taste.
@@ -75,14 +75,15 @@ export default function App() {
-`Drinkers` parametresine `{2}` deΔerini verip, `Recipe'ye` geΓ§erseniz, `2 bardak su` iΓ§eren JSX'i dΓΆndΓΌrΓΌr. Her zaman.
+`Recipe`βye `drinkers={2}` pass ettiΔinizde, `2 cups of water` iΓ§eren JSX dΓΆndΓΌrΓΌr. Her zaman.
-`Drinkers` parametresine `{4}` deΔerini verip, `4 bardak su` iΓ§eren JSXβi dΓΆndΓΌrΓΌr. Her zaman.
+`Recipe`βye `drinkers={4}` pass ettiΔinizde, `4 bardak su` iΓ§eren JSX return eder. Her zaman.
+TΔ±pkΔ± bir math formula gibi.
TΔ±pkΔ± bir matematik formΓΌlΓΌ gibi.
-BileΕenlerinizi de bir tarif gibi dΓΌΕΓΌnebilirsiniz: bunlarΔ± takip eder ve piΕirme esnasΔ±nda yeni malzemeler eklemezseniz, her zaman aynΔ± yemeΔi yaparsΔ±nΔ±z. Bu βyemekβ, bileΕenin Reactβe [render](/learn/render-and-commit) iΓ§in saΔladΔ±ΔΔ± JSXβtir.
+BileΕenlerinizi de bir tarif gibi dΓΌΕΓΌnebilirsiniz: bunlarΔ± takip eder ve piΕirme esnasΔ±nda yeni malzemeler eklemezseniz, her zaman aynΔ± yemeΔi yaparsΔ±nΔ±z. Bu βyemekβ, bileΕenin Reactβe [render](/learn/render-and-commit) iΓ§in saΔladΔ±ΔΔ± JSXβtir.
@@ -94,7 +95,7 @@ React'in render iΕlemi her zaman saf olmalΔ±dΔ±r. BileΕenler yalnΔ±zca JSX'ler
-```js
+```js {expectedErrors: {'react-compiler': [5]}}
let guest = 0;
function Cup() {
@@ -144,7 +145,7 @@ export default function TeaSet() {
ArtΔ±k bileΕeniniz saf bir durumda, Γ§ΓΌnkΓΌ dΓΆndΓΌrdΓΌΔΓΌ JSX yalnΔ±zca `misafir` propβuna baΔlΔ±.
- Genel olarak, bileΕenlerinizin belirli bir sΔ±rada iΕlenmesiniz beklememelisiniz. 'i, 'ten ΓΆnce veya sonra Γ§aΔΔ±rmanΔ±z farketmez: Her iki formΓΌl de birbirinden baΔΔ±msΔ±z olarak Γ§ΓΆzΓΌlecektir. AynΔ± Εekilde, her bileΕen yalnΔ±zca "kendi iΓ§in dΓΌΕΓΌnmeli" ve render iΕlemi sΔ±rasΔ±nda diΔer bileΕenlerle koordine etmeye veya onlara baΔΔ±mlΔ± olmaya Γ§alΔ±ΕmamalΔ±dΔ±r. Render iΕlemi bir okul sΔ±navΔ± gibi: her bileΕen kendi JSX'ini hesaplamalΔ±dΔ±r!
+ Genel olarak, bileΕenlerinizin belirli bir sΔ±rada iΕlenmesini beklememelisiniz. 'i, 'ten ΓΆnce veya sonra Γ§aΔΔ±rmanΔ±z farketmez: Her iki formΓΌl de birbirinden baΔΔ±msΔ±z olarak Γ§ΓΆzΓΌlecektir. AynΔ± Εekilde, her bileΕen yalnΔ±zca "kendi iΓ§in dΓΌΕΓΌnmeli" ve render iΕlemi sΔ±rasΔ±nda diΔer bileΕenlerle koordine etmeye veya onlara baΔΔ±mlΔ± olmaya Γ§alΔ±ΕmamalΔ±dΔ±r. Render iΕlemi bir okul sΔ±navΔ± gibi: her bileΕen kendi JSX'ini hesaplamalΔ±dΔ±r!
@@ -176,7 +177,7 @@ function Cup({ guest }) {
}
export default function TeaGathering() {
- let cups = [];
+ const cups = [];
for (let i = 1; i <= 12; i++) {
cups.push();
}
@@ -216,18 +217,19 @@ Saf iΕlevler yazmak biraz alΔ±ΕkanlΔ±k ve disiplin gerektirir. Ama aynΔ± zaman
-* Bir bileΕen saf olmalΔ±dΔ±r, yani:
- * **Kendi iΕine bakar.** Δ°Εlemeden ΓΆnce var olan hiΓ§bir nesneyi veya deΔiΕkeni deΔiΕtirmemelidir.
- * **AynΔ± girdiler, aynΔ± Γ§Δ±ktΔ±lar.** AynΔ± girdiler verildiΔinde, bir bileΕen her zaman aynΔ± JSX'i dΓΆndΓΌrmelidir.
-* OluΕturma herhangi bir zamanda gerΓ§ekleΕebilir, bu nedenle bileΕenler birbirinin oluΕturma sΔ±rasΔ±na baΔlΔ± olmamalΔ±dΔ±r.
-* BileΕenlerinizin render iΓ§in kullandΔ±ΔΔ± girdilerin hiΓ§birini mutasyona uΔratmamalΔ±sΔ±nΔ±z. Buna props, state ve context dahildir. EkranΔ± gΓΌncellemek iΓ§in, ΓΆnceden var olan nesneleri deΔiΕtirmek yerine [state "oluΕturun".](/learn/state-a-components-memory)
-* DΓΆndΓΌrdΓΌΔΓΌnΓΌz JSX'te bileΕeninizin mantΔ±ΔΔ±nΔ± ifade etmeye Γ§alΔ±ΕΔ±n. "Bir Εeyleri deΔiΕtirmeniz" gerektiΔinde, bunu genellikle bir olay yΓΆneticilerinde yapmak isteyeceksiniz. Son Γ§are olarak, `useEffect`'i kullanabilirsiniz.
-* Saf fonksiyonlar yazmak biraz pratik gerektirir, ancak React'in paradigmasΔ±nΔ±n gΓΌcΓΌnΓΌ aΓ§Δ±Δa Γ§Δ±karΔ±r.
+* Bir component pure olmalΔ±dΔ±r, yani:
+
+ * **Kendi iΕine bakar.** Renderingβden ΓΆnce var olan hiΓ§bir objectβi veya variableβΔ± deΔiΕtirmemelidir.
+ * **AynΔ± inputβlar, aynΔ± output.** AynΔ± inputβlar verildiΔinde, bir component her zaman aynΔ± JSXβi return etmelidir.
+* Rendering herhangi bir zamanda gerΓ§ekleΕebilir, bu yΓΌzden componentβler birbirlerinin rendering sΔ±rasΔ±na baΔlΔ± olmamalΔ±dΔ±r.
+* Componentβlerinizin rendering iΓ§in kullandΔ±ΔΔ± inputβlarΔ±n hiΓ§birini mutate etmemelisiniz. Buna props, state ve context dahildir. EkranΔ± update etmek iΓ§in, ΓΆnceden var olan objectβleri mutate etmek yerine ["set" state](/learn/state-a-components-memory) kullanΔ±n.
+* Component logicβinizi return ettiΔiniz JSX iΓ§inde ifade etmeye Γ§alΔ±ΕΔ±n. "Bir Εeyleri deΔiΕtirmek" gerektiΔinde, bunu genellikle bir event handler iΓ§inde yapmak istersiniz. Son Γ§are olarak `useEffect` kullanabilirsiniz.
+* Pure function yazmak biraz pratik gerektirir, ancak Reactβin paradigmβΔ±nΔ±n gΓΌcΓΌnΓΌ ortaya Γ§Δ±karΔ±r.
-
+
#### Bozuk bir saati dΓΌzelt {/*fix-a-broken-clock*/}
@@ -246,7 +248,7 @@ Render etmek bir *hesaplamadΔ±r.*, bir Εeyler "yapmaya" Γ§alΔ±ΕmamalΔ±. AynΔ±
```js src/Clock.js active
export default function Clock({ time }) {
- let hours = time.getHours();
+ const hours = time.getHours();
if (hours >= 0 && hours <= 6) {
document.getElementById('time').className = 'night';
} else {
@@ -308,7 +310,7 @@ Bu bileΕeni, `className` deΔerini hesaplayarak ve bunu render Γ§Δ±ktΔ±sΔ±na da
```js src/Clock.js active
export default function Clock({ time }) {
- let hours = time.getHours();
+ const hours = time.getHours();
let className;
if (hours >= 0 && hours <= 6) {
className = 'night';
@@ -381,7 +383,7 @@ HatalΔ± kod `Profile.js`'in iΓ§indedir. Hepsini yukarΔ±dan aΕaΔΔ±ya okuduΔunu
-```js src/Profile.js
+```js {expectedErrors: {'react-compiler': [7]}} src/Profile.js
import Panel from './Panel.js';
import { getImageUrl } from './utils.js';
@@ -452,7 +454,7 @@ export default function App() {
```js src/utils.js hidden
export function getImageUrl(person, size = 's') {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
size +
'.jpg'
@@ -550,7 +552,7 @@ export default function App() {
```js src/utils.js hidden
export function getImageUrl(person, size = 's') {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
size +
'.jpg'
@@ -603,18 +605,18 @@ export default function StoryTray({ stories }) {
}
```
-```js src/App.js hidden
+```js {expectedErrors: {'react-compiler': [16]}} src/App.js hidden
import { useState, useEffect } from 'react';
import StoryTray from './StoryTray.js';
-let initialStories = [
+const initialStories = [
{id: 0, label: "Ankit's Story" },
{id: 1, label: "Taylor's Story" },
];
export default function App() {
- let [stories, setStories] = useState([...initialStories])
- let time = useTime();
+ const [stories, setStories] = useState([...initialStories])
+ const time = useTime();
// Δ°PUCU: Belgeleri okurken hafΔ±zanΔ±n sonsuza kadar bΓΌyΓΌmesini ΓΆnleyin.
// Burada kendi kurallarΔ±mΔ±zΔ± Γ§iΔniyoruz.
@@ -699,18 +701,18 @@ export default function StoryTray({ stories }) {
}
```
-```js src/App.js hidden
+```js {expectedErrors: {'react-compiler': [16]}} src/App.js hidden
import { useState, useEffect } from 'react';
import StoryTray from './StoryTray.js';
-let initialStories = [
+const initialStories = [
{id: 0, label: "Ankit's Story" },
{id: 1, label: "Taylor's Story" },
];
export default function App() {
- let [stories, setStories] = useState([...initialStories])
- let time = useTime();
+ const [stories, setStories] = useState([...initialStories])
+ const time = useTime();
// Δ°PUCU: Belgeleri okurken hafΔ±zanΔ±n sonsuza kadar bΓΌyΓΌmesini ΓΆnleyin.
// Burada kendi kurallarΔ±mΔ±zΔ± Γ§iΔniyoruz.
@@ -791,18 +793,18 @@ export default function StoryTray({ stories }) {
}
```
-```js src/App.js hidden
+```js {expectedErrors: {'react-compiler': [16]}} src/App.js hidden
import { useState, useEffect } from 'react';
import StoryTray from './StoryTray.js';
-let initialStories = [
+const initialStories = [
{id: 0, label: "Ankit's Story" },
{id: 1, label: "Taylor's Story" },
];
export default function App() {
- let [stories, setStories] = useState([...initialStories])
- let time = useTime();
+ const [stories, setStories] = useState([...initialStories])
+ const time = useTime();
// Δ°PUCU: Belgeleri okurken hafΔ±zanΔ±n sonsuza kadar bΓΌyΓΌmesini ΓΆnleyin.
// Burada kendi kurallarΔ±mΔ±zΔ± Γ§iΔniyoruz.
diff --git a/src/content/learn/lifecycle-of-reactive-effects.md b/src/content/learn/lifecycle-of-reactive-effects.md
index 6e7138f57..ab9d1426c 100644
--- a/src/content/learn/lifecycle-of-reactive-effects.md
+++ b/src/content/learn/lifecycle-of-reactive-effects.md
@@ -294,7 +294,7 @@ React'in `roomId` deΔiΕtikten sonra Efektinizin yeniden senkronize edilmesi ge
```js {1,3,8}
function ChatRoom({ roomId }) { // roomId ΓΆzelliΔi zaman iΓ§inde deΔiΕebilir
useEffect(() => {
- const connection = createConnection(serverUrl, roomId); // Bu Efektte roomId'yi okur
+ const connection = createConnection(serverUrl, roomId); // Bu efekt, roomId deΔerini okur
connection.connect();
return () => {
connection.disconnect();
@@ -970,7 +970,7 @@ export default function App() {
@@ -1028,7 +1028,7 @@ export default function App() {
@@ -1084,7 +1084,7 @@ export default function App() {
@@ -1132,7 +1132,7 @@ Bir linter kuralΔ±nΔ±n bastΔ±rΔ±ldΔ±ΔΔ±nΔ± gΓΆrΓΌrseniz, bastΔ±rmayΔ± kaldΔ±rΔ±
-```js
+```js {expectedErrors: {'react-compiler': [16]}}
import { useState, useEffect } from 'react';
export default function App() {
@@ -1156,7 +1156,7 @@ export default function App() {
@@ -1221,7 +1221,7 @@ export default function App() {
@@ -1280,7 +1280,7 @@ export default function App() {
@@ -1375,7 +1375,7 @@ export default function App() {
}
```
-```js src/ChatRoom.js active
+```js {expectedErrors: {'react-compiler': [8]}} src/ChatRoom.js active
import { useState, useEffect } from 'react';
export default function ChatRoom({ roomId, createConnection }) {
@@ -1712,7 +1712,7 @@ async function fetchPlanets() {
name: 'VenΓΌs'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -1736,7 +1736,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -1747,7 +1747,7 @@ async function fetchPlaces(planetId) {
name: 'Diana Chasma'
}, {
id: 'kumsong-vallis',
- name: 'KΕmsΕng Vallis'
+ name: 'KΕmsΕng Vallis'
}]);
} else if (planetId === 'mars') {
resolve([{
@@ -1880,7 +1880,7 @@ async function fetchPlanets() {
name: 'Venus'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -1904,7 +1904,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -1915,7 +1915,7 @@ async function fetchPlaces(planetId) {
name: 'Diana Chasma'
}, {
id: 'kumsong-vallis',
- name: 'KΕmsΕng Vallis'
+ name: 'KΕmsΕng Vallis'
}]);
} else if (planetId === 'mars') {
resolve([{
@@ -2043,7 +2043,7 @@ async function fetchPlanets() {
name: 'Venus'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -2067,7 +2067,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -2078,7 +2078,7 @@ async function fetchPlaces(planetId) {
name: 'Diana Chasma'
}, {
id: 'kumsong-vallis',
- name: 'KΕmsΕng Vallis'
+ name: 'KΕmsΕng Vallis'
}]);
} else if (planetId === 'mars') {
resolve([{
diff --git a/src/content/learn/managing-state.md b/src/content/learn/managing-state.md
index bccd7acb9..e4a86051d 100644
--- a/src/content/learn/managing-state.md
+++ b/src/content/learn/managing-state.md
@@ -741,9 +741,9 @@ export default function Section({ children }) {
const level = useContext(LevelContext);
return (
-
+
{children}
-
+
);
}
@@ -836,13 +836,11 @@ export function TasksProvider({ children }) {
);
return (
-
-
+
+
{children}
-
-
+
+
);
}
diff --git a/src/content/learn/manipulating-the-dom-with-refs.md b/src/content/learn/manipulating-the-dom-with-refs.md
index 9b8759a10..b32a48910 100644
--- a/src/content/learn/manipulating-the-dom-with-refs.md
+++ b/src/content/learn/manipulating-the-dom-with-refs.md
@@ -211,7 +211,7 @@ Bunun nedeni **Hook'larΔ±n bileΕeninizin sadece en ΓΌst seviyesinde Γ§aΔrΔ±lma
Bunun olasΔ± bir yolu ana elemana tek bir ref almak ve ardΔ±ndan tek tek alt elemanΔ± bulmak iΓ§in [`querySelectorAll`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) gibi DOM manipΓΌlasyon yΓΆntemlerini kullanmaktΔ±r. Ancak bu yΓΆntem tutarsΔ±zdΔ±r ve DOM yapΔ±nΔ±z deΔiΕirse iΕlevsiz hale gelebilir.
-BaΕka bir Γ§ΓΆzΓΌm **bir fonksiyonu `ref` ΓΆzelliΔine iletmektir.** Buna [`ref` callback](/reference/react-dom/components/common#ref-callback) denir. React ref'i ayarlama zamanΔ± geldiΔinde callback fonksiyonunu DOM elemanΔ± ile Γ§aΔΔ±racak ve ref'i temizleme zamanΔ± geldiΔinde `null` deΔeri ile Γ§aΔΔ±racaktΔ±r. Bu, kendi dizinizi veya [Map'inizi](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) korumanΔ±za ve indeksine veya kimliΔine gΓΆre herhangi bir ref'e eriΕmenize olanak saΔlar.
+BaΕka bir Γ§ΓΆzΓΌm, **`ref` attributeβuna bir fonksiyon geΓ§mektir.** Buna [`ref` callback](/reference/react-dom/components/common#ref-callback) denir. React, `ref` callbackβinizi ayarlama zamanΔ± geldiΔinde DOM node ile Γ§aΔΔ±rΔ±r ve temizleme zamanΔ± geldiΔinde callbackβten dΓΆnen cleanup fonksiyonunu Γ§aΔΔ±rΔ±r. Bu, kendi arrayβinizi veya bir [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) yapΔ±nΔ±zΔ± korumanΔ±za ve herhangi bir `ref`βe index veya bir tΓΌr ID ile eriΕmenize olanak tanΔ±r.
Bu ΓΆrnek uzun bir listede rastgele bir elemana kaydΔ±rmak iΓ§in bu yaklaΕΔ±mΔ± nasΔ±l kullanabileceΔimizi gΓΆsterir:
@@ -247,23 +247,23 @@ export default function CatFriends() {
@@ -273,11 +273,22 @@ export default function CatFriends() {
}
function setupCatList() {
- const catList = [];
- for (let i = 0; i < 10; i++) {
- catList.push("https://loremflickr.com/320/240/cat?lock=" + i);
+ const catCount = 10;
+ const catList = new Array(catCount)
+ for (let i = 0; i < catCount; i++) {
+ let imageUrl = '';
+ if (i < 5) {
+ imageUrl = "https://placecats.com/neo/320/240";
+ } else if (i < 8) {
+ imageUrl = "https://placecats.com/millie/320/240";
+ } else {
+ imageUrl = "https://placecats.com/bella/320/240";
+ }
+ catList[i] = {
+ id: i,
+ imageUrl,
+ };
}
-
return catList;
}
@@ -309,16 +320,6 @@ li {
}
```
-```json package.json hidden
-{
- "dependencies": {
- "react": "canary",
- "react-dom": "canary",
- "react-scripts": "^5.0.0"
- }
-}
-```
-
Bu ΓΆrnekte `itemsRef` tek bir DOM elemanΔ±nΔ± tutmaz. Bunun yerine ΓΆge kimliΔinden DOM elemanΔ±na bir [Map](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map) tutar. ([Ref'ler herhangi bir deΔeri tutabilir!](/learn/referencing-values-with-refs)) Her liste ΓΆgesindeki [`ref` callback'i](/reference/react-dom/components/common#ref-callback) Map'i gΓΌncellemeye ΓΆzen gΓΆsterir:
@@ -328,114 +329,64 @@ Bu ΓΆrnekte `itemsRef` tek bir DOM elemanΔ±nΔ± tutmaz. Bunun yerine ΓΆge kimliΔ
key={cat.id}
ref={node => {
const map = getMap();
- if (node) {
- // Add to the Map
- map.set(cat, node);
- } else {
- // Remove from the Map
- map.delete(cat);
- }
- }}
->
-```
-
-Bu daha sonra Map'ten tek tek DOM elemanlarΔ±nΔ± okumamΔ±za olanak tanΔ±r.
-
-
-
-This example shows another approach for managing the Map with a `ref` callback cleanup function.
-
-```js
-
{
- const map = getMap();
- // Add to the Map
+ // Haritaya ekle
map.set(cat, node);
return () => {
- // Remove from the Map
+ // Haritadan Γ§Δ±kar
map.delete(cat);
};
}}
>
```
-
+Bu, daha sonra Map'ten bireysel DOM dΓΌΔΓΌmlerini okumanΔ±zΔ± saΔlar.
+
+
+
+Strict Mode etkinleΕtirildiΔinde, ref geri Γ§aΔΔ±rma fonksiyonlarΔ± geliΕtirme aΕamasΔ±nda iki kez Γ§alΔ±ΕtΔ±rΔ±lacaktΔ±r.
+
+[Bu, geri Γ§aΔΔ±rma ref'lerinde bulunan hatalarΔ± nasΔ±l bulmaya yardΔ±mcΔ± olur](/reference/react/StrictMode#fixing-bugs-found-by-re-running-ref-callbacks-in-development) hakkΔ±nda daha fazla bilgi edinin.
+
+
## BaΕka bir bileΕenin DOM elemanlarΔ±na eriΕme {/*accessing-another-components-dom-nodes*/}
-`` gibi bir tarayΔ±cΔ± elemanΔ± Γ§Δ±ktΔ±sΔ± veren yerleΕik bir bileΕene ref koyduΔunuzda React bu ref'in `current` ΓΆzelliΔini karΕΔ±lΔ±k gelen DOM elemanΔ±na ayarlar ( tarayΔ±cΔ±daki asΔ±l `` gibi).
+
+Ref'ler bir kaΓ§Δ±Ε mekanizmasΔ±dΔ±r. BaΕka bir bileΕenin DOM dΓΌΔΓΌmlerini manuel olarak manipΓΌle etmek, kodunuzu kΔ±rΔ±lgan hale getirebilir.
+
-Ancak `` gibi **kendi** bileΕeninize ref koymaya Γ§alΔ±ΕΔ±rsanΔ±z varsayΔ±lan olarak `null` deΔeri alΔ±rsΔ±nΔ±z. Δ°Εte bunu gΓΆsteren bir ΓΆrnek. Butona tΔ±klamanΔ±n input'a nasΔ±l **odaklamadΔ±ΔΔ±na** dikkat edin:
+Ref'leri ebeveyn bileΕenden Γ§ocuk bileΕenlere [diΔer herhangi bir prop gibi](/learn/passing-props-to-a-component) geΓ§irebilirsiniz.
-
-
-```js
+```js {3-4,9}
import { useRef } from 'react';
-function MyInput(props) {
- return ;
+function MyInput({ ref }) {
+ return ;
}
-export default function MyForm() {
+function MyForm() {
const inputRef = useRef(null);
-
- function handleClick() {
- inputRef.current.focus();
- }
-
- return (
- <>
-
-
- >
- );
+ return
}
```
-
-
-Sorunu fark etmenize yardΔ±mcΔ± olmak iΓ§in React ayrΔ±ca konsola bir hata yazdΔ±rΔ±r:
-
-
-
-UyarΔ±: Fonksiyon bileΕenlerine ref verilemez. Bu ref'e eriΕme giriΕimleri baΕarΔ±sΔ±z olacaktΔ±r. React.forwardRef()'i mi kullanmak istediniz?
-
-
-
-Bunun nedeni React'in varsayΔ±lan olarak bir bileΕenin diΔer bileΕenlerin DOM elemanlarΔ±na eriΕmesine izin vermemesidir. Kendi alt elemanΔ± iΓ§in bile deΔil! Bu kasΔ±tlΔ±. Ref, az miktarda kullanΔ±lmasΔ± gereken bir kaΓ§Δ±Ε kapΔ±sΔ±dΔ±r. _another_ bileΕeninin DOM elemanlarΔ±nΔ± manuel olarak manipΓΌle etmek kodu iΕlevsiz hale getirebilir.
-
-Bunun yerine DOM elemanlarΔ±nΔ± aΓ§Δ±Δa Γ§Δ±karmak isteyen bileΕenlerin bu davranΔ±ΕΔ± **seΓ§mesi gerekir**. Bir bileΕen ref'in alt elemanlarΔ±ndan birine "forwards" belirtebilir. `MyInput`, `forwardRef` API'sini Εu Εekilde kullanabilir:
-
-```js
-const MyInput = forwardRef((props, ref) => {
- return ;
-});
-```
-
-ΓalΔ±Εma Εekli ΕΓΆyledir:
+YukarΔ±daki ΓΆrnekte, bir ref ebeveyn bileΕen olan `MyForm` iΓ§inde oluΕturulur ve Γ§ocuk bileΕen olan `MyInput`'a geΓ§irilir. `MyInput` daha sonra ref'i `` ΓΆΔesine iletir. ΓΓΌnkΓΌ ``, React'in `.current` ΓΆzelliΔini `` DOM elemanΔ±na ayarladΔ±ΔΔ± [yerleΕik bir bileΕendir](/reference/react-dom/components/common).
-1. `` React'e, karΕΔ±lΔ±k gelen DOM elemanΔ±nΔ± `inputRef.current`'a koymasΔ±nΔ± sΓΆyler. Ancak bunu seΓ§mek `MyInput` bileΕenine baΔlΔ±dΔ±r. VarsayΔ±lan olarak bunu yapmaz.
-2. `MyInput` bileΕeni `forwardRef` kullanΔ±larak tanΔ±mlanΔ±r. `props`'tan sonra bildirilen **ikinci `ref`, parametre olarak yukarΔ±dan `inputRef`'i almayΔ± seΓ§er.**
-3. `MyInput` aldΔ±ΔΔ± `ref`'i iΓ§indeki ``'a iletir.
-
-Εimdi input'a odaklamak iΓ§in butona tΔ±klamak iΕe yarar:
+`MyForm` iΓ§inde oluΕturulan `inputRef` artΔ±k `MyInput` tarafΔ±ndan dΓΆndΓΌrΓΌlen `` DOM elemanΔ±na iΕaret eder. `MyForm` iΓ§inde oluΕturulan bir tΔ±klama iΕleyicisi, `inputRef`'e eriΕebilir ve `focus()` Γ§aΔrΔ±sΔ± yaparak odaklanmayΔ± ``'a ayarlayabilir.
```js
-import { forwardRef, useRef } from 'react';
+import { useRef } from 'react';
-const MyInput = forwardRef((props, ref) => {
- return ;
-});
+function MyInput({ ref }) {
+ return ;
+}
-export default function Form() {
+export default function MyForm() {
const inputRef = useRef(null);
function handleClick() {
@@ -446,7 +397,7 @@ export default function Form() {
<>
>
);
@@ -455,24 +406,18 @@ export default function Form() {
-TasarΔ±m sistemlerinde button, input gibi dΓΌΕΓΌk seviyeli bileΕenlerin ref'leri DOM elemanlarΔ±na iletmeleri yaygΔ±n bir modeldir. Γte yandan formlar, listeler veya sayfa bΓΆlΓΌmleri gibi ΓΌst dΓΌzey bileΕenler DOM yapΔ±sΔ±na yanlΔ±ΕlΔ±kla eklenen baΔΔ±mlΔ±lΔ±klarΔ± ΓΆnlemek iΓ§in genellikle DOM elemanlarΔ±nΔ± gΓΆstermez.
-
#### Δ°mperatif bir iΕlem tanΔ±mΔ± ile API'nin bir alt kΓΌmesini aΓ§Δ±Δa Γ§Δ±karma {/*exposing-a-subset-of-the-api-with-an-imperative-handle*/}
-YukarΔ±daki ΓΆrnekte `MyInput` orijinal DOM input elemanΔ±nΔ± ortaya Γ§Δ±karΔ±r. Bu, ΓΌst bileΕenin ΓΌzerinde `focus()`'u aramasΔ±na izin verir. Ancak bu, ΓΌst bileΕenin baΕka bir Εey yapmasΔ±na da izin verir ΓΆrneΔin CSS stillerini deΔiΕtirmek. Nadir durumlarda aΓ§Δ±Δa Γ§Δ±kan iΕlevselliΔi kΔ±sΔ±tlamak isteyebilirsiniz. Bunu `useImperativeHandle` ile yapabilirsiniz:
+YukarΔ±daki ΓΆrnekte, `MyInput`'a geΓ§irilen ref, orijinal DOM input ΓΆΔesine iletilir. Bu, ebeveyn bileΕenin `focus()` Γ§aΔrΔ±sΔ± yapmasΔ±na olanak tanΔ±r. Ancak, bu aynΔ± zamanda ebeveyn bileΕenin baΕka bir Εey yapmasΔ±na da izin verir--ΓΆrneΔin, CSS stillerini deΔiΕtirmek. Nadir durumlarda, maruz kalan iΕlevselliΔi kΔ±sΔ±tlamak isteyebilirsiniz. Bunu [`useImperativeHandle`](/reference/react/useImperativeHandle) ile yapabilirsiniz:
```js
-import {
- forwardRef,
- useRef,
- useImperativeHandle
-} from 'react';
+import { useRef, useImperativeHandle } from "react";
-const MyInput = forwardRef((props, ref) => {
+function MyInput({ ref }) {
const realInputRef = useRef(null);
useImperativeHandle(ref, () => ({
// Sadece focus'u ortaya Γ§Δ±karΔ±n
@@ -480,8 +425,8 @@ const MyInput = forwardRef((props, ref) => {
realInputRef.current.focus();
},
}));
- return ;
-});
+ return ;
+};
export default function Form() {
const inputRef = useRef(null);
@@ -493,9 +438,7 @@ export default function Form() {
return (
<>
-
+
>
);
}
@@ -503,7 +446,7 @@ export default function Form() {
-Burada `MyInput` iΓ§indeki `realInputRef` asΔ±l input DOM elemanΔ±nΔ± tutar. Bununla birlikte `useImperativeHandle`, React'e ΓΌst bileΕene bir ref deΔeri olarak kendi ΓΆzel nesnenizi saΔlamasΔ±nΔ± sΓΆyler. DolayΔ±sΔ±yla `Form` bileΕeni iΓ§indeki `inputRef.current` sadece `focus` metoduna sahip olacaktΔ±r. Bu durumda "handle" ref'i DOM elemanΔ± deΔildir ancak `useImperativeHandle` Γ§aΔrΔ±sΔ± iΓ§inde oluΕturduΔunuz ΓΆzel nesnedir.
+Burada, `MyInput` iΓ§indeki `realInputRef`, gerΓ§ek input DOM dΓΌΔΓΌmΓΌnΓΌ tutar. Ancak, [`useImperativeHandle`](/reference/react/useImperativeHandle) React'e, ebeveyn bileΕene ref'in deΔeri olarak ΓΆzel bir nesne saΔlamasΔ±nΔ± sΓΆyler. BΓΆylece `Form` bileΕeni iΓ§indeki `inputRef.current` yalnΔ±zca `focus` metoduna sahip olacaktΔ±r. Bu durumda, ref "handle"'Δ± DOM dΓΌΔΓΌmΓΌ deΔil, [`useImperativeHandle`](/reference/react/useImperativeHandle) Γ§aΔrΔ±sΔ± iΓ§inde oluΕturduΔunuz ΓΆzel nesnedir.
@@ -615,7 +558,7 @@ export default function TodoList() {
const newTodo = { id: nextId++, text: text };
flushSync(() => {
setText('');
- setTodos([ ...todos, newTodo]);
+ setTodos([ ...todos, newTodo]);
});
listRef.current.lastChild.scrollIntoView({
behavior: 'smooth',
@@ -944,12 +887,30 @@ export default function CatFriends() {
);
}
-const catList = [];
-for (let i = 0; i < 10; i++) {
- catList.push({
+const catCount = 10;
+const catList = new Array(catCount);
+for (let i = 0; i < catCount; i++) {
+ const bucket = Math.floor(Math.random() * catCount) % 2;
+ let imageUrl = '';
+ switch (bucket) {
+ case 0: {
+ imageUrl = "https://placecats.com/neo/250/200";
+ break;
+ }
+ case 1: {
+ imageUrl = "https://placecats.com/millie/250/200";
+ break;
+ }
+ case 2:
+ default: {
+ imageUrl = "https://placecats.com/bella/250/200";
+ break;
+ }
+ }
+ catList[i] = {
id: i,
- imageUrl: 'https://loremflickr.com/250/200/cat?lock=' + i
- });
+ imageUrl,
+ };
}
```
@@ -1029,7 +990,7 @@ export default function CatFriends() {
behavior: 'smooth',
block: 'nearest',
inline: 'center'
- });
+ });
}}>
Next
@@ -1061,12 +1022,30 @@ export default function CatFriends() {
);
}
-const catList = [];
-for (let i = 0; i < 10; i++) {
- catList.push({
+const catCount = 10;
+const catList = new Array(catCount);
+for (let i = 0; i < catCount; i++) {
+ const bucket = Math.floor(Math.random() * catCount) % 2;
+ let imageUrl = '';
+ switch (bucket) {
+ case 0: {
+ imageUrl = "https://placecats.com/neo/250/200";
+ break;
+ }
+ case 1: {
+ imageUrl = "https://placecats.com/millie/250/200";
+ break;
+ }
+ case 2:
+ default: {
+ imageUrl = "https://placecats.com/bella/250/200";
+ break;
+ }
+ }
+ catList[i] = {
id: i,
- imageUrl: 'https://loremflickr.com/250/200/cat?lock=' + i
- });
+ imageUrl,
+ };
}
```
@@ -1117,7 +1096,7 @@ img {
-`SearchInput` gibi kendi bileΕeninizden bir DOM elemanΔ± gΓΆsterebilmek iΓ§in `forwardRef`'e ihtiyacΔ±nΔ±z olacak.
+Kendi bileΕeniniz olan `SearchInput` gibi bir bileΕenden bir DOM dΓΌΔΓΌmΓΌnΓΌ dΔ±Εa aΓ§mak iΓ§in `ref`'i bir prop olarak iletmeniz gerekecek.
@@ -1167,7 +1146,7 @@ button { display: block; margin-bottom: 10px; }
-`SearchButton`'a bir `onClick` prop'u eklemeniz ve `SearchButton` bunu tarayΔ±cΔ±ya `
);
@@ -103,7 +103,7 @@ label {
-Bunlar aΔaΓ§ olarak nasΔ±l gΓΆrΓΌnΓΌyor:
+Bunlar tree olarak ΕΓΆyle gΓΆrΓΌnΓΌr:
@@ -152,7 +152,7 @@ function Counter() {
>
{score}
setScore(score + 1)}>
- Bir ekle
+ Bir ekle
);
@@ -203,7 +203,7 @@ export default function App() {
return (
- {showB && }
+ {showB && }
@@ -659,8 +659,8 @@ export default function Picture() {
setIsActive(true)}
/>
diff --git a/src/content/learn/referencing-values-with-refs.md b/src/content/learn/referencing-values-with-refs.md
index 6eda02eab..a80306e77 100644
--- a/src/content/learn/referencing-values-with-refs.md
+++ b/src/content/learn/referencing-values-with-refs.md
@@ -12,7 +12,7 @@ Bir bileΕenin "hatΔ±rlamasΔ±nΔ±" istediΔiniz bilgi varsa, ancak bu bilginin [y
- Bir bileΕene ref nasΔ±l eklenir
- Bir ref'in deΔerini nasΔ±l gΓΌncelleyebilirsiniz
-- Ref'lerin state'ten farkΔ± nedir
+- Ref'lerin state'ten farkΔ± nedir
- Ref'leri gΓΌvenli bir Εekilde nasΔ±l kullanabilirsiniz
@@ -34,8 +34,8 @@ const ref = useRef(0);
`useRef` size aΕaΔΔ±daki gibi bir nesne dΓΆndΓΌrΓΌr:
```js
-{
- current: 0 // useRef'a geΓ§irdiΔiniz deΔer
+{
+ current: 0 // useRefβe pass ettiΔiniz value
}
```
@@ -214,7 +214,7 @@ EΔer bunu ref kullanarak yapmaya Γ§alΔ±ΕΔ±rsanΔ±z, React bileΕeni yeniden ren
-```js
+```js {expectedErrors: {'react-compiler': [13]}}
import { useRef } from 'react';
export default function Counter() {
@@ -285,7 +285,7 @@ console.log(ref.current); // 5
Bunun nedeni **ref'in kendisinin normal bir JavaScript nesnesi olmasΔ±** ve ΓΆyle davranΔ±lmasΔ±dΔ±r.
-
+
AyrΔ±ca bir ref ile Γ§alΔ±ΕΔ±rken [mutasyondan kaΓ§Δ±nmaya](/learn/updating-objects-in-state) gerek yoktur. Mutasyona uΔrayan nesne render iΕlemi iΓ§in kullanΔ±lmΔ±yorsa, React ref veya iΓ§eriΔiyle ne yaptΔ±ΔΔ±nΔ±zΔ± umursamaz.
## Ref'ler ve DOM {/*refs-and-the-dom*/}
@@ -319,7 +319,7 @@ Bir mesaj yazΔ±n ve "GΓΆnder" butonuna basΔ±n. "GΓΆnderildi!" uyarΔ±sΔ±nΔ± gΓΆrm
-```js
+```js {expectedErrors: {'react-compiler': [10]}}
import { useState } from 'react';
export default function Chat() {
@@ -424,7 +424,7 @@ Bu buton "AΓ§Δ±k" ve "KapalΔ±" arasΔ±nda geΓ§iΕ yapmalΔ±dΔ±r. Ancak her zaman "
-```js
+```js {expectedErrors: {'react-compiler': [10]}}
import { useRef } from 'react';
export default function Toggle() {
diff --git a/src/content/learn/removing-effect-dependencies.md b/src/content/learn/removing-effect-dependencies.md
index dc23eb8f9..8bbfae71b 100644
--- a/src/content/learn/removing-effect-dependencies.md
+++ b/src/content/learn/removing-effect-dependencies.md
@@ -303,7 +303,7 @@ Linteri bastΔ±rmak, bulunmasΔ± ve dΓΌzeltilmesi zor olan Γ§ok mantΔ±ksΔ±z hatala
-```js
+```js {expectedErrors: {'react-compiler': [14]}}
import { useState, useEffect } from 'react';
export default function Timer() {
@@ -352,7 +352,7 @@ Diyelim ki Efekti "sadece montajda" Γ§alΔ±ΕtΔ±rmak istediniz. [BoΕ (`[]`) baΔ
Bu sayacΔ±n her saniye iki dΓΌΔme ile yapΔ±landΔ±rΔ±labilen miktar kadar artmasΔ± gerekiyordu. Ancak, React'e bu Efektin hiΓ§bir Εeye baΔlΔ± olmadΔ±ΔΔ± konusunda "yalan sΓΆylediΔiniz" iΓ§in, React ilk render'dan itibaren `onTick` fonksiyonunu sonsuza kadar kullanmaya devam ediyor. [Bu render sΔ±rasΔ±nda,](/learn/state-as-a-snapshot#rendering-takes-a-snapshot-in-time) `count` = `0` ve `increment` = `1` idi. Bu nedenle bu render'daki `onTick` her zaman her saniye `setCount(0 + 1)` Γ§aΔΔ±rΔ±r ve her zaman `1` gΓΆrΓΌrsΓΌnΓΌz. Bunun gibi hatalar birden fazla bileΕene yayΔ±ldΔ±ΔΔ±nda dΓΌzeltilmesi daha zordur.
-Her zaman linter'Δ± gΓΆrmezden gelmekten daha iyi bir Γ§ΓΆzΓΌm vardΔ±r! Bu kodu dΓΌzeltmek iΓ§in baΔΔ±mlΔ±lΔ±k listesine `onTick` eklemeniz gerekir. (AralΔ±ΔΔ±n yalnΔ±zca bir kez ayarlandΔ±ΔΔ±ndan emin olmak iΓ§in, [`onTick`i bir Efekt OlayΔ± yapΔ±n.](/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events))
+Her zaman linter'Δ± gΓΆrmezden gelmekten daha iyi bir Γ§ΓΆzΓΌm vardΔ±r! Bu kodu dΓΌzeltmek iΓ§in baΔΔ±mlΔ±lΔ±k listesine `onTick` eklemeniz gerekir. (AralΔ±ΔΔ±n yalnΔ±zca bir kez ayarlandΔ±ΔΔ±ndan emin olmak iΓ§in, [`onTick`i bir Efekt OlayΔ± yapΔ±n.](/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events))
**BaΔΔ±mlΔ±lΔ±k lint hatasΔ±nΔ± bir derleme hatasΔ± olarak ele almanΔ±zΔ± ΓΆneririz. Bunu bastΔ±rmazsanΔ±z, bu gibi hatalarΔ± asla gΓΆrmezsiniz.** Bu sayfanΔ±n geri kalanΔ±, bu ve diΔer durumlar iΓ§in alternatifleri belgelemektedir.
@@ -411,7 +411,7 @@ function Form() {
function handleSubmit() {
setSubmitted(true);
- }
+ }
// ...
}
@@ -428,20 +428,20 @@ function Form() {
function handleSubmit() {
// β GΓΌzel: Olaya ΓΆzgΓΌ mantΔ±k olay yΓΆneticilerinden Γ§aΔrΔ±lΔ±r
post('/api/register');
- showNotification('BaΕarΔ±yla Kaydedildi!', theme);
- }
+ showNotification('KayΔ±t iΕlemi baΕarΔ±yla tamamlandΔ±!', theme);
+ }
// ...
}
```
-ArtΔ±k kod bir olay yΓΆneticisinde olduΔu iΓ§in reaktif deΔildir--bu nedenle yalnΔ±zca kullanΔ±cΔ± formu gΓΆnderdiΔinde Γ§alΔ±ΕacaktΔ±r. [Olay yΓΆneticileri ve Efektler arasΔ±nda seΓ§im yapma](/learn/separating-events-from-effects#reactive-values-and-reactive-logic) ve [gereksiz Etkiler nasΔ±l silinir](/learn/you-might-need-an-effect) hakkΔ±nda daha fazla bilgi edinin
+ArtΔ±k kod bir olay yΓΆneticisinde olduΔu iΓ§in reaktif deΔildir--bu nedenle yalnΔ±zca kullanΔ±cΔ± formu gΓΆnderdiΔinde Γ§alΔ±ΕacaktΔ±r. [Olay yΓΆneticileri ve Efektler arasΔ±nda seΓ§im yapma](/learn/separating-events-from-effects#reactive-values-and-reactive-logic) ve [gereksiz Etkiler nasΔ±l silinir](/learn/you-might-not-need-an-effect) hakkΔ±nda daha fazla bilgi edinin
### Efektiniz birbiriyle alakasΔ±z birkaΓ§ Εey mi yapΔ±yor? {/*is-your-effect-doing-several-unrelated-things*/}
Kendinize sormanΔ±z gereken bir sonraki soru, Efektinizin birbiriyle alakasΔ±z birkaΓ§ Εey yapΔ±p yapmadΔ±ΔΔ±dΔ±r.
-KullanΔ±cΔ±nΔ±n Εehir ve bΓΆlgesini seΓ§mesi gereken bir gΓΆnderi formu oluΕturduΔunuzu dΓΌΕΓΌnΓΌn.
+KullanΔ±cΔ±nΔ±n Εehir ve bΓΆlgesini seΓ§mesi gereken bir gΓΆnderi formu oluΕturduΔunuzu dΓΌΕΓΌnΓΌn.
SeΓ§ilen `country`'e gΓΆre `cities` listesini sunucudan alΔ±p bir aΓ§Δ±lΔ±r menΓΌde gΓΆsteriyorsunuz:
```js
@@ -610,13 +610,7 @@ function ChatRoom({ roomId }) {
### Bir deΔeri, deΔiΕikliklerine "tepki vermeden" okumak mΔ± istiyorsunuz? {/*do-you-want-to-read-a-value-without-reacting-to-its-changes*/}
-
-
-Bu bΓΆlΓΌmde, React'in kararlΔ± bir sΓΌrΓΌmΓΌnde henΓΌz yayΔ±nlanmamΔ±Ε **deneysel bir API** aΓ§Δ±klanmaktadΔ±r.
-
-
-
-KullanΔ±cΔ± yeni bir mesaj aldΔ±ΔΔ±nda `isMuted` deΔeri `true` olmadΔ±ΔΔ± sΓΌrece bir ses Γ§almak istediΔinizi varsayalΔ±m:
+Diyelim ki kullanΔ±cΔ± yeni bir mesaj aldΔ±ΔΔ±nda, eΔer `isMuted` deΔeri `true` deΔilse bir ses Γ§almak istiyorsun:
```js {3,10-12}
function ChatRoom({ roomId }) {
@@ -794,7 +788,7 @@ Bunu bir baΔΔ±mlΔ±lΔ±k olarak bildirmek ΓΆnemlidir! Bu, ΓΆrneΔin `roomId` deΔ
-```js
+```js {expectedErrors: {'react-compiler': [10]}}
import { useState, useEffect } from 'react';
import { createConnection } from './chat.js';
@@ -883,9 +877,9 @@ const options2 = { serverUrl: 'https://localhost:1234', roomId: 'mΓΌzik' };
// Bunlar iki farklΔ± nesne!
console.log(Object.is(options1, options2)); // false
```
-**Nesne ve fonksiyon baΔΔ±mlΔ±lΔ±klarΔ±, Efektinizin ihtiyacΔ±nΔ±z olandan daha sΔ±k yeniden senkronize edilmesine neden olabilir.**
+**Nesne ve fonksiyon baΔΔ±mlΔ±lΔ±klarΔ±, Efektinizin ihtiyacΔ±nΔ±z olandan daha sΔ±k yeniden senkronize edilmesine neden olabilir.**
-Bu nedenle, mΓΌmkΓΌn olduΔunca, Efektinizin baΔΔ±mlΔ±lΔ±klarΔ± olarak nesnelerden ve fonksiyonlardan kaΓ§Δ±nmaya Γ§alΔ±ΕmalΔ±sΔ±nΔ±z. Bunun yerine, bunlarΔ± bileΕenin dΔ±ΕΔ±na, Efektin iΓ§ine taΕΔ±mayΔ± veya ilkel deΔerleri bunlardan Γ§Δ±karmayΔ± deneyin.
+**Object ve function dependencyβleri, Effectβinizin ihtiyacΔ±nΔ±z olandan daha sΔ±k re-synchronize olmasΔ±na neden olabilir.**
#### Statik nesneleri ve fonksiyonlarΔ± bileΕeninizin dΔ±ΕΔ±na taΕΔ±ma {/*move-static-objects-and-functions-outside-your-component*/}
@@ -1153,7 +1147,7 @@ function ChatRoom({ getOptions }) {
// ...
```
-Bu sadece[saf halde](/learn/keeping-components-pure) fonksiyonlar iΓ§in geΓ§erlidir, Γ§ΓΌnkΓΌ render sΔ±rasΔ±nda Γ§aΔrΔ±lmalarΔ± gΓΌvenlidir.
+Bu sadece[saf halde](/learn/keeping-components-pure) fonksiyonlar iΓ§in geΓ§erlidir, Γ§ΓΌnkΓΌ render sΔ±rasΔ±nda Γ§aΔrΔ±lmalarΔ± gΓΌvenlidir.
Fonksiyonunuz bir olay yΓΆneticisiyse, ancak deΔiΕikliklerinin Efektinizi yeniden senkronize etmesini istemiyorsanΔ±z,[bunun yerine bir Efekt OlayΔ±na sarΔ±n.](#do-y-want-to-read-a-value-without-reacting-to-its-changes)
@@ -1241,7 +1235,7 @@ export default function Timer() {
-Efekt iΓ§inde `count` okumak yerine, React'e bir `c => c + 1` komutu ("bu sayΔ±yΔ± artΔ±r!") iletirsiniz. React bunu bir sonraki render'da uygulayacaktΔ±r. Ve artΔ±k Efektinizin iΓ§inde `count` deΔerini okumanΔ±za gerek olmadΔ±ΔΔ±ndan, Efektinizin baΔΔ±mlΔ±lΔ±klarΔ±nΔ± boΕ tutabilirsiniz (`[]`). Bu, Efektinizin her tikte aralΔ±ΔΔ± yeniden oluΕturmasΔ±nΔ± ΓΆnler.
+`count` deΔerini Efekt iΓ§inde okumak yerine, React'e `c => c + 1` talimatΔ±nΔ± ("bu sayΔ±yΔ± artΔ±r!") verirsiniz. React bu iΕlemi bir sonraki render'da uygular. ArtΔ±k Efekt'in iΓ§inde `count` deΔerini okumanΔ±za gerek kalmadΔ±ΔΔ± iΓ§in, Efekt'in baΔΔ±mlΔ±lΔ±k dizisini boΕ (`[]`) bΔ±rakabilirsiniz. Bu da, her tikte Efekt'in yeniden oluΕturulmasΔ±nΔ± engeller.
@@ -1259,25 +1253,9 @@ Efektin iΓ§inde reaktif olmamasΔ± gereken bir kod satΔ±rΔ± var mΔ±? Reaktif olma
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useState, useEffect, useRef } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import { FadeInAnimation } from './animation.js';
function Welcome({ duration }) {
@@ -1386,26 +1364,10 @@ Efektinizin `duration` Δ±n en son deΔerini okumasΔ± gerekir, ancak `duration`da
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useState, useEffect, useRef } from 'react';
import { FadeInAnimation } from './animation.js';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
function Welcome({ duration }) {
const ref = useRef(null);
@@ -1825,8 +1787,8 @@ Bu fonksiyonlardan bir diΔeri yalnΔ±zca iΓ§e aktarΔ±lan bir API yΓΆntemine baz
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -1907,7 +1869,7 @@ export default function App() {
```js src/ChatRoom.js active
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export default function ChatRoom({ roomId, createConnection, onMessage }) {
useEffect(() => {
@@ -2120,8 +2082,8 @@ SonuΓ§ olarak, sohbet yalnΔ±zca anlamlΔ± bir Εey (`roomId` veya `isEncrypted`)
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -2189,7 +2151,7 @@ export default function App() {
```js src/ChatRoom.js active
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import {
createEncryptedConnection,
createUnencryptedConnection,
diff --git a/src/content/learn/render-and-commit.md b/src/content/learn/render-and-commit.md
index 39ee93c6b..cb90a9822 100644
--- a/src/content/learn/render-and-commit.md
+++ b/src/content/learn/render-and-commit.md
@@ -38,7 +38,7 @@ Bir bileΕenin render edilmesi iΓ§in iki sebep vardΔ±r:
### Δ°lk render {/*initial-render*/}
-UygulamanΔ±z baΕladΔ±ΔΔ±nda, ilk render'Δ± tetiklemeniz gerekmektedir. ΓatΔ±lar ve sandbox'lar bazen bu kodu gizlerler ancak bu, hedef DOM node'unun [`createRoot`](/reference/react-dom/client/createRoot) ile Γ§aΔrΔ±lmasΔ± ve ardΔ±ndan bileΕeninizle o DOM node'unun `render` metodu Γ§aΔrΔ±larak ilk render tetiklenir:
+UygulamanΔ±z baΕladΔ±ΔΔ±nda, ilk render'Δ± tetiklemeniz gerekmektedir. Framework'ler ve sandbox'lar bazen bu kodu gizlerler ancak bu, hedef DOM node'unun [`createRoot`](/reference/react-dom/client/createRoot) ile Γ§aΔrΔ±lmasΔ± ve ardΔ±ndan bileΕeninizle o DOM node'unun `render` metodu Γ§aΔrΔ±larak ilk render tetiklenir:
@@ -54,7 +54,7 @@ root.render();
export default function Image() {
return (
);
@@ -70,9 +70,9 @@ export default function Image() {
Bir bileΕen ilk defa render edildikten sonra, [`set` fonksiyonu](/reference/react/useState#setstate) ile state'i gΓΌncelleyerek bileΕenin tekrar render edilmesini saΔlayabilirsiniz. BileΕeninizin state'ini gΓΌncellemek otomatik olarak sΔ±raya bir render almaktadΔ±r. (Bunu restorandaki bir mΓΌΕterinin susuzluk ve aΓ§lΔ±k durumuna gΓΆre ilk sipariΕini verdikten sonra Γ§ay, tatlΔ± ve benzeri Εeyleri sipariΕ etmesi gibi dΓΌΕΓΌnebilirsiniz.)
-
-
-
+
+
+
## 2. AdΔ±m: React bileΕeninizi render eder {/*step-2-react-renders-your-components*/}
@@ -103,7 +103,7 @@ export default function Gallery() {
function Image() {
return (
);
@@ -124,8 +124,8 @@ img { margin: 0 10px 10px 0; }
-* **Δ°lk render esnasΔ±nda** React, ``, `
`, ve ΓΌΓ§ `` elementi iΓ§in [DOM node'larΔ±nΔ± oluΕturacaktΔ±r.](https://developer.mozilla.org/docs/Web/API/Document/createElement)
-* **Yeniden render esnasΔ±nda** React, eΔer varsa ΓΆnceki render'dan bu yana hangi ΓΆzelliklerin deΔiΕtiΔini hesaplayacaktΔ±r. Bir sonraki adΔ±m olan deΔiΕikliklerin DOM'a iΕlenmesi safhasΔ±na kadar bu bilgilerle hiΓ§bir Εey yapmayacaktΔ±r.
+* **Initial render sΔ±rasΔ±nda,** React ``, `
` ve ΓΌΓ§ `` tagβi iΓ§in [DOM nodeβlarΔ±nΔ± oluΕturur](https://developer.mozilla.org/docs/Web/API/Document/createElement).
+* **Bir re-render sΔ±rasΔ±nda,** React bunlarΔ±n propertyβlerinden herhangi birinin previous renderβdan bu yana deΔiΕip deΔiΕmediΔini hesaplar. Bu bilgiyi bir sonraki step olan commit phaseβe kadar kullanmaz.
@@ -148,10 +148,10 @@ EΔer gΓΌncellenen bileΕen aΔaΓ§ta Γ§ok yΓΌksekteyse (ΓΌst bir eleman ise), g
## 3. AdΔ±m: React deΔiΕiklikleri DOM'a iΕler {/*step-3-react-commits-changes-to-the-dom*/}
-BileΕenleriniz render edildikten (Γ§aΔΔ±rΔ±ldΔ±ktan) sonra React, DOM'u deΔiΕtirir.
+After rendering (calling) your components, React will modify the DOM.
-* **Δ°lk render iΓ§in** React, [`appendChild()`](https://developer.mozilla.org/docs/Web/API/Node/appendChild) DOM API'nΔ± kullanarak tΓΌm DOM node'larΔ±nΔ± ekranda gΓΆrΓΌntΓΌler.
-* **Yeniden renderler iΓ§in** React, DOM'un son render'daki Γ§Δ±ktΔ±yla eΕleΕmesi iΓ§in gerekli olan asgari hesaplamalarΔ± (render edilme esnasΔ±nda hesaplanmΔ±Ε!) yapar.
+* **For the initial render,** React will use the [`appendChild()`](https://developer.mozilla.org/docs/Web/API/Node/appendChild) DOM API to put all the DOM nodes it has created on screen.
+* **For re-renders,** React will apply the minimal necessary operations (calculated while rendering!) to make the DOM match the latest rendering output.
**React DOM node'larΔ±nΔ± sadece render'lar arasΔ±nda farklΔ±lΔ±k varsa deΔiΕtirir.** ΓrneΔin aΕaΔΔ±da, ΓΌst bileΕeninden her saniye aldΔ±ΔΔ± farklΔ± prop'lar ile yeniden render edilen bir bileΕen var. `` elementine yazΔ± yazmanΔ±za ve `deΔerini` gΓΌncellemenize raΔmen yeniden render edilen bileΕende yazdΔ±ΔΔ±nΔ±z yazΔ±nΔ±n kaybolmadΔ±ΔΔ±na dikkat edin:
@@ -197,13 +197,13 @@ Bu, son adΔ±mda React'in sadece `
` elementinin iΓ§eriΔini yeni `time` ile g
## SonsΓΆz: TarayΔ±cΔ±nΔ±n boyanmasΔ± {/*epilogue-browser-paint*/}
-Render tamamlandΔ±ktan ve React DOM'u gΓΌncelledikten sonra, tarayΔ±cΔ± ekranΔ± yeniden boyayacaktΔ±r. Bu sΓΌreΓ§ "tarayΔ±cΔ±nΔ±n render etmesi" olarak bilinsede, bu dΓΆkΓΌmantasyon boyunca kafa karΔ±ΕΔ±klΔ±ΔΔ±nΔ± engellemk iΓ§in biz ona "boyama" diyeceΔiz.
+Render tamamlandΔ±ktan ve React DOM'u gΓΌncelledikten sonra, tarayΔ±cΔ± ekranΔ± yeniden boyayacaktΔ±r. Bu sΓΌreΓ§ "tarayΔ±cΔ±nΔ±n render etmesi" olarak bilinsede, bu dΓΆkΓΌmantasyon boyunca kafa karΔ±ΕΔ±klΔ±ΔΔ±nΔ± engellemk iΓ§in biz ona "boyama" diyeceΔiz.
-* Bir React uygulamasΔ±nda herhangi bir ekran gΓΌncellemesi ΓΌΓ§ adΔ±mda olur:
+* Bir React uygulamasΔ±nda herhangi bir ekran gΓΌncellemesi ΓΌΓ§ adΔ±mda olur:
1. Tetikle
2. Render et
3. Δ°Εle
diff --git a/src/content/learn/rendering-lists.md b/src/content/learn/rendering-lists.md
index 47859277e..9260851b6 100644
--- a/src/content/learn/rendering-lists.md
+++ b/src/content/learn/rendering-lists.md
@@ -10,7 +10,7 @@ Genellikle bir veri topluluΔundan birden fazla benzer bileΕen gΓΆstermek istey
-* Javascript'in `map()` metodunu kullanarak bir diziden nasΔ±l bileΕenler oluΕturulur?
+* Javascript'in `map()` metodunu kullanarak bir diziden nasΔ±l bileΕenler oluΕturulur?
* Javascript'in `filter()` metodunu kullanarak yalnΔ±zca belirli bileΕenler nasΔ±l oluΕturulur?
* React anahtarlarΔ±nΔ± ne zaman ve neden kullanmalΔ±yΔ±z?
@@ -32,10 +32,10 @@ AΕaΔΔ±daki gibi bir listeniz olduΔunu dΓΌΕΓΌnelim.
Bu liste ΓΆΔeleri arasΔ±ndaki tek fark iΓ§erikleri, verileridir. ArayΓΌzler oluΕtururken farklΔ± veriler kullanan aynΔ± bileΕenin birkaΓ§ ΓΆrneΔini gΓΆstermeniz gerekebilir: yorum listeleri ya da profil resimleri galerileri gibi. Bu gibi durumlarda, gerekli verileri Javascript objeleri ve dizilerinde saklayabilir ve [`map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) ve [`filter()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) gibi metodlarΔ± kullanarak bu verilerden bileΕen listeleri oluΕturabilirsiniz.
-AΕaΔΔ±daki kΔ±sa ΓΆrnekte bir diziden nasΔ±l ΓΆΔe listesi oluΕturulduΔunu gΓΆrebilirsiniz.
+AΕaΔΔ±daki kΔ±sa ΓΆrnekte bir diziden nasΔ±l ΓΆΔe listesi oluΕturulduΔunu gΓΆrebilirsiniz.
-1. Verinizi bir dizi iΓ§ine **aktarΔ±n**:
+1. Verinizi bir dizi iΓ§ine **aktarΔ±n**:
```js
const people = [
@@ -116,7 +116,7 @@ const people = [{
}, {
id: 3,
name: 'Percy Lavon Julian',
- profession: 'chemist',
+ profession: 'chemist',
}, {
id: 4,
name: 'Subrahmanyan Chandrasekhar',
@@ -224,7 +224,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
@@ -233,9 +233,9 @@ export function getImageUrl(person) {
```css
ul { list-style-type: none; padding: 0px 10px; }
-li {
- margin-bottom: 10px;
- display: grid;
+li {
+ margin-bottom: 10px;
+ display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
align-items: center;
@@ -355,7 +355,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
@@ -364,9 +364,9 @@ export function getImageUrl(person) {
```css
ul { list-style-type: none; padding: 0px 10px; }
-li {
- margin-bottom: 10px;
- display: grid;
+li {
+ margin-bottom: 10px;
+ display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
align-items: center;
@@ -436,7 +436,7 @@ Bu sayfada ΕunlarΔ± ΓΆΔrendiniz:
* Verileri bileΕenlerin dΔ±ΕΔ±na, diziler ve objeler gibi veri yapΔ±larΔ±na taΕΔ±ma.
* JavaScript'in `map()` metodu ile benzer bileΕen setleri oluΕturma.
* JavaScript'in `filter()` metodu ile filterenmiΕ ΓΆΔe dizileri oluΕturma.
-* React'in, konumlarΔ± ya da verileri deΔiΕse bile her bir koleksiyondaki her bileΕeni takip edebilmesi iΓ§in `anahtar` neden ve nasΔ±l kullanΔ±lΔ±r.
+* React'in, konumlarΔ± ya da verileri deΔiΕse bile her bir koleksiyondaki her bileΕeni takip edebilmesi iΓ§in `anahtar` neden ve nasΔ±l kullanΔ±lΔ±r.
@@ -516,7 +516,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
@@ -631,7 +631,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
@@ -745,7 +745,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
@@ -863,7 +863,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
diff --git a/src/content/learn/responding-to-events.md b/src/content/learn/responding-to-events.md
index 662700a12..237cb7a22 100644
--- a/src/content/learn/responding-to-events.md
+++ b/src/content/learn/responding-to-events.md
@@ -169,7 +169,7 @@ Bu iki dΓΌΔmenin farklΔ± mesaj gΓΆsterebilmesine olanak saΔlar. BileΕenlere i
### Olay yΓΆneticilerini prop olarak iletmek {/*passing-event-handlers-as-props*/}
-SΔ±klΔ±kla bileΕenlerin alt bileΕenlerindeki (child component) olay yΓΆneticilerini belirlemesini istersiniz. DΓΌΔmeleri dΓΌΕΓΌnelim: bileΕeninin nerede kullanΔ±ldΔ±ΔΔ±na baΔlΔ± olarak farklΔ± iΕlevler yerine getirmesini isteyebilirsiniz - mesela biri film oynatΔ±rken diΔeri resim yΓΌkleyebilir.
+ΓoΔu zaman parent componentβin, childβΔ±n event handlerβΔ±nΔ± belirtmesini istersiniz. ButtonβlarΔ± dΓΌΕΓΌnΓΌn: Bir `Button` componentβini nerede kullandΔ±ΔΔ±nΔ±za baΔlΔ± olarak farklΔ± bir function execute etmek isteyebilirsinizβbelki biri bir movie oynatΔ±r, diΔeri bir image upload eder.
Bunun iΓ§in, ΓΌst bileΕenden (parent component) prop olarak alΔ±nan fonksiyon olay yΓΆneticisi olarak kullanΔ±labilir:
@@ -313,11 +313,11 @@ button { margin-right: 10px; }
-Dikkat ederseniz `App` bileΕeni, `Toolbar` bileΕeninin `onPlayMovie` veya `onUploadImage` ile *ne* yapacaΔΔ±nΔ± bilmek zorunda deΔildir. Bu `Toolbar` bileΕeninin implementasyon detayΔ±dΔ±r. `Toolbar`, bu prop'larΔ± `Button`'larΔ±na `onClick` olay yΓΆneticisi olarak iletir. Δ°leriki zamanlarda tΔ±klama yerine klavye kΔ±sayoluyla da tetikletmek isteyebilirsiniz. BileΕenlerinizin prop'larΔ±nΔ± `onPlayMovie` gibi uygulamaya ΓΆzgΓΌ etkileΕimlere gΓΆre adlandΔ±rmak ileride kullanΔ±m biΓ§imlerini deΔiΕtirme esnekliΔi saΔlar.
-
+`App` componentβinin, `Toolbar`βΔ±n `onPlayMovie` veya `onUploadImage` ile *ne* yapacaΔΔ±nΔ± bilmesine gerek olmadΔ±ΔΔ±na dikkat edin. Bu, `Toolbar`βΔ±n bir implementation detailβΔ±dΔ±r. Burada `Toolbar`, bunlarΔ± kendi `Button`βlarΔ±na `onClick` handlerβlarΔ± olarak pass eder, ancak ileride bunlarΔ± bir keyboard shortcut ile de trigger edebilir. PropβlarΔ± `onPlayMovie` gibi appβe ΓΆzel interactionβlara gΓΆre adlandΔ±rmak, ileride bunlarΔ±n nasΔ±l kullanΔ±lacaΔΔ±nΔ± deΔiΕtirme esnekliΔi saΔlar.
+
-Olay yΓΆneticileriniz iΓ§in uygun HTML etiketleri kullandΔ±ΔΔ±nΔ±zdan emin olun. ΓrneΔin, tΔ±klamalarΔ± iΕlemek iΓ§in `
` yerine [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button) kullanΔ±n. GerΓ§ek taraycΔ± `` u kullanmak klavye navigasyonu gibi yerleΕik tarayΔ±cΔ± davranΔ±ΕlarΔ±nΔ± etkinleΕtirir. EΔer bir butonun varsayΔ±lan tarayΔ±cΔ± stilini beΔenmiyorsanΔ±z ya da onu bir baΔlantΔ± ya da baΕka bir UI elemanΔ± gibi gΓΆstermek istiyorsanΔ±z CSS kullanabilirsiniz. [EriΕilebilir iΕaretleme yazmak hakkΔ±nda daha fazla bilgi edinin.](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML)
+Event handlerβlarΔ±nΔ±z iΓ§in uygun HTML tagβlerini kullandΔ±ΔΔ±nΔ±zdan emin olun. ΓrneΔin, clickβleri handle etmek iΓ§in `
` yerine [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button) kullanΔ±n. GerΓ§ek bir browser `` kullanmak, keyboard navigation gibi built-in browser behaviorβlarΔ±nΔ± etkinleΕtirir. Bir buttonβΔ±n default browser stylingβini beΔenmiyorsanΔ±z ve onu daha Γ§ok bir link veya farklΔ± bir UI element gibi gΓΆstermek istiyorsanΔ±z, bunu CSS ile yapabilirsiniz. [Accessible markup yazma hakkΔ±nda daha fazla bilgi edinin.](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML)
@@ -412,12 +412,12 @@ button { margin: 5px; }
DΓΌΔmelerden birisine tΔ±kladΔ±ΔΔ±nΔ±zda:
-1. React, ``'a iletilen `onClick` yΓΆneticisini Γ§aΔΔ±rΔ±r.
-2. Bu yΓΆnetici, `Button` iΓ§erisinde tanΔ±mlanΔ±r ve ΕunlarΔ± yapar:
- * OlayΔ±n daha fazla kabarmasΔ±nΔ± (bubbling) ΓΆnlemek iΓ§in `e.stopPropagation()` metodunu Γ§aΔΔ±rΔ±r.
- * `Toolbar` bileΕeninden prop olarak iletilen `onClick` fonksiyonunu Γ§aΔΔ±rΔ±r.
-3. Bu fonksiyon `Toolbar` bileΕeninde tanΔ±mlanΔ±r ve dΓΌΔmenin kendi uyarΔ±sΔ±nΔ± gΓΆrΓΌntΓΌler.
-4. YayΔ±lΔ±m durdurulduΔu iΓ§in ΓΌstteki `
` elementinin `onClick` yΓΆneticisi *Γ§alΔ±Εmaz*.
+1. React, ``βa pass edilen `onClick` handlerβΔ±nΔ± Γ§aΔΔ±rΔ±r.
+2. `Button` iΓ§inde tanΔ±mlanan bu handler ΕunlarΔ± yapar:
+ * `e.stopPropagation()` Γ§aΔΔ±rΔ±r ve eventβin daha fazla bubble etmesini engeller.
+ * `Toolbar` componentβinden prop olarak pass edilen `onClick` functionβΔ±nΔ± Γ§aΔΔ±rΔ±r.
+3. `Toolbar` componentβi iΓ§inde tanΔ±mlanan bu function, buttonβΔ±n kendi alertβini gΓΆsterir.
+4. Propagation durdurulduΔu iΓ§in parent `
`βin `onClick` handlerβΔ± Γ§alΔ±Εmaz.
DΓΌΔmeye tΔ±klandΔ±ΔΔ±nda `` ve `
` elementlerinden gelen iki ayrΔ± uyarΔ± gΓΆsterilirken `e.stopPropagation()` kullanΔ±ldΔ±ΔΔ±nda yalnΔ±zca `` elementinden gelen uyarΔ± gΓΆsterilir. DΓΌΔmeye tΔ±klamak, fonksiyonellik aΓ§Δ±sΔ±ndan araΓ§ Γ§ubuΔuna tΔ±klamakla aynΔ± Εey deΔildir. DolayΔ±sΔ±yla da olayΔ±n yayΔ±lΔ±mΔ±nΔ±n durdurulmasΔ± arayΓΌz aΓ§Δ±sΔ±ndan oldukΓ§a mantΔ±klΔ±dΔ±r.
@@ -434,11 +434,11 @@ Nadir durumlarda **yayΔ±lmasΔ± durdurulmuΕ** olsa bile alt elemanlardaki olayla
```
-Her olay ΓΌΓ§ aΕamada yayΔ±lΔ±r:
+Her event ΓΌΓ§ phaseβde propagate eder:
-1. AΕaΔΔ±ya doΔru ilerleyecek Εekilde tΓΌm `onClickCapture` yΓΆneticilerini Γ§alΔ±ΕtΔ±rΔ±r.
-2. TΔ±klanan elementin `onClick` yΓΆneticisi Γ§alΔ±ΕtΔ±rΔ±r.
-3. YukarΔ± doΔru ilerleyecek Εekilde tΓΌm `onClick` yΓΆneticilerini Γ§alΔ±ΕtΔ±rΔ±r.
+1. AΕaΔΔ± doΔru ilerler ve tΓΌm `onClickCapture` handlerβlarΔ±nΔ± Γ§aΔΔ±rΔ±r.
+2. Click edilen elementβin `onClick` handlerβΔ±nΔ± Γ§alΔ±ΕtΔ±rΔ±r.
+3. YukarΔ± doΔru ilerler ve tΓΌm `onClick` handlerβlarΔ±nΔ± Γ§aΔΔ±rΔ±r.
OlaylarΔ± yakalamak, yΓΆnlendirici (router) ya da analitik kodlarΔ± iΓ§in faydalΔ±dΔ±r ancak muhtemelen uygulamanΔ±zda kullanmayacaksΔ±nΔ±z.
@@ -548,7 +548,7 @@ Renderlama fonksiyonlarΔ±nΔ±n aksine, olay yΓΆneticilerinin [saf (pure)](/learn/
-```js
+```js {expectedErrors: {'react-compiler': [5, 7]}}
export default function LightSwitch() {
function handleClick() {
let bodyStyle = document.body.style;
diff --git a/src/content/learn/reusing-logic-with-custom-hooks.md b/src/content/learn/reusing-logic-with-custom-hooks.md
index 67de5e97f..397ef8e9c 100644
--- a/src/content/learn/reusing-logic-with-custom-hooks.md
+++ b/src/content/learn/reusing-logic-with-custom-hooks.md
@@ -1,30 +1,30 @@
---
-title: 'Reusing Logic with Custom Hooks'
+title: 'Γzel Hook''lar ile MantΔ±ΔΔ± Tekrar Kullanma'
---
-React comes with several built-in Hooks like `useState`, `useContext`, and `useEffect`. Sometimes, you'll wish that there was a Hook for some more specific purpose: for example, to fetch data, to keep track of whether the user is online, or to connect to a chat room. You might not find these Hooks in React, but you can create your own Hooks for your application's needs.
+React, `useState`, `useContext`, ve `useEffect` gibi birkaΓ§ yerleΕik Hook ile birlikte gelir. Bazen, bazΔ± daha spesifik amaΓ§lar iΓ§in bir Hook olmasΔ±nΔ± isteyeceksiniz: ΓΆrneΔin, veri Γ§ekmek iΓ§in, kullanΔ±cΔ±nΔ±n Γ§evrimiΓ§i olup olmadΔ±ΔΔ±nΔ± takip etmek iΓ§in veya bir sohbet odasΔ±na baΔlanmak iΓ§in. Bu Hook'larΔ± React'te bulamayabilirsiniz, ancak uygulamanΔ±zΔ±n ihtiyaΓ§larΔ± iΓ§in kendi Hook'larΔ±nΔ±zΔ± oluΕturabilirsiniz.
-- What custom Hooks are, and how to write your own
-- How to reuse logic between components
-- How to name and structure your custom Hooks
-- When and why to extract custom Hooks
+- Γzel Hook'larΔ±n ne olduΔunu ve kendi ΓΆzel Hook'larΔ±nΔ±zΔ± nasΔ±l yazacaΔΔ±nΔ±zΔ±
+- BileΕenler arasΔ±nda mantΔ±ΔΔ± nasΔ±l yeniden kullanacaΔΔ±nΔ±zΔ±
+- Γzel Hook'larΔ±nΔ±zΔ± nasΔ±l adlandΔ±racaΔΔ±nΔ±zΔ± ve yapΔ±landΔ±racaΔΔ±nΔ±zΔ±
+- Γzel Hook'larΔ± ne zaman ve neden Γ§Δ±karacaΔΔ±nΔ±zΔ±
-## Custom Hooks: Sharing logic between components {/*custom-hooks-sharing-logic-between-components*/}
+## Γzel Hook'lar: BileΕenler arasΔ±nda mantΔ±ΔΔ± paylaΕma {/*custom-hooks-sharing-logic-between-components*/}
-Imagine you're developing an app that heavily relies on the network (as most apps do). You want to warn the user if their network connection has accidentally gone off while they were using your app. How would you go about it? It seems like you'll need two things in your component:
+AΔa bΓΌyΓΌk ΓΆlΓ§ΓΌde baΔΔ±mlΔ± bir uygulama geliΕtirdiΔinizi dΓΌΕΓΌnΓΌn (Γ§oΔu uygulamanΔ±n yaptΔ±ΔΔ± gibi). KullanΔ±cΔ±yΔ±, uygulamanΔ±zΔ± kullanΔ±rken aΔ baΔlantΔ±sΔ±nΔ±n yanlΔ±ΕlΔ±kla kapandΔ±ΔΔ± durumlarda uyarmak istersiniz. Bunu nasΔ±l yapardΔ±nΔ±z? BileΕeninizde iki Εeye ihtiyacΔ±nΔ±z olduΔu gibi gΓΆrΓΌnΓΌyor:
-1. A piece of state that tracks whether the network is online.
-2. An Effect that subscribes to the global [`online`](https://developer.mozilla.org/en-US/docs/Web/API/Window/online_event) and [`offline`](https://developer.mozilla.org/en-US/docs/Web/API/Window/offline_event) events, and updates that state.
+1. AΔΔ±nΔ±zΔ±n Γ§evrimiΓ§i olup olmadΔ±ΔΔ±nΔ± izleyen bir state parΓ§asΔ±.
+2. Global [`Γ§evrimiΓ§i`](https://developer.mozilla.org/en-US/docs/Web/API/Window/online_event) ve [`Γ§evrimdΔ±ΕΔ±`](https://developer.mozilla.org/en-US/docs/Web/API/Window/offline_event) olaylarΔ±na abone olan ve bu state'i gΓΌncelleyen bir Efekt.
-This will keep your component [synchronized](/learn/synchronizing-with-effects) with the network status. You might start with something like this:
+Bu sizin bileΕeninizi aΔ durumu ile [senkronize](/learn/synchronizing-with-effects) tutacaktΔ±r. ΕΓΆyle bir Εeyle baΕlayabilirsiniz:
@@ -48,17 +48,17 @@ export default function StatusBar() {
};
}, []);
- return
;
}
```
-Try turning your network on and off, and notice how this `StatusBar` updates in response to your actions.
+AΔΔ±nΔ±zΔ± kapatΔ±p aΓ§mayΔ± deneyin ve bu `StatusBar`'Δ±n tepki olarak nasΔ±l gΓΌncellendiΔini fark edin.
-Now imagine you *also* want to use the same logic in a different component. You want to implement a Save button that will become disabled and show "Reconnecting..." instead of "Save" while the network is off.
+Εimdi *ek olarak* aynΔ± mantΔ±ΔΔ± farklΔ± bir bileΕende kullanmak istediΔinizi hayal edin. AΔ kapalΔ±yken "Kaydet" yerine "Yeniden baΔlanΔ±yor..." yazan ve devre dΔ±ΕΔ± bΔ±rakΔ±lan bir Kaydet dΓΌΔmesi uygulamak istiyorsunuz.
-To start, you can copy and paste the `isOnline` state and the Effect into `SaveButton`:
+BaΕlangΔ±Γ§ olarak, `isOnline` state'ini ve Efekti `SaveButton`'a kopyalayabilirsiniz:
@@ -83,12 +83,12 @@ export default function SaveButton() {
}, []);
function handleSaveClick() {
- console.log('β Progress saved');
+ console.log('β Δ°lerleme kaydedildi');
}
return (
- {isOnline ? 'Save progress' : 'Reconnecting...'}
+ {isOnline ? 'Δ°lerlemeyi kaydet' : 'Yeniden baΔlanΔ±lΔ±yor...'}
);
}
@@ -96,36 +96,36 @@ export default function SaveButton() {
-Verify that, if you turn off the network, the button will change its appearance.
+AΔΔ± kapatΔ±rsanΔ±z, dΓΌΔmenin gΓΆrΓΌnΓΌmΓΌnΓΌn deΔiΕtiΔini doΔrulayΔ±n.
-These two components work fine, but the duplication in logic between them is unfortunate. It seems like even though they have different *visual appearance,* you want to reuse the logic between them.
+Bu iki bileΕen iyi Γ§alΔ±ΕΔ±yor, ancak aralarΔ±ndaki mantΔ±k tekrarΔ± talihsiz. GΓΆrΓΌnen o ki farklΔ± *gΓΆrsel gΓΆrΓΌnΓΌme* sahip olsalar da, aralarΔ±ndaki mantΔ±ΔΔ± yeniden kullanmak istiyorsunuz.
-### Extracting your own custom Hook from a component {/*extracting-your-own-custom-hook-from-a-component*/}
+### Kendi ΓΆzel Hook'unuzu bir bileΕenden Γ§Δ±karma {/*extracting-your-own-custom-hook-from-a-component*/}
-Imagine for a moment that, similar to [`useState`](/reference/react/useState) and [`useEffect`](/reference/react/useEffect), there was a built-in `useOnlineStatus` Hook. Then both of these components could be simplified and you could remove the duplication between them:
+Bir an iΓ§in hayal edin, [`useState`](/reference/react/useState) ve [`useEffect`](/reference/react/useEffect) gibi, yerleΕik bir `useOnlineStatus` Hook'u olsaydΔ±. O zaman bu iki bileΕen de basitleΕtirilebilir ve aralarΔ±ndaki tekrarΔ± kaldΔ±rabilirsiniz:
```js {2,7}
function StatusBar() {
const isOnline = useOnlineStatus();
- return
;
}
function SaveButton() {
const isOnline = useOnlineStatus();
function handleSaveClick() {
- console.log('β Progress saved');
+ console.log('β Δ°lerleme kaydedildi');
}
return (
- {isOnline ? 'Save progress' : 'Reconnecting...'}
+ {isOnline ? 'Δ°lerlemeyi kaydet' : 'Yeniden baΔlanΔ±lΔ±yor...'}
);
}
```
-Although there is no such built-in Hook, you can write it yourself. Declare a function called `useOnlineStatus` and move all the duplicated code into it from the components you wrote earlier:
+YerleΕik bir Hook bulunmasa da, kendiniz yazabilirsiniz. `useOnlineStatus` adΔ±nda bir fonksiyon oluΕturun ve daha ΓΆnce yazdΔ±ΔΔ±nΔ±z bileΕenlerdeki tekrarlanan kodu iΓ§ine taΕΔ±yΔ±n:
```js {2-16}
function useOnlineStatus() {
@@ -148,7 +148,7 @@ function useOnlineStatus() {
}
```
-At the end of the function, return `isOnline`. This lets your components read that value:
+Fonksiyonun sonunda `isOnline`'Δ± dΓΆndΓΌrΓΌn. Bu, bileΕenlerinizin bu deΔeri okumasΔ±na olanak saΔlar:
@@ -157,19 +157,19 @@ import { useOnlineStatus } from './useOnlineStatus.js';
function StatusBar() {
const isOnline = useOnlineStatus();
- return
;
}
function SaveButton() {
const isOnline = useOnlineStatus();
function handleSaveClick() {
- console.log('β Progress saved');
+ console.log('β Δ°lerleme kaydedildi');
}
return (
- {isOnline ? 'Save progress' : 'Reconnecting...'}
+ {isOnline ? 'Δ°lerlemeyi kaydet' : 'Yeniden baΔlanΔ±lΔ±yor...'}
);
}
@@ -209,89 +209,89 @@ export function useOnlineStatus() {
-Verify that switching the network on and off updates both components.
+AΔΔ± kapatΔ±p aΓ§manΔ±n iki bileΕeni de gΓΌncellediΔini doΔrulayΔ±n.
-Now your components don't have as much repetitive logic. **More importantly, the code inside them describes *what they want to do* (use the online status!) rather than *how to do it* (by subscribing to the browser events).**
+Εimdi bileΕenleriniz Γ§ok tekrarlΔ± mantΔ±Δa sahip deΔil. **Daha da ΓΆnemlisi, iΓ§lerindeki kod, *nasΔ±l yapacaklarΔ±*ndan (tarayΔ±cΔ± olaylarΔ±na abone olarak) ziyade *ne yapmak istedikleri*ni (Γ§evrimiΓ§i durumu kullanΔ±n!) aΓ§Δ±klΔ±yor.**
-When you extract logic into custom Hooks, you can hide the gnarly details of how you deal with some external system or a browser API. The code of your components expresses your intent, not the implementation.
+MantΔ±ΔΔ± ΓΆzel Hook'lara Γ§Δ±karttΔ±ΔΔ±nΔ±zda, bir harici sistem ya da tarayΔ±cΔ± API'si ile nasΔ±l baΕa Γ§Δ±ktΔ±ΔΔ±nΔ±zΔ±n zorlu ayrΔ±ntΔ±larΔ±nΔ± gizleyebilirsiniz. BileΕenlerinizin kodu, uygulamanΔ±zΔ±n nasΔ±l yerine getirdiΔinden ziyade ne yapmak istediΔinizi aΓ§Δ±klar.
-### Hook names always start with `use` {/*hook-names-always-start-with-use*/}
+### Hook isimleri her zaman `use` ile baΕlar {/*hook-names-always-start-with-use*/}
-React applications are built from components. Components are built from Hooks, whether built-in or custom. You'll likely often use custom Hooks created by others, but occasionally you might write one yourself!
+React uygulamalarΔ± bileΕenlerden oluΕur. BileΕenler yerleΕik veya ΓΆzel olsun, Hook'lardan oluΕur. Muhtemelen sΔ±klΔ±kla baΕkalarΔ± tarafΔ±ndan oluΕturulan ΓΆzel Hook'larΔ± kullanacaksΔ±nΔ±z, ancak arada bir kendiniz de yazabilirsiniz!
-You must follow these naming conventions:
+Bu isimlendirme kurallarΔ±na uymalΔ±sΔ±nΔ±z:
-1. **React component names must start with a capital letter,** like `StatusBar` and `SaveButton`. React components also need to return something that React knows how to display, like a piece of JSX.
-2. **Hook names must start with `use` followed by a capital letter,** like [`useState`](/reference/react/useState) (built-in) or `useOnlineStatus` (custom, like earlier on the page). Hooks may return arbitrary values.
+1. **React bileΕenleri bΓΌyΓΌk harfle baΕlamalΔ±dΔ±r,** `StatusBar` ve `SaveButton` gibi. React bileΕenleri ayrΔ±ca, JSX gibi, React'in nasΔ±l gΓΆrΓΌntΓΌleyeceΔini bildiΔi bir Εey dΓΆndΓΌrmelidir.
+2. **Hook isimleri `use` ile baΕlayΔ±p bΓΌyΓΌk harfle devam etmelidir,** [`useState`](/reference/react/useState) (yerleΕik) veya `useOnlineStatus` (ΓΆzel, yukarΔ±daki ΓΆrnekte olduΔu gibi). Hook'lar keyfi deΔerler dΓΆndΓΌrebilir.
-This convention guarantees that you can always look at a component and know where its state, Effects, and other React features might "hide". For example, if you see a `getColor()` function call inside your component, you can be sure that it can't possibly contain React state inside because its name doesn't start with `use`. However, a function call like `useOnlineStatus()` will most likely contain calls to other Hooks inside!
+Bu kural, sizin bir bileΕene her baktΔ±ΔΔ±nΔ±zda onun state, Efekt'leri ve diΔer React ΓΆzelliklerinin nerede "saklanabileceΔini" bilmenizi garanti eder. ΓrneΔin, bileΕeninizde `getColor()` fonksiyonu Γ§aΔrΔ±sΔ± gΓΆrΓΌrseniz, adΔ±nΔ±n `use` ile baΕlamadΔ±ΔΔ± iΓ§in iΓ§inde React state'i iΓ§eremeyeceΔinden emin olabilirsiniz. Ancak, `useOnlineStatus()` gibi bir fonksiyon Γ§aΔrΔ±sΔ± bΓΌyΓΌk olasΔ±lΔ±kla iΓ§inde baΕka Hook'lara Γ§aΔrΔ± iΓ§erecektir!
-If your linter is [configured for React,](/learn/editor-setup#linting) it will enforce this naming convention. Scroll up to the sandbox above and rename `useOnlineStatus` to `getOnlineStatus`. Notice that the linter won't allow you to call `useState` or `useEffect` inside of it anymore. Only Hooks and components can call other Hooks!
+EΔer linter'Δ±nΔ±z [React iΓ§in yapΔ±landΔ±rΔ±lmΔ±Εsa,](/learn/editor-setup#linting) her zaman bu isimlendirme kuralΔ±nΔ± zorunlu kΔ±lacaktΔ±r. YukarΔ±daki sandbox'ta `useOnlineStatus`'u `getOnlineStatus` olarak yeniden adlandΔ±rΔ±n. Linter'Δ±nΔ±zΔ±n artΔ±k onun iΓ§inde `useState` veya `useEffect` Γ§aΔΔ±rmaya izin vermediΔini fark edin. Sadece Hook'lar ve bileΕenler diΔer Hook'larΔ± Γ§aΔΔ±rabilir!
-#### Should all functions called during rendering start with the use prefix? {/*should-all-functions-called-during-rendering-start-with-the-use-prefix*/}
+#### Render sΔ±rasΔ±nda Γ§aΔrΔ±lan tΓΌm fonksiyonlar `use` ΓΆn eki ile mi baΕlamalΔ±dΔ±r? {/*should-all-functions-called-during-rendering-start-with-the-use-prefix*/}
-No. Functions that don't *call* Hooks don't need to *be* Hooks.
+HayΔ±r. Hook'larΔ± *Γ§aΔΔ±rmayan* fonksiyonlar Hook *olmak* zorunda deΔildir.
-If your function doesn't call any Hooks, avoid the `use` prefix. Instead, write it as a regular function *without* the `use` prefix. For example, `useSorted` below doesn't call Hooks, so call it `getSorted` instead:
+EΔer fonksiyonunuz herhangi bir Hook Γ§aΔΔ±rmΔ±yorsa, `use` ΓΆn eki kullanmayΔ±n. Bunun yerine onu `use` ΓΆn eki *bulunmayan* bir sΔ±radan fonksiyon olarak yazΔ±n. ΓrneΔin, aΕaΔΔ±daki `useSorted` Hook Γ§aΔΔ±rmadΔ±ΔΔ±ndan, onu `getSorted` olarak Γ§aΔΔ±rΔ±n:
```js
-// π΄ Avoid: A Hook that doesn't use Hooks
+// π΄ KaΓ§Δ±nΔ±n: Hook kullanmayan bir Hook
function useSorted(items) {
return items.slice().sort();
}
-// β Good: A regular function that doesn't use Hooks
+// β Δ°yi: Hook kullanmayan normal bir fonksiyon
function getSorted(items) {
return items.slice().sort();
}
```
-This ensures that your code can call this regular function anywhere, including conditions:
+Bu, kodunuzun bu sΔ±radan fonksiyonu, koΕullar dahil olmak ΓΌzere herhangi bir yerde Γ§aΔΔ±rabileceΔinden emin olur:
```js
function List({ items, shouldSort }) {
let displayedItems = items;
if (shouldSort) {
- // β It's ok to call getSorted() conditionally because it's not a Hook
+ // β KoΕullu olarak getSorted() Γ§aΔΔ±rmak sorun deΔil Γ§ΓΌnkΓΌ o bir Hook deΔil
displayedItems = getSorted(items);
}
// ...
}
```
-You should give `use` prefix to a function (and thus make it a Hook) if it uses at least one Hook inside of it:
+Bir fonksiyon eΔer bir ya da daha fazla Hook'u iΓ§eriyorsa, ona `use` ΓΆn eki vermelisiniz:
```js
-// β Good: A Hook that uses other Hooks
+// β Δ°yi: DiΔer Hook'larΔ± kullanan bir Hook
function useAuth() {
return useContext(Auth);
}
```
-Technically, this isn't enforced by React. In principle, you could make a Hook that doesn't call other Hooks. This is often confusing and limiting so it's best to avoid that pattern. However, there may be rare cases where it is helpful. For example, maybe your function doesn't use any Hooks right now, but you plan to add some Hook calls to it in the future. Then it makes sense to name it with the `use` prefix:
+Teknik olarak, bu React tarafΔ±ndan zorunlu kΔ±lΔ±nmΔ±yor. Prensipte, baΕka Hook'larΔ± Γ§aΔΔ±rmayan bir Hook yapabilirsiniz. Bu genellikle kafa karΔ±ΕtΔ±rΔ±cΔ± ve limitleyicidir, bu yΓΌzden bu ΓΆrΓΌntΓΌden uzak durmak en iyisidir. Ancak, iΕe yarayacaΔΔ± nadir durumlar bulunabilir. ΓrneΔin: belki Εu anda fonksiyonunuz hiΓ§bir Hook kullanmΔ±yordur, ancak gelecekte ona bazΔ± Hook Γ§aΔrΔ±larΔ± eklemeyi planlΔ±yorsunuzdur. O zaman, fonksiyonu `use` ΓΆnekiyle adlandΔ±rmak mantΔ±klΔ±dΔ±r:
```js {3-4}
-// β Good: A Hook that will likely use some other Hooks later
+// β Δ°yi: Gelecekte muhtemelen baΕka Hook'larΔ± kullanacak bir Hook
function useAuth() {
- // TODO: Replace with this line when authentication is implemented:
+ // TODO: Authentication tamamlanΔ±nca bu satΔ±rΔ± deΔiΕtir:
// return useContext(Auth);
return TEST_USER;
}
```
-Then components won't be able to call it conditionally. This will become important when you actually add Hook calls inside. If you don't plan to use Hooks inside it (now or later), don't make it a Hook.
+Bu Εekilde bileΕenler onu koΕullu olarak Γ§aΔΔ±ramayacaktΔ±r. Bu, iΓ§ine Hook Γ§aΔrΔ±larΔ± eklediΔinizde ΓΆnemli olacaktΔ±r. EΔer onun iΓ§inde Hook kullanmayΔ± (Εimdi ya da gelecekte) planlamΔ±yorsanΔ±z, onu bir Hook yapmayΔ±n.
-### Custom Hooks let you share stateful logic, not state itself {/*custom-hooks-let-you-share-stateful-logic-not-state-itself*/}
+### Γzel Hook'lar state'li mantΔ±ΔΔ± paylaΕmanΔ±zΔ± saΔlar, state'in kendisini deΔil {/*custom-hooks-let-you-share-stateful-logic-not-state-itself*/}
-In the earlier example, when you turned the network on and off, both components updated together. However, it's wrong to think that a single `isOnline` state variable is shared between them. Look at this code:
+Daha ΓΆnceki bir ΓΆrnekte, aΔΔ± aΓ§Δ±p kapattΔ±ΔΔ±nΔ±zda, her iki bileΕen de birlikte gΓΌncellendi. Ancak, onlarΔ±n arasΔ±nda tek bir `isOnline` state deΔiΕkeninin paylaΕΔ±ldΔ±ΔΔ±nΔ± dΓΌΕΓΌnmek yanlΔ±Ε olur. Bu kodu inceleyin:
```js {2,7}
function StatusBar() {
@@ -305,7 +305,7 @@ function SaveButton() {
}
```
-It works the same way as before you extracted the duplication:
+Bu, tekrarΔ± Γ§Δ±kartmanΔ±zdan ΓΆnceki hali gibi Γ§alΔ±ΕΔ±r:
```js {2-5,10-13}
function StatusBar() {
@@ -325,9 +325,9 @@ function SaveButton() {
}
```
-These are two completely independent state variables and Effects! They happened to have the same value at the same time because you synchronized them with the same external value (whether the network is on).
+Bunlar tamamen baΔΔ±msΔ±z iki state deΔiΕkenleri ve Efekt'lerdir! Onlar rastlantΔ±sal olarak aynΔ± anda aynΔ± deΔere sahip oldular Γ§ΓΌnkΓΌ onlarΔ± aynΔ± harici deΔerle (aΔΔ±n aΓ§Δ±k olup olmamasΔ±) senkronize ettiniz.
-To better illustrate this, we'll need a different example. Consider this `Form` component:
+Bunu daha iyi canlandΔ±rabilmek adΔ±na, farklΔ± bir ΓΆrnek kullanacaΔΔ±z. Bu `Form` bileΕenini ele alΔ±n:
@@ -349,14 +349,14 @@ export default function Form() {
return (
<>
- First name:
+ Δ°sim:
- Last name:
+ Soyisim:
-
Good morning, {firstName} {lastName}.
+
GΓΌnaydΔ±nlar, {firstName} {lastName}.
>
);
}
@@ -369,13 +369,13 @@ input { margin-left: 10px; }
-There's some repetitive logic for each form field:
+Her form alanΔ± iΓ§in tekrarlayan bir mantΔ±k var:
-1. There's a piece of state (`firstName` and `lastName`).
-1. There's a change handler (`handleFirstNameChange` and `handleLastNameChange`).
-1. There's a piece of JSX that specifies the `value` and `onChange` attributes for that input.
+1. Bir parΓ§a state bulunuyor (`firstName` ve `lastName`).
+2. Bir deΔiΕim yΓΆneticisi bulunuyor (`handleFirstNameChange` ve `handleLastNameChange`).
+3. O girdi iΓ§in `value` ve `onChange` ΓΆzniteliklerini belirleyen bir parΓ§a JSX bulunuyor.
-You can extract the repetitive logic into this `useFormInput` custom Hook:
+Bu tekrarlayan mantΔ±ΔΔ± `useFormInput` ΓΆzel Hook'una Γ§Δ±kartabilirsiniz:
@@ -389,14 +389,14 @@ export default function Form() {
return (
<>
- First name:
+ Δ°sim:
- Last name:
+ Soyisim:
-
Good morning, {firstNameProps.value} {lastNameProps.value}.
>
);
}
@@ -428,9 +428,9 @@ input { margin-left: 10px; }
-Notice that it only declares *one* state variable called `value`.
+`value` adΔ±nda sadece *bir* state deΔiΕkeni oluΕturduΔuna dikkat edin.
-However, the `Form` component calls `useFormInput` *two times:*
+Yine de, `Form` bileΕeni `useFormInput`'u *iki kez* Γ§aΔΔ±rΔ±yor:
```js
function Form() {
@@ -439,17 +439,17 @@ function Form() {
// ...
```
-This is why it works like declaring two separate state variables!
+Bu yΓΌzden iki ayrΔ± state deΔiΕkeni oluΕturmuΕ gibi Γ§alΔ±ΕΔ±yor!
-**Custom Hooks let you share *stateful logic* but not *state itself.* Each call to a Hook is completely independent from every other call to the same Hook.** This is why the two sandboxes above are completely equivalent. If you'd like, scroll back up and compare them. The behavior before and after extracting a custom Hook is identical.
+**Γzel Hook'lar sizin *state'li mantΔ±k* paylaΕmanΔ±za olanak saΔlar, *state'in kendinisi*ni deΔil. Bir Hook'a yapΔ±lan her Γ§aΔrΔ± aynΔ± Hook'a yapΔ±lan tΓΌm Γ§aΔrΔ±lardan baΔΔ±msΔ±zdΔ±r.** Bu nedenle yukarΔ±daki iki kod alanΔ± tamamen eΕdeΔerdir. Δ°sterseniz, yukarΔ± kayarak onlarΔ± karΕΔ±laΕtΔ±rΔ±n. Γzel bir Hook Γ§Δ±kartmadan ΓΆnceki ve sonraki davranΔ±Ε tamamen aynΔ±dΔ±r.
-When you need to share the state itself between multiple components, [lift it up and pass it down](/learn/sharing-state-between-components) instead.
+State'i birden fazla bileΕen arasΔ±nda paylaΕmak istediΔinizde, bunun yerine onu [yukarΔ± taΕΔ±yΔ±n ve aΕaΔΔ± iletin](/learn/sharing-state-between-components).
-## Passing reactive values between Hooks {/*passing-reactive-values-between-hooks*/}
+## Hook'lar arasΔ±nda reaktif deΔerler iletme {/*passing-reactive-values-between-hooks*/}
-The code inside your custom Hooks will re-run during every re-render of your component. This is why, like components, custom Hooks [need to be pure.](/learn/keeping-components-pure) Think of custom Hooks' code as part of your component's body!
+Γzel Hook'larΔ±nΔ±zΔ±n iΓ§indeki kod, bileΕeniniz her yeniden render edildiΔinde yeniden yΓΌrΓΌtΓΌlecektir. Bu nedenle, bileΕenler gibi, ΓΆzel Hook'lar da [saf olmalΔ±dΔ±r.](/learn/keeping-components-pure) Γzel Hook'larΔ±nΔ±zΔ±n kodunu bileΕeninizin bir parΓ§asΔ± olarak dΓΌΕΓΌnΓΌn!
-Because custom Hooks re-render together with your component, they always receive the latest props and state. To see what this means, consider this chat room example. Change the server URL or the chat room:
+Γzel Hook'lar bileΕeninizle birlikte yeniden render edildiΔinden, her zaman en son prop'larΔ± ve state'i alΔ±rlar. Bunun ne anlama geldiΔini gΓΆrmek iΓ§in, bu sohbet odasΔ± ΓΆrneΔini ele alΔ±n. Sunucu URL'sini veya sohbet odasΔ±nΔ± deΔiΕtirin:
@@ -458,18 +458,18 @@ import { useState } from 'react';
import ChatRoom from './ChatRoom.js';
export default function App() {
- const [roomId, setRoomId] = useState('general');
+ const [roomId, setRoomId] = useState('genel');
return (
<>
- Choose the chat room:{' '}
+ Sohbet odasΔ±nΔ± seΓ§iniz:{' '}
@@ -496,7 +496,7 @@ export default function ChatRoom({ roomId }) {
};
const connection = createConnection(options);
connection.on('message', (msg) => {
- showNotification('New message: ' + msg);
+ showNotification('Yeni mesaj: ' + msg);
});
connection.connect();
return () => connection.disconnect();
@@ -505,10 +505,10 @@ export default function ChatRoom({ roomId }) {
return (
<>
- Server URL:
+ Sunucu URL'i:
setServerUrl(e.target.value)} />
-
Welcome to the {roomId} room!
+
{roomId} odasΔ±na hoΕgeldiniz!
>
);
}
@@ -516,25 +516,25 @@ export default function ChatRoom({ roomId }) {
```js src/chat.js
export function createConnection({ serverUrl, roomId }) {
- // A real implementation would actually connect to the server
+ // GerΓ§ek bir uygulama sunucuya gerΓ§ekten baΔlanacaktΔ±r
if (typeof serverUrl !== 'string') {
- throw Error('Expected serverUrl to be a string. Received: ' + serverUrl);
+ throw Error(`serverUrl'in bir string olmasΔ± bekleniyordu. AlΔ±nan: ` + serverUrl);
}
if (typeof roomId !== 'string') {
- throw Error('Expected roomId to be a string. Received: ' + roomId);
+ throw Error(`roomId'nin bir string olmasΔ± bekleniyordu. AlΔ±nan: ` + roomId);
}
let intervalId;
let messageCallback;
return {
connect() {
- console.log('β Connecting to "' + roomId + '" room at ' + serverUrl + '...');
+ console.log('β ' + serverUrl + `'deki ` + roomId + ' odasΔ±na baΔlanΔ±lΔ±yor...')
clearInterval(intervalId);
intervalId = setInterval(() => {
if (messageCallback) {
if (Math.random() > 0.5) {
messageCallback('hey')
} else {
- messageCallback('lol');
+ messageCallback('acayip komik');
}
}
}, 3000);
@@ -542,14 +542,14 @@ export function createConnection({ serverUrl, roomId }) {
disconnect() {
clearInterval(intervalId);
messageCallback = null;
- console.log('β Disconnected from "' + roomId + '" room at ' + serverUrl + '');
+ console.log('β ' + serverUrl + `'deki ` + roomId + ' odasΔ±ndan ayrΔ±lΔ±ndΔ±')
},
on(event, callback) {
if (messageCallback) {
- throw Error('Cannot add the handler twice.');
+ throw Error('Δ°ki kez yΓΆnetici eklenemez.');
}
if (event !== 'message') {
- throw Error('Only "message" event is supported.');
+ throw Error('Sadece "message" olayΔ± destekleniyor.');
}
messageCallback = callback;
},
@@ -599,9 +599,9 @@ button { margin-left: 10px; }
-When you change `serverUrl` or `roomId`, the Effect ["reacts" to your changes](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) and re-synchronizes. You can tell by the console messages that the chat re-connects every time that you change your Effect's dependencies.
+`serverUrl` ya da `roomId`'yi deΔiΕtirdiΔinizde, Efekt [deΔiΕikliklerinize "tepki verir"](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) ve yeniden senkronize olur. Konsol mesajlarΔ±ndan, Efekt'in baΔlΔ± olduΔu deΔerleri her deΔiΕtirdiΔinizde sohbetin yeniden baΔlandΔ±ΔΔ±nΔ± gΓΆrebilirsiniz.
-Now move the Effect's code into a custom Hook:
+Εimdi Efekt'in kodunu ΓΆzel bir Hook'a taΕΔ±yΔ±n:
```js {2-13}
export function useChatRoom({ serverUrl, roomId }) {
@@ -613,14 +613,14 @@ export function useChatRoom({ serverUrl, roomId }) {
const connection = createConnection(options);
connection.connect();
connection.on('message', (msg) => {
- showNotification('New message: ' + msg);
+ showNotification('Yeni mesaj: ' + msg);
});
return () => connection.disconnect();
}, [roomId, serverUrl]);
}
```
-This lets your `ChatRoom` component call your custom Hook without worrying about how it works inside:
+Bu `ChatRoom` bileΕeninizin ΓΆzel Hook'unuzun iΓ§inde nasΔ±l Γ§alΔ±ΕtΔ±ΔΔ±yla ilgilenmeden onu Γ§aΔΔ±rmasΔ±na olanak saΔlar:
```js {4-7}
export default function ChatRoom({ roomId }) {
@@ -634,18 +634,18 @@ export default function ChatRoom({ roomId }) {
return (
<>
- Server URL:
+ Sunucu URL'i:
setServerUrl(e.target.value)} />
-
Welcome to the {roomId} room!
+
{roomId} odasΔ±na hoΕgeldiniz!
>
);
}
```
-This looks much simpler! (But it does the same thing.)
+Bu Γ§ok daha basit gΓΆrΓΌnΓΌyor! (Ama aynΔ± Εeyi yapΔ±yor.)
-Notice that the logic *still responds* to prop and state changes. Try editing the server URL or the selected room:
+MantΔ±ΔΔ±n prop ve state deΔiΕikliklerine *hala tepki verdiΔine* dikkat edin. Sunucu URL'sini veya seΓ§ilen odayΔ± dΓΌzenlemeyi deneyin:
@@ -654,18 +654,18 @@ import { useState } from 'react';
import ChatRoom from './ChatRoom.js';
export default function App() {
- const [roomId, setRoomId] = useState('general');
+ const [roomId, setRoomId] = useState('genel');
return (
<>
- Choose the chat room:{' '}
+ Sohbet odasΔ±nΔ± seΓ§iniz:{' '}
@@ -692,10 +692,10 @@ export default function ChatRoom({ roomId }) {
return (
<>
- Server URL:
+ Sunucu URL'i:
setServerUrl(e.target.value)} />
-
Welcome to the {roomId} room!
+
{roomId} odasΔ±na hoΕgeldiniz!
>
);
}
@@ -715,7 +715,7 @@ export function useChatRoom({ serverUrl, roomId }) {
const connection = createConnection(options);
connection.connect();
connection.on('message', (msg) => {
- showNotification('New message: ' + msg);
+ showNotification('Yeni mesaj: ' + msg);
});
return () => connection.disconnect();
}, [roomId, serverUrl]);
@@ -724,25 +724,25 @@ export function useChatRoom({ serverUrl, roomId }) {
```js src/chat.js
export function createConnection({ serverUrl, roomId }) {
- // A real implementation would actually connect to the server
+ // GerΓ§ek bir uygulama sunucuya gerΓ§ekten baΔlanacaktΔ±r
if (typeof serverUrl !== 'string') {
- throw Error('Expected serverUrl to be a string. Received: ' + serverUrl);
+ throw Error(`serverUrl'in bir string olmasΔ± bekleniyordu. AlΔ±nan: ` + serverUrl);
}
if (typeof roomId !== 'string') {
- throw Error('Expected roomId to be a string. Received: ' + roomId);
+ throw Error(`roomId'nin bir string olmasΔ± bekleniyordu. AlΔ±nan: ` + roomId);
}
let intervalId;
let messageCallback;
return {
connect() {
- console.log('β Connecting to "' + roomId + '" room at ' + serverUrl + '...');
+ console.log('β ' + serverUrl + `'deki ` + roomId + ' odasΔ±na baΔlanΔ±lΔ±yor...')
clearInterval(intervalId);
intervalId = setInterval(() => {
if (messageCallback) {
if (Math.random() > 0.5) {
messageCallback('hey')
} else {
- messageCallback('lol');
+ messageCallback('acayip komik');
}
}
}, 3000);
@@ -750,14 +750,14 @@ export function createConnection({ serverUrl, roomId }) {
disconnect() {
clearInterval(intervalId);
messageCallback = null;
- console.log('β Disconnected from "' + roomId + '" room at ' + serverUrl + '');
+ console.log('β ' + serverUrl + `'deki ` + roomId + ' odasΔ±ndan ayrΔ±lΔ±ndΔ±')
},
on(event, callback) {
if (messageCallback) {
- throw Error('Cannot add the handler twice.');
+ throw Error('Δ°ki kez yΓΆnetici eklenemez.');
}
if (event !== 'message') {
- throw Error('Only "message" event is supported.');
+ throw Error('Sadece "message" olayΔ± destekleniyor.');
}
messageCallback = callback;
},
@@ -807,7 +807,7 @@ button { margin-left: 10px; }
-Notice how you're taking the return value of one Hook:
+Bir Hook'un dΓΆnΓΌΕ deΔerini alΔ±p:
```js {2}
export default function ChatRoom({ roomId }) {
@@ -820,7 +820,7 @@ export default function ChatRoom({ roomId }) {
// ...
```
-and pass it as an input to another Hook:
+ve onu baΕka bir Hook'a girdi olarak vermek:
```js {6}
export default function ChatRoom({ roomId }) {
@@ -833,17 +833,11 @@ export default function ChatRoom({ roomId }) {
// ...
```
-Every time your `ChatRoom` component re-renders, it passes the latest `roomId` and `serverUrl` to your Hook. This is why your Effect re-connects to the chat whenever their values are different after a re-render. (If you ever worked with audio or video processing software, chaining Hooks like this might remind you of chaining visual or audio effects. It's as if the output of `useState` "feeds into" the input of the `useChatRoom`.)
-
-### Passing event handlers to custom Hooks {/*passing-event-handlers-to-custom-hooks*/}
-
-
-
-This section describes an **experimental API that has not yet been released** in a stable version of React.
+`ChatRoom` bileΕeniniz her yeniden render edildiΔinde, `roomId` ve `serverUrl`'in son hallerini Hook'unuza verir. Bu, bir yeniden render'dan sonra deΔerleri her deΔiΕtikten sonra Efekt'inizin sohbete yeniden baΔlanmasΔ±nΔ±n nedenidir. (EΔer ΓΆnceden ses ya da video iΕleme yazΔ±lΔ±mΔ± ile uΔraΕtΔ±ysanΔ±z, Hook'larΔ± bu Εekilde zincirlemek size gΓΆrsel ya da ses Efektlerini zincirlemeyi hatΔ±rlatabilir. Adeta `useState`'in Γ§Δ±ktΔ±sΔ± `useChatRoom`'un girdisine "besleniyor" gibi.)
-
+### Olay yΓΆneticilerini ΓΆzel Hook'lara geΓ§irme {/*passing-event-handlers-to-custom-hooks*/}
-As you start using `useChatRoom` in more components, you might want to let components customize its behavior. For example, currently, the logic for what to do when a message arrives is hardcoded inside the Hook:
+`useChatRoom`'u daha fazla component iΓ§inde kullanmaya baΕladΔ±ΔΔ±nda, component'larΔ±n bu hook'un davranΔ±ΕΔ±nΔ± ΓΆzelleΕtirmesine izin vermek isteyebilirsin. ΓrneΔin, Εu anda bir mesaj geldiΔinde ne yapΔ±lacaΔΔ±na dair mantΔ±k Hook iΓ§inde sabit (hardcoded) durumda:
```js {9-11}
export function useChatRoom({ serverUrl, roomId }) {
@@ -855,14 +849,14 @@ export function useChatRoom({ serverUrl, roomId }) {
const connection = createConnection(options);
connection.connect();
connection.on('message', (msg) => {
- showNotification('New message: ' + msg);
+ showNotification('Yeni mesaj: ' + msg);
});
return () => connection.disconnect();
}, [roomId, serverUrl]);
}
```
-Let's say you want to move this logic back to your component:
+Diyelim ki bu mantΔ±ΔΔ± bileΕeninize geri taΕΔ±mak istiyorsunuz:
```js {7-9}
export default function ChatRoom({ roomId }) {
@@ -872,13 +866,13 @@ export default function ChatRoom({ roomId }) {
roomId: roomId,
serverUrl: serverUrl,
onReceiveMessage(msg) {
- showNotification('New message: ' + msg);
+ showNotification('Yeni mesaj: ' + msg);
}
});
// ...
```
-To make this work, change your custom Hook to take `onReceiveMessage` as one of its named options:
+Bunun Γ§alΔ±ΕmasΔ±nΔ± saΔlamak iΓ§in, ΓΆzel Hook'unuzu adlandΔ±rΔ±lmΔ±Ε seΓ§eneklerinden biri olarak `onReceiveMessage`'Δ± alacak Εekilde deΔiΕtirin:
```js {1,10,13}
export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
@@ -893,13 +887,13 @@ export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
onReceiveMessage(msg);
});
return () => connection.disconnect();
- }, [roomId, serverUrl, onReceiveMessage]); // β All dependencies declared
+ }, [roomId, serverUrl, onReceiveMessage]); // β TΓΌm baΔΔ±mlΔ±lΔ±klar bildirildi
}
```
-This will work, but there's one more improvement you can do when your custom Hook accepts event handlers.
+Bu Γ§alΔ±ΕacaktΔ±r, ancak ΓΆzel Hook'unuz olay yΓΆneticilerini kabul ediyorsa yapabileceΔiniz bir geliΕtirme daha var.
-Adding a dependency on `onReceiveMessage` is not ideal because it will cause the chat to re-connect every time the component re-renders. [Wrap this event handler into an Effect Event to remove it from the dependencies:](/learn/removing-effect-dependencies#wrapping-an-event-handler-from-the-props)
+`onReceiveMessage`'a bir baΔΔ±mlΔ±lΔ±k eklemek ideal deΔildir Γ§ΓΌnkΓΌ bileΕen her yeniden render edildiΔinde sohbetin yeniden baΔlanmasΔ±na neden olacaktΔ±r. [Bu olay yΓΆneticisini baΔΔ±mlΔ±lΔ±klardan Γ§Δ±kartmak iΓ§in bir Efekt OlayΔ±'na sarΔ±n:](/learn/removing-effect-dependencies#wrapping-an-event-handler-from-the-props)
```js {1,4,5,15,18}
import { useEffect, useEffectEvent } from 'react';
@@ -919,11 +913,11 @@ export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
onMessage(msg);
});
return () => connection.disconnect();
- }, [roomId, serverUrl]); // β All dependencies declared
+ }, [roomId, serverUrl]); // β TΓΌm baΔΔ±mlΔ±lΔ±klar bildirildi
}
```
-Now the chat won't re-connect every time that the `ChatRoom` component re-renders. Here is a fully working demo of passing an event handler to a custom Hook that you can play with:
+Εimdi sohbet, `ChatRoom` bileΕeni her yeniden render edildiΔinde yeniden baΔlanmayacaktΔ±r. Burada ΓΆzel bir Hook'a bir olay yΓΆneticisi iletmekle ilgili oynayabileceΔiniz tamamen Γ§alΔ±Εan bir demo var:
@@ -932,18 +926,18 @@ import { useState } from 'react';
import ChatRoom from './ChatRoom.js';
export default function App() {
- const [roomId, setRoomId] = useState('general');
+ const [roomId, setRoomId] = useState('genel');
return (
<>
- Choose the chat room:{' '}
+ Sohbet odasΔ±nΔ± seΓ§iniz:{' '}
@@ -967,17 +961,17 @@ export default function ChatRoom({ roomId }) {
roomId: roomId,
serverUrl: serverUrl,
onReceiveMessage(msg) {
- showNotification('New message: ' + msg);
+ showNotification('Yeni mesaj: ' + msg);
}
});
return (
<>
- Server URL:
+ Sunucu URL'i:
setServerUrl(e.target.value)} />
-
Welcome to the {roomId} room!
+
{roomId} odasΔ±na hoΕgeldiniz!
>
);
}
@@ -985,7 +979,7 @@ export default function ChatRoom({ roomId }) {
```js src/useChatRoom.js
import { useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import { createConnection } from './chat.js';
export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
@@ -1010,23 +1004,23 @@ export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
export function createConnection({ serverUrl, roomId }) {
// A real implementation would actually connect to the server
if (typeof serverUrl !== 'string') {
- throw Error('Expected serverUrl to be a string. Received: ' + serverUrl);
+ throw Error(`serverUrl'in bir string olmasΔ± bekleniyordu. AlΔ±nan: ` + serverUrl);
}
if (typeof roomId !== 'string') {
- throw Error('Expected roomId to be a string. Received: ' + roomId);
+ throw Error(`roomId'nin bir string olmasΔ± bekleniyordu. AlΔ±nan: ` + roomId);
}
let intervalId;
let messageCallback;
return {
connect() {
- console.log('β Connecting to "' + roomId + '" room at ' + serverUrl + '...');
+ console.log('β ' + serverUrl + `'deki ` + roomId + ' odasΔ±na baΔlanΔ±lΔ±yor...');
clearInterval(intervalId);
intervalId = setInterval(() => {
if (messageCallback) {
if (Math.random() > 0.5) {
messageCallback('hey')
} else {
- messageCallback('lol');
+ messageCallback('acayip komik');
}
}
}, 3000);
@@ -1034,14 +1028,14 @@ export function createConnection({ serverUrl, roomId }) {
disconnect() {
clearInterval(intervalId);
messageCallback = null;
- console.log('β Disconnected from "' + roomId + '" room at ' + serverUrl + '');
+ console.log('β ' + serverUrl + `'deki ` + roomId + ' odasΔ±ndan ayrΔ±lΔ±ndΔ±')
},
on(event, callback) {
if (messageCallback) {
- throw Error('Cannot add the handler twice.');
+ throw Error('Δ°ki kez yΓΆnetici eklenemez.');
}
if (event !== 'message') {
- throw Error('Only "message" event is supported.');
+ throw Error('Sadece "message" olayΔ± destekleniyor.');
}
messageCallback = callback;
},
@@ -1070,8 +1064,8 @@ export function showNotification(message, theme = 'dark') {
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -1091,20 +1085,20 @@ button { margin-left: 10px; }
-Notice how you no longer need to know *how* `useChatRoom` works in order to use it. You could add it to any other component, pass any other options, and it would work the same way. That's the power of custom Hooks.
+`useChatRoom`'un nasΔ±l Γ§alΔ±ΕtΔ±ΔΔ±nΔ± artΔ±k bilmenize gerek olmadΔ±ΔΔ±nΔ± farkedin. Onu herhangi bir baΕka bileΕene ekleyebilir, herhangi baΕka seΓ§enekler iletebilirsiniz, aynΔ± Εekilde Γ§alΔ±ΕacaktΔ±r. Bu ΓΆzel Hook'larΔ±n gΓΌcΓΌdΓΌr.
-## When to use custom Hooks {/*when-to-use-custom-hooks*/}
+## Γzel Hook'lar ne zaman kullanΔ±lmalΔ±dΔ±r {/*when-to-use-custom-hooks*/}
-You don't need to extract a custom Hook for every little duplicated bit of code. Some duplication is fine. For example, extracting a `useFormInput` Hook to wrap a single `useState` call like earlier is probably unnecessary.
+Her ufak tekrarlanan kod parΓ§asΔ± iΓ§in bir ΓΆzel Hook Γ§Δ±karmanΔ±za gerek yok. BazΔ± tekrarlanmalar sorun deΔildir. ΓrneΔin, yukarΔ±daki gibi tek bir `useState` Γ§aΔrΔ±sΔ±nΔ± saran bir `useFormInput` Hook'u Γ§Δ±kartmak muhtemelen gereksizdir.
-However, whenever you write an Effect, consider whether it would be clearer to also wrap it in a custom Hook. [You shouldn't need Effects very often,](/learn/you-might-not-need-an-effect) so if you're writing one, it means that you need to "step outside React" to synchronize with some external system or to do something that React doesn't have a built-in API for. Wrapping it into a custom Hook lets you precisely communicate your intent and how the data flows through it.
+Ancak, her Efekt yazdΔ±ΔΔ±nΔ±zda, onu ΓΆzel bir Hook'a sarmanΔ±n daha net olup olmayacaΔΔ±nΔ± dΓΌΕΓΌnΓΌn. [Efekt'lere Γ§ok sΔ±k ihtiyacΔ±nΔ±z olmamalΔ±](/learn/you-might-not-need-an-effect) yani eΔer bir Efekt yazΔ±yorsanΔ±z, bu "React'ten dΔ±ΕarΔ± Γ§Δ±kmak" ve bazΔ± harici sistemlerle senkronize olmanΔ±z ya da React'in dahili bir API'sinin saΔlamadΔ±ΔΔ± bir Εeyi yapmanΔ±z gerektiΔi anlamΔ±na gelir. Onu ΓΆzel bir Hook'a sararak, niyetinizi ve verinin onun iΓ§inden nasΔ±l aktΔ±ΔΔ±na dair bilgiyi net bir Εekilde iletebilirsiniz.
-For example, consider a `ShippingForm` component that displays two dropdowns: one shows the list of cities, and another shows the list of areas in the selected city. You might start with some code that looks like this:
+ΓrneΔin, iki aΓ§Δ±lΔ±r menΓΌ bileΕenini gΓΆsteren bir `ShippingForm` bileΕenini ele alΔ±n: birisi Εehirlerin listesini, diΔeri seΓ§ilen Εehirdeki alanlarΔ±n listesini gΓΆstersin. ΕΓΆyle bir kodla baΕlayabilirsiniz:
```js {3-16,20-35}
function ShippingForm({ country }) {
const [cities, setCities] = useState(null);
- // This Effect fetches cities for a country
+ // Bu Efekt bir ΓΌlke iΓ§in Εehirleri Γ§eker
useEffect(() => {
let ignore = false;
fetch(`/api/cities?country=${country}`)
@@ -1121,7 +1115,7 @@ function ShippingForm({ country }) {
const [city, setCity] = useState(null);
const [areas, setAreas] = useState(null);
- // This Effect fetches areas for the selected city
+ // Bu Efekt seΓ§ilen Εehir iΓ§in alanlarΔ± Γ§eker
useEffect(() => {
if (city) {
let ignore = false;
@@ -1141,7 +1135,7 @@ function ShippingForm({ country }) {
// ...
```
-Although this code is quite repetitive, [it's correct to keep these Effects separate from each other.](/learn/removing-effect-dependencies#is-your-effect-doing-several-unrelated-things) They synchronize two different things, so you shouldn't merge them into one Effect. Instead, you can simplify the `ShippingForm` component above by extracting the common logic between them into your own `useData` Hook:
+Bu kod biraz tekrarlayΔ±cΔ± olsa da, [bu Efekt'leri birbirinden ayrΔ± tutmak doΔrudur.](/learn/removing-effect-dependencies#is-your-effect-doing-several-unrelated-things) Δ°ki farklΔ± Εeyi senkronize ediyorlar, bu yΓΌzden onlarΔ± tek bir Efekt'e birleΕtirmemelisiniz. Bunun yerine, yukarΔ±daki `ShippingForm` bileΕenini aralarΔ±ndaki ortak mantΔ±ΔΔ± kendi `useData` Hook'unuza Γ§Δ±kartarak basitleΕtirebilirsiniz:
```js {2-18}
function useData(url) {
@@ -1165,7 +1159,7 @@ function useData(url) {
}
```
-Now you can replace both Effects in the `ShippingForm` components with calls to `useData`:
+Εimdi `ShippingForm` iΓ§indeki her iki Efekt'i de `useData`'nΔ±n Γ§aΔrΔ±larΔ±yla deΔiΕtirebilirsiniz:
```js {2,4}
function ShippingForm({ country }) {
@@ -1175,39 +1169,41 @@ function ShippingForm({ country }) {
// ...
```
-Extracting a custom Hook makes the data flow explicit. You feed the `url` in and you get the `data` out. By "hiding" your Effect inside `useData`, you also prevent someone working on the `ShippingForm` component from adding [unnecessary dependencies](/learn/removing-effect-dependencies) to it. With time, most of your app's Effects will be in custom Hooks.
+Bir ΓΆzel Hook Γ§Δ±karmak veri akΔ±ΕΔ±nΔ± aΕikΓ’r hale getirir. `url`'i iΓ§eri beslersiniz ve `data`'yΔ± dΔ±ΕarΔ± alΔ±rsΔ±nΔ±z. Efekt'inizi `useData`'nΔ±n iΓ§ine "gizleyerek", `ShippingForm` bileΕeninde Γ§alΔ±Εan birinin ona [gereksiz baΔΔ±mlΔ±lΔ±klar](/learn/removing-effect-dependencies) eklemesini de engellersiniz. Zamanla, uygulamanΔ±zΔ±n Γ§oΔu Efekti ΓΆzel Hook'larda olacaktΔ±r.
-#### Keep your custom Hooks focused on concrete high-level use cases {/*keep-your-custom-hooks-focused-on-concrete-high-level-use-cases*/}
+#### Γzel Hook'larΔ±nΔ±zΔ± somut yΓΌksek seviyeli kullanΔ±m durumlarΔ±na odaklΔ± tutun {/*keep-your-custom-hooks-focused-on-concrete-high-level-use-cases*/}
-Start by choosing your custom Hook's name. If you struggle to pick a clear name, it might mean that your Effect is too coupled to the rest of your component's logic, and is not yet ready to be extracted.
+Γzel Hook'unuzun adΔ±nΔ± seΓ§erek baΕlayΔ±n. EΔer net bir isim seΓ§mekte zorlanΔ±yorsanΔ±z, bu Efek'inizin bileΕeninizin geri kalan mantΔ±ΔΔ±na Γ§ok baΔlΔ± olduΔu ve henΓΌz Γ§Δ±kartΔ±lmaya hazΔ±r olmadΔ±ΔΔ± anlamΔ±na gelebilir.
-Ideally, your custom Hook's name should be clear enough that even a person who doesn't write code often could have a good guess about what your custom Hook does, what it takes, and what it returns:
+Δ°deal olarak, ΓΆzel Hook'unuzun adΔ± kod yazmayan bir kiΕinin bile ne yaptΔ±ΔΔ±nΔ±, ne aldΔ±ΔΔ±nΔ± ve ne dΓΆndΓΌrdΓΌΔΓΌnΓΌ tahmin edebileceΔi kadar aΓ§Δ±k olmalΔ±dΔ±r:
* β `useData(url)`
* β `useImpressionLog(eventName, extraData)`
* β `useChatRoom(options)`
-When you synchronize with an external system, your custom Hook name may be more technical and use jargon specific to that system. It's good as long as it would be clear to a person familiar with that system:
+DΔ±Ε bir sistemle senkronize olduΔunuzda, ΓΆzel Hook adΔ±nΔ±z daha teknik olabilir ve o sisteme ΓΆzel jargon kullanabilir. Bu, o sisteme aΕina bir kiΕi iΓ§in aΓ§Δ±k olduΔu sΓΌrece sorun deΔildir:
* β `useMediaQuery(query)`
* β `useSocket(url)`
* β `useIntersectionObserver(ref, options)`
-**Keep custom Hooks focused on concrete high-level use cases.** Avoid creating and using custom "lifecycle" Hooks that act as alternatives and convenience wrappers for the `useEffect` API itself:
+**Γzel Hook'larΔ±n somut ΓΌst dΓΌzey kullanΔ±m durumlarΔ±na odaklanmasΔ±nΔ± saΔlayΔ±n.** UseEffect` API'sinin kendisi iΓ§in alternatif ve kolaylΔ±k saΔlayan sarmalayΔ±cΔ±lar olarak hareket eden ΓΆzel βyaΕam dΓΆngΓΌsΓΌβ Hook'larΔ± oluΕturmaktan ve kullanmaktan kaΓ§Δ±nΔ±n:
+
+**Γzel Hook'larΔ±nΔ±zΔ± somut yΓΌksek seviyeli kullanΔ±m durumlarΔ±na odaklΔ± tutun.** `useEffect` API'sinin kendisi iΓ§in alternatifler ve kolaylΔ±k sarΔ±cΔ±larΔ± olan ΓΆzel "lifecycle" Hook'larΔ± oluΕturmayΔ±n ve kullanmayΔ±n:
* π΄ `useMount(fn)`
* π΄ `useEffectOnce(fn)`
* π΄ `useUpdateEffect(fn)`
-For example, this `useMount` Hook tries to ensure some code only runs "on mount":
+ΓrneΔin, bu `useMount` Hook'u bazΔ± kodun sadece "mount" sΔ±rasΔ±nda Γ§alΔ±ΕmasΔ±nΔ± saΔlamaya Γ§alΔ±ΕΔ±r:
```js {4-5,14-15}
function ChatRoom({ roomId }) {
const [serverUrl, setServerUrl] = useState('https://localhost:1234');
- // π΄ Avoid: using custom "lifecycle" Hooks
+ // π΄ KaΓ§Δ±nΔ±n: ΓΆzel "lifecycle" Hook'larΔ± kullanmak
useMount(() => {
const connection = createConnection({ roomId, serverUrl });
connection.connect();
@@ -1217,23 +1213,23 @@ function ChatRoom({ roomId }) {
// ...
}
-// π΄ Avoid: creating custom "lifecycle" Hooks
+// π΄ KaΓ§Δ±nΔ±n: ΓΆzel "lifecycle" Hook'larΔ± oluΕturmak
function useMount(fn) {
useEffect(() => {
fn();
- }, []); // π΄ React Hook useEffect has a missing dependency: 'fn'
+ }, []); // π΄ React Hook'u useEffect'in bir baΔΔ±mlΔ±lΔ±ΔΔ± eksik: 'fn'
}
```
-**Custom "lifecycle" Hooks like `useMount` don't fit well into the React paradigm.** For example, this code example has a mistake (it doesn't "react" to `roomId` or `serverUrl` changes), but the linter won't warn you about it because the linter only checks direct `useEffect` calls. It won't know about your Hook.
+**`useMount` gibi ΓΆzel "lifecycle" Hook'larΔ± React paradigmasΔ±na pek iyi uymaz.** ΓrneΔin, bu kod ΓΆrneΔinde bir hata var (`roomId` ya da `serverUrl`'deki deΔiΕikliklere "tepki" vermiyor), ama linter sizi bunun hakkΔ±nda uyarmayacaktΔ±r, Γ§ΓΌnkΓΌ linter sadece doΔrudan `useEffect` Γ§aΔrΔ±larΔ±nΔ± kontrol eder. Hook'unuz hakkΔ±nda bilgisi olmayacaktΔ±r.
-If you're writing an Effect, start by using the React API directly:
+EΔer bir Efekt yazΔ±yorsanΔ±z, React API'sini doΔrudan kullanarak baΕlayΔ±n:
```js
function ChatRoom({ roomId }) {
const [serverUrl, setServerUrl] = useState('https://localhost:1234');
- // β Good: two raw Effects separated by purpose
+ // β Δ°yi: amaΓ§larΔ±na gΓΆre ayrΔ±lmΔ±Ε iki saf Efekt
useEffect(() => {
const connection = createConnection({ serverUrl, roomId });
@@ -1249,28 +1245,28 @@ function ChatRoom({ roomId }) {
}
```
-Then, you can (but don't have to) extract custom Hooks for different high-level use cases:
+Sonra, farklΔ± yΓΌksek seviyeli kullanΔ±m durumlarΔ± iΓ§in ΓΆzel Hook'lar Γ§Δ±kartabilirsiniz (ama Γ§Δ±kartmak zorunda deΔilsiniz):
```js
function ChatRoom({ roomId }) {
const [serverUrl, setServerUrl] = useState('https://localhost:1234');
- // β Great: custom Hooks named after their purpose
+ // β Δ°yi: amaΓ§larΔ±na gΓΆre adlandΔ±rΔ±lmΔ±Ε ΓΆzel Hook'lar
useChatRoom({ serverUrl, roomId });
useImpressionLog('visit_chat', { roomId });
// ...
}
```
-**A good custom Hook makes the calling code more declarative by constraining what it does.** For example, `useChatRoom(options)` can only connect to the chat room, while `useImpressionLog(eventName, extraData)` can only send an impression log to the analytics. If your custom Hook API doesn't constrain the use cases and is very abstract, in the long run it's likely to introduce more problems than it solves.
+**Δ°yi bir ΓΆzel Hook Γ§aΔΔ±ran kodun ne yaptΔ±ΔΔ±nΔ± sΔ±nΔ±rlandΔ±rarak daha bildirimsel bir hale getirir.** ΓrneΔin, `useChatRoom(options)` sadece sohbet odasΔ±na baΔlanabilirken, `useImpressionLog(eventName, extraData)` analitiklere bir izlenim kaydΔ± gΓΆnderebilir. EΔer ΓΆzel Hook API'nΔ±z kullanΔ±m durumlarΔ±nΔ± sΔ±nΔ±rlandΔ±rmΔ±yorsa ve Γ§ok soyutsa, uzun vadede Γ§ΓΆzdΓΌΔΓΌnden daha fazla sorun yaratabilir.
-### Custom Hooks help you migrate to better patterns {/*custom-hooks-help-you-migrate-to-better-patterns*/}
+### Γzel Hook'lar daha iyi kalΔ±plara geΓ§iΕ yapmanΔ±za yardΔ±mcΔ± olur {/*custom-hooks-help-you-migrate-to-better-patterns*/}
-Effects are an ["escape hatch"](/learn/escape-hatches): you use them when you need to "step outside React" and when there is no better built-in solution for your use case. With time, the React team's goal is to reduce the number of the Effects in your app to the minimum by providing more specific solutions to more specific problems. Wrapping your Effects in custom Hooks makes it easier to upgrade your code when these solutions become available.
+Efekt'ler bir ["kaΓ§Δ±Ε yolu"](/learn/escape-hatches)'dur: Efekt'leri "React'ten dΔ±ΕarΔ± Γ§Δ±kmak" zorunda kaldΔ±ΔΔ±nΔ±zda ve daha iyi bir yerleΕik Γ§ΓΆzΓΌm olmadΔ±ΔΔ±nda kullanΔ±rsΔ±nΔ±z. Zamanla, React ekibinin amacΔ± daha spesifik problemlere daha spesifik Γ§ΓΆzΓΌmler saΔlayarak uygulamanΔ±zdaki Efekt'lerin sayΔ±sΔ±nΔ± minimuma indirmektir. Efekt'lerinizi ΓΆzel Hook'larla sarmak, bu Γ§ΓΆzΓΌmler mevcut olduΔunda kodunuzu gΓΌncellemeyi kolaylaΕtΔ±rΔ±r.
-Let's return to this example:
+Εu ΓΆrneΔe geri dΓΆnelim:
@@ -1279,19 +1275,19 @@ import { useOnlineStatus } from './useOnlineStatus.js';
function StatusBar() {
const isOnline = useOnlineStatus();
- return
;
}
function SaveButton() {
const isOnline = useOnlineStatus();
function handleSaveClick() {
- console.log('β Progress saved');
+ console.log('β Δ°lerleme kaydedildi');
}
return (
- {isOnline ? 'Save progress' : 'Reconnecting...'}
+ {isOnline ? 'Δ°lerlemeyi kaydet' : 'Tekrar baΔlanΔ±lΔ±yor...'}
);
}
@@ -1331,9 +1327,9 @@ export function useOnlineStatus() {
-In the above example, `useOnlineStatus` is implemented with a pair of [`useState`](/reference/react/useState) and [`useEffect`.](/reference/react/useEffect) However, this isn't the best possible solution. There is a number of edge cases it doesn't consider. For example, it assumes that when the component mounts, `isOnline` is already `true`, but this may be wrong if the network already went offline. You can use the browser [`navigator.onLine`](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine) API to check for that, but using it directly would not work on the server for generating the initial HTML. In short, this code could be improved.
+YukarΔ±daki ΓΆrnekte, `useOnlineStatus`, [`useState`](/reference/react/useState) ve [`useEffect`.](/reference/react/useEffect) ikilisi kullanΔ±larak oluΕturulmuΕtur. Ancak, bu en iyi muhtemel Γ§ΓΆzΓΌm deΔildir. Dikkate alΔ±nmayan birΓ§ok uΓ§ senaryo vardΔ±r. ΓrneΔin, bileΕen DOM'a eklendiΔinde, `isOnline`'Δ±n halihazΔ±rda `true` olacaΔΔ±nΔ± varsayar, ancak aΔ halihazΔ±rda Γ§evrimdΔ±ΕΔ± olduΔunda bu yanlΔ±Ε olabilir. Bu durumu kontrol etmek iΓ§in tarayΔ±cΔ±nΔ±n [`navigator.onLine`](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine) API'sini kullanabilirsiniz, ancak bunu doΔrudan kullanmak ilk HTML'i sunucuda oluΕturmak iΓ§in Γ§alΔ±ΕmayacaktΔ±r. KΔ±sacasΔ±, bu kod geliΕtirilebilir.
-Luckily, React 18 includes a dedicated API called [`useSyncExternalStore`](/reference/react/useSyncExternalStore) which takes care of all of these problems for you. Here is how your `useOnlineStatus` Hook, rewritten to take advantage of this new API:
+React, tΓΌm bu sorunlarΔ± sizin iΓ§in Γ§ΓΆzen ΓΆzel bir API olan [`useSyncExternalStore`](/reference/react/useSyncExternalStore) adlΔ± bir yapΔ± sunar. Δ°Εte bu yeni API'den faydalanacak Εekilde yeniden yazΔ±lmΔ±Ε `useOnlineStatus` Hook'u:
@@ -1342,19 +1338,19 @@ import { useOnlineStatus } from './useOnlineStatus.js';
function StatusBar() {
const isOnline = useOnlineStatus();
- return
;
}
function SaveButton() {
const isOnline = useOnlineStatus();
function handleSaveClick() {
- console.log('β Progress saved');
+ console.log('β Δ°lerleme kaydedildi');
}
return (
- {isOnline ? 'Save progress' : 'Reconnecting...'}
+ {isOnline ? 'Δ°lerlemeyi kaydet' : 'Tekrar baΔlanΔ±lΔ±yor...'}
);
}
@@ -1384,8 +1380,8 @@ function subscribe(callback) {
export function useOnlineStatus() {
return useSyncExternalStore(
subscribe,
- () => navigator.onLine, // How to get the value on the client
- () => true // How to get the value on the server
+ () => navigator.onLine, // Δ°stemci tarafΔ±nda deΔerin ne olacaΔΔ±
+ () => true // Sunucu tarafΔ±nda deΔerin ne olacaΔΔ±
);
}
@@ -1393,7 +1389,7 @@ export function useOnlineStatus() {
-Notice how **you didn't need to change any of the components** to make this migration:
+Bu deΔiΕikliΔi yapmak iΓ§in **herhangi bir bileΕeni deΔiΕtirmeye ihtiyacΔ±nΔ±z olmadΔ±ΔΔ±nΔ±** farkedin:
```js {2,7}
function StatusBar() {
@@ -1407,22 +1403,41 @@ function SaveButton() {
}
```
-This is another reason for why wrapping Effects in custom Hooks is often beneficial:
+Efektleri ΓΆzel hook'lara sarmanΔ±n genellikle faydalΔ± olmasΔ±nΔ±n baΕka bir nedeni budur:
-1. You make the data flow to and from your Effects very explicit.
-2. You let your components focus on the intent rather than on the exact implementation of your Effects.
-3. When React adds new features, you can remove those Effects without changing any of your components.
+1. Efektlerinizin iΓ§ine ve Efekt'lerinizden dΔ±ΕarΔ± akan veriyi oldukΓ§a belirgin hale getirirsiniz.
+2. BileΕenlerinizin, Efektlerinizin nasΔ±l Γ§alΔ±ΕtΔ±ΔΔ±ndan ziyade ne yapmak istediΔine odaklanmasΔ±nΔ± saΔlarsΔ±nΔ±z.
+3. React yeni ΓΆzellikler eklediΔinde, bu Efekt'leri bileΕenlerinizde herhangi bir deΔiΕiklik yapmadan kaldΔ±rabilirsiniz.
-Similar to a [design system,](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969) you might find it helpful to start extracting common idioms from your app's components into custom Hooks. This will keep your components' code focused on the intent, and let you avoid writing raw Effects very often. Many excellent custom Hooks are maintained by the React community.
+Bir [tasarΔ±m sistemine](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969) benzer olarak, uygulamanΔ±zdaki bileΕenlerde bulunan ortak kalΔ±plarΔ± ΓΆzel hook'lara Γ§Δ±kartmaya baΕlamayΔ± faydalΔ± bulabilirsiniz. Bu, bileΕenlerinizin kodunu niyete odaklΔ± tutar ve sΔ±k sΔ±k ham Efektler yazmaktan kaΓ§Δ±nmanΔ±zΔ± saΔlar. Pek Γ§ok muazzam ΓΆzel hook'lar React topluluΔu tarafΔ±ndan sΓΌrdΓΌrΓΌlmektedir.
-#### Will React provide any built-in solution for data fetching? {/*will-react-provide-any-built-in-solution-for-data-fetching*/}
+#### React veri getirme iΓ§in herhangi bir yerleΕik Γ§ΓΆzΓΌm saΔlayacak mΔ±? {/*will-react-provide-any-built-in-solution-for-data-fetching*/}
+
+BugΓΌn, [`use`](/reference/react/use#streaming-data-from-server-to-client) APIβsi ile, bir [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) `use`βa geΓ§irilerek render sΔ±rasΔ±nda veri okunabilir:
+
+```js {1,4,11}
+import { use, Suspense } from "react";
+
+function Message({ messagePromise }) {
+ const messageContent = use(messagePromise);
+ return
Here is the message: {messageContent}
;
+}
+
+export function MessageContainer({ messagePromise }) {
+ return (
+ βDownloading message...}>
+
+
+ );
+}
+```
We're still working out the details, but we expect that in the future, you'll write data fetching like this:
```js {1,4,6}
-import { use } from 'react'; // Not available yet!
+import { use } from 'react';
function ShippingForm({ country }) {
const cities = use(fetch(`/api/cities?country=${country}`));
@@ -1431,13 +1446,13 @@ function ShippingForm({ country }) {
// ...
```
-If you use custom Hooks like `useData` above in your app, it will require fewer changes to migrate to the eventually recommended approach than if you write raw Effects in every component manually. However, the old approach will still work fine, so if you feel happy writing raw Effects, you can continue to do that.
+EΔer `useData` gibi ΓΆzel hooklarΔ± uygulamanΔ±zda kullanΔ±yorsanΔ±z, neticede ΓΆnerilen yaklaΕΔ±ma geΓ§iΕ yapmak iΓ§in her bileΕende manuel olarak ham Efektler yazΔ±lan bir yaklaΕΔ±ma gΓΆre daha az deΔiΕiklik gerekecektir. Ancak, eski yaklaΕΔ±m hala sorunsuz Γ§alΔ±ΕacaktΔ±r, yani ham Efektler yazmaktan mutluysanΔ±z, bunu yapmaya devam edebilirsiniz.
-### There is more than one way to do it {/*there-is-more-than-one-way-to-do-it*/}
+### YapmanΔ±n birden fazla yolu vardΔ±r {/*there-is-more-than-one-way-to-do-it*/}
-Let's say you want to implement a fade-in animation *from scratch* using the browser [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) API. You might start with an Effect that sets up an animation loop. During each frame of the animation, you could change the opacity of the DOM node you [hold in a ref](/learn/manipulating-the-dom-with-refs) until it reaches `1`. Your code might start like this:
+Diyelim ki tarayΔ±cΔ± [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) API'sini kullanarak *sΔ±fΔ±rdan* bir fade-in animasyonu yapmak istiyorsunuz. Bir animasyon dΓΆngΓΌsΓΌ kuracak bir Efekt ile baΕlayabilirsiniz. Animasyonun her bir karesinde, bir [ref'te](/learn/manipulating-the-dom-with-refs) tuttuΔunuz DOM node'unun opaklΔ±ΔΔ±nΔ± `1` olana kadar deΔiΕtirebilirsiniz. Kodunuz ΕΓΆyle baΕlayabilir:
@@ -1459,7 +1474,7 @@ function Welcome() {
const progress = Math.min(timePassed / duration, 1);
onProgress(progress);
if (progress < 1) {
- // We still have more frames to paint
+ // Hala boyama yapΔ±lacak kare var
frameId = requestAnimationFrame(onFrame);
}
}
@@ -1486,7 +1501,7 @@ function Welcome() {
return (
- Welcome
+ HoΕgeldiniz
);
}
@@ -1496,7 +1511,7 @@ export default function App() {
return (
<>
setShow(!show)}>
- {show ? 'Remove' : 'Show'}
+ {show ? 'KaldΔ±r' : 'GΓΆster'}
{show && }
@@ -1520,7 +1535,7 @@ html, body { min-height: 300px; }
-To make the component more readable, you might extract the logic into a `useFadeIn` custom Hook:
+BileΕeni daha okunabilir yapmak adΔ±na, mantΔ±ΔΔ± `useFadeIn` adΔ±nda ΓΆzel bir Hook'a Γ§Δ±karabilirsiniz:
@@ -1535,7 +1550,7 @@ function Welcome() {
return (
- Welcome
+ HoΕgeldiniz
);
}
@@ -1545,7 +1560,7 @@ export default function App() {
return (
<>
setShow(!show)}>
- {show ? 'Remove' : 'Show'}
+ {show ? 'KaldΔ±r' : 'GΓΆster'}
{show && }
@@ -1569,7 +1584,7 @@ export function useFadeIn(ref, duration) {
const progress = Math.min(timePassed / duration, 1);
onProgress(progress);
if (progress < 1) {
- // We still have more frames to paint
+ // Hala boyama yapΔ±lacak kare var
frameId = requestAnimationFrame(onFrame);
}
}
@@ -1611,7 +1626,7 @@ html, body { min-height: 300px; }
-You could keep the `useFadeIn` code as is, but you could also refactor it more. For example, you could extract the logic for setting up the animation loop out of `useFadeIn` into a custom `useAnimationLoop` Hook:
+`useFadeIn` kodunu olduΔu gibi bΔ±rakabilirsiniz, ancak daha fazla refaktΓΆr yapabilirsiniz. ΓrneΔin, animasyon dΓΆngΓΌsΓΌnΓΌ kurma mantΔ±ΔΔ±nΔ± `useFadeIn`'den Γ§Δ±karΔ±p ΓΆzel bir `useAnimationLoop` Hook'a Γ§Δ±karabilirsiniz:
@@ -1626,7 +1641,7 @@ function Welcome() {
return (
- Welcome
+ HoΕgeldiniz
);
}
@@ -1636,7 +1651,7 @@ export default function App() {
return (
<>
setShow(!show)}>
- {show ? 'Remove' : 'Show'}
+ {show ? 'KaldΔ±r' : 'GΓΆster'}
{show && }
@@ -1647,7 +1662,7 @@ export default function App() {
```js src/useFadeIn.js active
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export function useFadeIn(ref, duration) {
const [isRunning, setIsRunning] = useState(true);
@@ -1697,25 +1712,11 @@ html, body { min-height: 300px; }
}
```
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
-However, you didn't *have to* do that. As with regular functions, ultimately you decide where to draw the boundaries between different parts of your code. You could also take a very different approach. Instead of keeping the logic in the Effect, you could move most of the imperative logic inside a JavaScript [class:](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)
+Ancak, bunu yapmak *zorunda* deΔilsiniz. Normal fonksiyonlarda olduΔu gibi, kodunuzun farklΔ± bΓΆlΓΌmleri arasΔ±ndaki sΔ±nΔ±rlarΔ±n nerede Γ§izileceΔine nihayetinde siz karar verirsiniz.. Γok farklΔ± bir yaklaΕΔ±m da benimseyebilirsiniz. MantΔ±ΔΔ± Efekt iΓ§inde tutmak yerine, zorunlu mantΔ±ΔΔ±n Γ§oΔunu bir JavaScript [sΔ±nΔ±f:](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) iΓ§ine taΕΔ±yabilirsiniz.
+
+Ancak, bunu yapmak *zorunda* deΔildiniz. Normal fonksiyonlarda olduΔu gibi, sonuΓ§ta kodunuzun farklΔ± parΓ§alarΔ± arasΔ±ndaki sΔ±nΔ±rlarΔ± nerede Γ§izeceΔinize siz karar verirsiniz. Γok farklΔ± bir yaklaΕΔ±m da seΓ§ebilirsiniz. MantΔ±ΔΔ± Efekt'te tutmak yerine, mantΔ±ΔΔ±n bΓΌyΓΌk bir kΔ±smΔ±nΔ± bir JavaScript [sΔ±nΔ±fΔ±na](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) taΕΔ±yabilirsiniz:
@@ -1730,7 +1731,7 @@ function Welcome() {
return (
- Welcome
+ HoΕgeldiniz
);
}
@@ -1740,7 +1741,7 @@ export default function App() {
return (
<>
setShow(!show)}>
- {show ? 'Remove' : 'Show'}
+ {show ? 'KaldΔ±r' : 'GΓΆster'}
{show && }
@@ -1782,7 +1783,7 @@ export class FadeInAnimation {
if (progress === 1) {
this.stop();
} else {
- // We still have more frames to paint
+ // Hala boyama yapΔ±lacak kare var
this.frameId = requestAnimationFrame(() => this.onFrame());
}
}
@@ -1813,9 +1814,9 @@ html, body { min-height: 300px; }
-Effects let you connect React to external systems. The more coordination between Effects is needed (for example, to chain multiple animations), the more it makes sense to extract that logic out of Effects and Hooks *completely* like in the sandbox above. Then, the code you extracted *becomes* the "external system". This lets your Effects stay simple because they only need to send messages to the system you've moved outside React.
+Efekt'ler, React'i dΔ±Ε sistemlere baΔlamanΔ±za olanak tanΔ±r. Daha fazla Efekt koordinasyonu gerektiΔinde (ΓΆrneΔin, birden fazla animasyonu zincirlemek iΓ§in), yukarΔ±daki ΓΆrnekte olduΔu gibi mantΔ±ΔΔ± Efekt'lerden ve Hook'lardan *tamamen* Γ§Δ±karmanΔ±z daha mantΔ±klΔ± hale gelir. ArdΔ±ndan, Γ§Δ±karttΔ±ΔΔ±nΔ±z kod "dΔ±Ε sistem" *haline gelir*. Bu, Efekt'lerinizin sade kalmasΔ±nΔ± saΔlar Γ§ΓΌnkΓΌ sadece React dΔ±ΕΔ±na taΕΔ±dΔ±ΔΔ±nΔ±z sisteme mesaj gΓΆndermeleri gerekir.
-The examples above assume that the fade-in logic needs to be written in JavaScript. However, this particular fade-in animation is both simpler and much more efficient to implement with a plain [CSS Animation:](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations)
+YukarΔ±daki ΓΆrnekler fade-in mantΔ±ΔΔ±nΔ±n JavaScript'te yapΔ±lmasΔ± gerektiΔini varsayar. Ancak, bu ΓΆzel fade-in animasyonunu dΓΌz [CSS Animasyonu](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations) ile uygulamak hem daha basit hem de Γ§ok daha verimlidir:
@@ -1826,7 +1827,7 @@ import './welcome.css';
function Welcome() {
return (
- Welcome
+ HoΕgeldiniz
);
}
@@ -1836,7 +1837,7 @@ export default function App() {
return (
<>
setShow(!show)}>
- {show ? 'Remove' : 'Show'}
+ {show ? 'KaldΔ±r' : 'GΓΆster'}
{show && }
@@ -1870,36 +1871,36 @@ html, body { min-height: 300px; }
-Sometimes, you don't even need a Hook!
+Bazen, bir Hook'a bile ihtiyacΔ±nΔ±z olmayabilir!
-- Custom Hooks let you share logic between components.
-- Custom Hooks must be named starting with `use` followed by a capital letter.
-- Custom Hooks only share stateful logic, not state itself.
-- You can pass reactive values from one Hook to another, and they stay up-to-date.
-- All Hooks re-run every time your component re-renders.
-- The code of your custom Hooks should be pure, like your component's code.
-- Wrap event handlers received by custom Hooks into Effect Events.
-- Don't create custom Hooks like `useMount`. Keep their purpose specific.
-- It's up to you how and where to choose the boundaries of your code.
+- Γzel Hook'lar, bileΕenler arasΔ±nda mantΔ±ΔΔ± paylaΕmanΔ±za olanak tanΔ±r.
+- Γzel Hook'larΔ±n isimleri `use` ile baΕlamalΔ± ve bir bΓΌyΓΌk harfle devam etmelidir.
+- Γzel Hook'lar sadece state'li mantΔ±ΔΔ± paylaΕΔ±r, state'in kendisini deΔil.
+- Reaktif deΔerleri bir Hook'tan diΔerine paslayabilirsiniz ve bunlar gΓΌncel kalΔ±rlar.
+- TΓΌm Hook'lar, bileΕeniniz yeniden renderlandΔ±ΔΔ±nda her zaman yeniden Γ§alΔ±ΕΔ±r.
+- Γzel Hook'larΔ±nΔ±zΔ±n kodu, bileΕeninizin kodu gibi saf olmalΔ±dΔ±r.
+- Γzel Hook'lar tarafΔ±ndan alΔ±nan olay yΓΆneticilerini Efekt olaylarΔ±na sarΔ±n.
+- `useMount` gibi ΓΆzel Hook'lar oluΕturmayΔ±n. AmaΓ§larΔ±nΔ±zΔ± belirli tutun.
+- Kodunuzun sΔ±nΔ±rlarΔ±nΔ± nasΔ±l ve nerede Γ§izeceΔinize siz karar verirsiniz.
-#### Extract a `useCounter` Hook {/*extract-a-usecounter-hook*/}
+#### Bir `useCounter` Hook'u Γ§Δ±karΔ±n {/*extract-a-usecounter-hook*/}
-This component uses a state variable and an Effect to display a number that increments every second. Extract this logic into a custom Hook called `useCounter`. Your goal is to make the `Counter` component implementation look exactly like this:
+Bu bileΕen bir state deΔiΕkeni ve bir Efekt kullanarak her saniye artan bir sayΔ±yΔ± gΓΆrΓΌntΓΌler. Bu mantΔ±ΔΔ± `useCounter` adΔ±nda ΓΆzel bir Hook'a Γ§Δ±karΔ±n. AmacΔ±nΔ±z `Counter` bileΕeninin uygulamasΔ±nΔ± tam olarak aΕaΔΔ±daki gibi yapmak olmalΔ±dΔ±r:
```js
export default function Counter() {
const count = useCounter();
- return
Seconds passed: {count}
;
+ return
GeΓ§en saniyeler: {count}
;
}
```
-You'll need to write your custom Hook in `useCounter.js` and import it into the `App.js` file.
+Γzel Hook'unuzu `useCounter.js`'e yazmanΔ±z ve onu `App.js` dosyasΔ±na aktarmanΔ±z gerekecek.
@@ -1914,19 +1915,19 @@ export default function Counter() {
}, 1000);
return () => clearInterval(id);
}, []);
- return
Seconds passed: {count}
;
+ return
GeΓ§en saniyeler: {count}
;
}
```
```js src/useCounter.js
-// Write your custom Hook in this file!
+// Γzel Hook'unuzu bu dosyaya yazΔ±n!
```
-Your code should look like this:
+Kodunuz Εu Εekilde gΓΆzΓΌkmelidir:
@@ -1935,7 +1936,7 @@ import { useCounter } from './useCounter.js';
export default function Counter() {
const count = useCounter();
- return
Seconds passed: {count}
;
+ return
GeΓ§en saniyeler: {count}
;
}
```
@@ -1956,13 +1957,13 @@ export function useCounter() {
-Notice that `App.js` doesn't need to import `useState` or `useEffect` anymore.
+FarkΔ±ndaysanΔ±z, `App.js` artΔ±k `useState` veya `useEffect`'i iΓ§e aktarmaya ihtiyaΓ§ duymuyor.
-#### Make the counter delay configurable {/*make-the-counter-delay-configurable*/}
+#### Geri sayΔ±m gecikmesini yapΔ±landΔ±rΔ±labilir hale getirin {/*make-the-counter-delay-configurable*/}
-In this example, there is a `delay` state variable controlled by a slider, but its value is not used. Pass the `delay` value to your custom `useCounter` Hook, and change the `useCounter` Hook to use the passed `delay` instead of hardcoding `1000` ms.
+Bu ΓΆrnekte, bir slider tarafΔ±ndan kontrol edilen bir `delay` state deΔiΕkeni var, ancak deΔeri kullanΔ±lmΔ±yor. Γzel `useCounter` Hook'unuza `delay` deΔerini iletin ve `useCounter` Hook'unuzu sabit `1000` ms yerine iletilen `delay`'i kullanacak Εekilde deΔiΕtirin.
@@ -1976,7 +1977,7 @@ export default function Counter() {
return (
<>
- Tick duration: {delay} ms
+ Tiktak sΓΌresi: {delay} ms
-
Ticks: {count}
+
Tiktaklar: {count}
>
);
}
@@ -2012,7 +2013,9 @@ export function useCounter() {
-Pass the `delay` to your Hook with `useCounter(delay)`. Then, inside the Hook, use `delay` instead of the hardcoded `1000` value. You'll need to add `delay` to your Effect's dependencies. This ensures that a change in `delay` will reset the interval.
+Hook'unuza `useCounter(delay)` ile `delay` deΔerini aktarΔ±n. ArdΔ±ndan, Hook'un iΓ§inde, sabit kodlanmΔ±Ε `1000` deΔeri yerine `delay` kullanΔ±n. Efektinizin baΔΔ±mlΔ±lΔ±klarΔ±na `delay` eklemeniz gerekir. Bu, `delay` deΔerindeki bir deΔiΕikliΔin aralΔ±ΔΔ± sΔ±fΔ±rlamasΔ±nΔ± saΔlar.
+
+`delay`'i `useCounter(delay)` ile Hook'unuza iletin. ArdΔ±ndan, Hook'un iΓ§inde, `1000` sabit deΔeri yerine `delay`'i kullanΔ±n. Efektinizin baΔΔ±mlΔ±lΔ±klarΔ±na `delay`'i eklemeniz gerekecek. Bu, `delay`'de meydana gelen bir deΔiΕikliΔin interval'i sΔ±fΔ±rlamasΔ±nΔ± saΔlar.
@@ -2026,7 +2029,7 @@ export default function Counter() {
return (
<>
- Tick duration: {delay} ms
+ Tiktak sΓΌresi: {delay} ms
-
Ticks: {count}
+
Tiktaklar: {count}
>
);
}
@@ -2062,9 +2065,9 @@ export function useCounter(delay) {
-#### Extract `useInterval` out of `useCounter` {/*extract-useinterval-out-of-usecounter*/}
+#### `useInterval`'i `useCounter`'dan Γ§Δ±karΔ±n {/*extract-useinterval-out-of-usecounter*/}
-Currently, your `useCounter` Hook does two things. It sets up an interval, and it also increments a state variable on every interval tick. Split out the logic that sets up the interval into a separate Hook called `useInterval`. It should take two arguments: the `onTick` callback, and the `delay`. After this change, your `useCounter` implementation should look like this:
+Εu an, `useCounter` Hook'unuz iki Εey yapΔ±yor, bir interval kuruyor ve aynΔ± zamanda her interval tikinde bir state deΔiΕkenini artΔ±rΔ±yor. Interval'i kuran mantΔ±ΔΔ± `useInterval` adΔ±nda ayrΔ± bir Hook'a ayΔ±rΔ±n. Bu Hook, iki argΓΌman almalΔ±dΔ±r: `onTick` callback'i ve `delay`. Bu deΔiΕiklikten sonra, `useCounter` uygulamanΔ±z Εu Εekilde olmalΔ±dΔ±r:
```js
export function useCounter(delay) {
@@ -2076,17 +2079,16 @@ export function useCounter(delay) {
}
```
-Write `useInterval` in the `useInterval.js` file and import it into the `useCounter.js` file.
+`useInterval`'i `useInterval.js` dosyasΔ±nΔ±n iΓ§ine yazΔ±n ve onu `useCounter.js` dosyasΔ±nda iΓ§e aktarΔ±n.
```js
-import { useState } from 'react';
import { useCounter } from './useCounter.js';
export default function Counter() {
const count = useCounter(1000);
- return
Seconds passed: {count}
;
+ return
GeΓ§en saniyeler: {count}
;
}
```
@@ -2106,14 +2108,14 @@ export function useCounter(delay) {
```
```js src/useInterval.js
-// Write your Hook here!
+// Hook'unuzu bu dosyaya yazΔ±n!
```
-The logic inside `useInterval` should set up and clear the interval. It doesn't need to do anything else.
+`useInterval` iΓ§indeki mantΔ±k, interval'i kurmalΔ± ve temizlemelidir. BaΕka bir Εey yapmasΔ±na gerek yoktur.
@@ -2122,7 +2124,7 @@ import { useCounter } from './useCounter.js';
export default function Counter() {
const count = useCounter(1000);
- return
Seconds passed: {count}
;
+ return
GeΓ§en saniyeler: {count}
;
}
```
@@ -2152,57 +2154,43 @@ export function useInterval(onTick, delay) {
-Note that there is a bit of a problem with this solution, which you'll solve in the next challenge.
+Bu Γ§ΓΆzΓΌmde biraz bir sorun olduΔuna dikkat edin, bunu bir sonraki bΓΆlΓΌmde Γ§ΓΆzeceksiniz.
-#### Fix a resetting interval {/*fix-a-resetting-interval*/}
+#### Interval'i sΔ±fΔ±rlamayΔ± Γ§ΓΆzΓΌn {/*fix-a-resetting-interval*/}
-In this example, there are *two* separate intervals.
+Bu ΓΆrnekte, *iki* ayrΔ± interval var.
-The `App` component calls `useCounter`, which calls `useInterval` to update the counter every second. But the `App` component *also* calls `useInterval` to randomly update the page background color every two seconds.
+`App` bileΕeni `useCounter`'Δ± Γ§aΔΔ±rΔ±yor, o da sayacΔ± her saniye arttΔ±rmak iΓ§in `useInterval`'i Γ§aΔΔ±rΔ±yor. Ama `App` bileΕeni *aynΔ± zamanda* her iki saniyede bir sayfa arka plan rengini rastgele gΓΌncellemek iΓ§in de `useInterval`'i Γ§aΔΔ±rΔ±yor.
For some reason, the callback that updates the page background never runs. Add some logs inside `useInterval`:
+Bir sebepten ΓΆtΓΌrΓΌ, sayfa arka planΔ±nΔ± gΓΌncelleyen callback hiΓ§ Γ§alΔ±ΕmΔ±yor. `useInterval` iΓ§erisine bazΔ± loglar ekleyin:
+
```js {2,5}
useEffect(() => {
- console.log('β Setting up an interval with delay ', delay)
+ console.log('β Delayli bir interval kuruluyor ', delay)
const id = setInterval(onTick, delay);
return () => {
- console.log('β Clearing an interval with delay ', delay)
+ console.log('β Delayli bir interval temizleniyor ', delay)
clearInterval(id);
};
}, [onTick, delay]);
```
-Do the logs match what you expect to happen? If some of your Effects seem to re-synchronize unnecessarily, can you guess which dependency is causing that to happen? Is there some way to [remove that dependency](/learn/removing-effect-dependencies) from your Effect?
+Log'lar olacaΔΔ±nΔ± dΓΌΕΓΌndΓΌΔΓΌnΓΌz Εeyle uyuΕuyor mu? EΔer bazΔ± Efekt'leriniz gereksiz yere yeniden senkronize oluyorsa, bunun hangi baΔΔ±mlΔ±lΔ±ktan dolayΔ± olduΔunu tahmin edebilir misiniz? Efekt'inizden [bu baΔΔ±mlΔ±lΔ±ΔΔ± kaldΔ±rabileceΔiniz](/learn/removing-effect-dependencies) bir yol var mΔ±?
-After you fix the issue, you should expect the page background to update every two seconds.
+Bu sorunu Γ§ΓΆzdΓΌkten sonra, sayfa arka planΔ±nΔ±n her iki saniyede bir gΓΌncellendiΔini gΓΆrmelisiniz.
-It looks like your `useInterval` Hook accepts an event listener as an argument. Can you think of some way to wrap that event listener so that it doesn't need to be a dependency of your Effect?
+GΓΆrΓΌnen o ki `useInterval` Hook'unuz argΓΌman olarak bir olay dinleyicisi alΔ±yor. Bu olay dinleyicisini Efekt'iniz iΓ§in bir baΔΔ±mlΔ±lΔ±k olmaya ihtiyaΓ§ duymadan nasΔ±l sarabileceΔinizi dΓΌΕΓΌnebilir misiniz?
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useCounter } from './useCounter.js';
import { useInterval } from './useInterval.js';
@@ -2215,7 +2203,7 @@ export default function Counter() {
document.body.style.backgroundColor = randomColor;
}, 2000);
- return
Seconds passed: {count}
;
+ return
GeΓ§en saniyeler: {count}
;
}
```
@@ -2234,7 +2222,7 @@ export function useCounter(delay) {
```js src/useInterval.js
import { useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export function useInterval(onTick, delay) {
useEffect(() => {
@@ -2250,30 +2238,14 @@ export function useInterval(onTick, delay) {
-Inside `useInterval`, wrap the tick callback into an Effect Event, as you did [earlier on this page.](/learn/reusing-logic-with-custom-hooks#passing-event-handlers-to-custom-hooks)
+`useInterval`'in iΓ§erisinde, tik callback'ini bir Efekt olayΔ±na [bu sayfada daha ΓΆnce yaptΔ±ΔΔ±nΔ±z gibi](/learn/reusing-logic-with-custom-hooks#passing-event-handlers-to-custom-hooks) sarΔ±n
-This will allow you to omit `onTick` from dependencies of your Effect. The Effect won't re-synchronize on every re-render of the component, so the page background color change interval won't get reset every second before it has a chance to fire.
+Bu sizin `onTick`'i Efekt'iniz iΓ§in bir baΔΔ±mlΔ±lΔ±k olmaktan Γ§Δ±karmanΔ±za olanak tanΔ±r. Efekt, bileΕeniniz her yeniden render edildiΔinde tekrar senkronize olmayacak, bΓΆylece sayfa arka plan rengi deΔiΕim interval'i her saniye Γ§alΔ±Εmaya Εans bulamadan sΔ±fΔ±rlanmamΔ±Ε olacak.
-With this change, both intervals work as expected and don't interfere with each other:
+Bu deΔiΕiklikle birlikte, her iki interval de beklediΔiniz gibi Γ§alΔ±ΕΔ±r ve birbirleriyle etkileΕime girmezler:
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useCounter } from './useCounter.js';
@@ -2306,7 +2278,7 @@ export function useCounter(delay) {
```js src/useInterval.js active
import { useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export function useInterval(callback, delay) {
const onTick = useEffectEvent(callback);
@@ -2321,21 +2293,21 @@ export function useInterval(callback, delay) {
-#### Implement a staggering movement {/*implement-a-staggering-movement*/}
+#### GecikmelendirilmiΕ bir hareketi uygulayΔ±n {/*implement-a-staggered-movement*/}
-In this example, the `usePointerPosition()` Hook tracks the current pointer position. Try moving your cursor or your finger over the preview area and see the red dot follow your movement. Its position is saved in the `pos1` variable.
+Bu ΓΆrnekte, `usePointerPosition()` Hook'u mevcut imleΓ§ konumunu takip eder. Δ°mlecinizi veya parmaΔΔ±nΔ±zΔ± ΓΆnizleme alanΔ± ΓΌzerinde hareket ettirmeyi deneyin ve kΔ±rmΔ±zΔ± noktanΔ±n hareketinizi takip ettiΔini gΓΆrΓΌn. NoktanΔ±n konumu `pos1` deΔiΕkeninde saklanΔ±r.
-In fact, there are five (!) different red dots being rendered. You don't see them because currently they all appear at the same position. This is what you need to fix. What you want to implement instead is a "staggered" movement: each dot should "follow" the previous dot's path. For example, if you quickly move your cursor, the first dot should follow it immediately, the second dot should follow the first dot with a small delay, the third dot should follow the second dot, and so on.
+AslΔ±nda, render edilen beΕ (!) farklΔ± kΔ±rmΔ±zΔ± nokta var. OnlarΔ± gΓΆrmΓΌyorsunuz Γ§ΓΌnkΓΌ Εu anda hepsi aynΔ± konumda gΓΆrΓΌnΓΌyor. Bu sorunu Γ§ΓΆzmeniz gerekiyor. Bunun yerine uygulamak istediΔiniz Εey "gecikmeli" bir hareket: her nokta bir ΓΆnceki noktanΔ±n yolunu "takip" etmeli. ΓrneΔin hΔ±zlΔ±ca imlecinizi hareket ettirirseniz, ilk nokta onu hemen takip etmeli, ikinci nokta ilk noktayΔ± kΓΌΓ§ΓΌk bir gecikme ile takip etmeli, ΓΌΓ§ΓΌncΓΌ nokta ikinci noktayΔ± takip etmeli ve bΓΆyle devam etmeli.
-You need to implement the `useDelayedValue` custom Hook. Its current implementation returns the `value` provided to it. Instead, you want to return the value back from `delay` milliseconds ago. You might need some state and an Effect to do this.
+`useDelayedValue` ΓΆzel Hook'unu yazmanΔ±z gerekiyor. Mevcut uygulama, ona saΔlanan `value`'yu dΓΆndΓΌrmekte. Bunun yerine, `delay` kadar milisaniye ΓΆnceki deΔeri dΓΆndΓΌrmek istemektesiniz. Bu iΕlemi yapmak iΓ§in biraz state ve bir Efekt'e ihtiyacΔ±nΔ±z olabilir.
-After you implement `useDelayedValue`, you should see the dots move following one another.
+`useDelayedValue`'u yazdΔ±ktan sonra, noktalarΔ±n birbirlerini takip ettiΔini gΓΆrmelisiniz.
-You'll need to store the `delayedValue` as a state variable inside your custom Hook. When the `value` changes, you'll want to run an Effect. This Effect should update `delayedValue` after the `delay`. You might find it helpful to call `setTimeout`.
+`delayedValue`'yu bir ΓΆzel Hook'unuzun iΓ§inde bir state deΔiΕkeni olarak saklamanΔ±z gerekmekte. `value` deΔiΕtiΔinde, bir Efekt Γ§alΔ±ΕtΔ±rmak isteyeceksiniz. Bu Efekt, `delay`'den sonra `delayedValue`'yu gΓΌncellemelidir. `setTimeout`'u Γ§aΔΔ±rmak size yardΔ±mcΔ± olabilir.
-Does this Effect need cleanup? Why or why not?
+Bu Efekt'in temizleme fonksiyonuna ihtiyacΔ± var mΔ±? Varsa neden, yoksa neden?
@@ -2345,7 +2317,7 @@ Does this Effect need cleanup? Why or why not?
import { usePointerPosition } from './usePointerPosition.js';
function useDelayedValue(value, delay) {
- // TODO: Implement this Hook
+ // TODO: Bu Hook'u yazΔ±n
return value;
}
@@ -2408,7 +2380,7 @@ body { min-height: 300px; }
-Here is a working version. You keep the `delayedValue` as a state variable. When `value` updates, your Effect schedules a timeout to update the `delayedValue`. This is why the `delayedValue` always "lags behind" the actual `value`.
+Burada Γ§alΔ±Εan bir versiyonu var. `delayedValue`'yu bir state deΔiΕkeni olarak saklΔ±yorsunuz. `value` gΓΌncellendiΔinde, Efekt'iniz `delayedValue`'yu gΓΌncellemek iΓ§in bir timeout planlar. Bu yΓΌzden `delayedValue` her zaman gerΓ§ek `value`'dan "geride kalΔ±r".
@@ -2485,8 +2457,8 @@ body { min-height: 300px; }
-Note that this Effect *does not* need cleanup. If you called `clearTimeout` in the cleanup function, then each time the `value` changes, it would reset the already scheduled timeout. To keep the movement continuous, you want all the timeouts to fire.
+Bu Efekt'in temizleme fonksiyonuna ihtiyacΔ± *olmadΔ±ΔΔ±nΔ±* unutmayΔ±n. EΔer cleanup fonksiyonunda `clearTimeout`'u Γ§aΔΔ±rdΔ±ysanΔ±z, o zaman her `value` deΔiΕtiΔinde, zaten planlanmΔ±Ε olan timeout'u sΔ±fΔ±rlar. Hareketi sΓΌrekli tutmak iΓ§in, tΓΌm timeout'larΔ±n Γ§alΔ±ΕmasΔ±nΔ± istersiniz.
-
+
\ No newline at end of file
diff --git a/src/content/learn/rsc-sandbox-test.md b/src/content/learn/rsc-sandbox-test.md
new file mode 100644
index 000000000..f914ea4ae
--- /dev/null
+++ b/src/content/learn/rsc-sandbox-test.md
@@ -0,0 +1,575 @@
+---
+title: RSC Sandbox Test
+---
+
+## Basic Server Component {/*basic-server-component*/}
+
+
+
+```js src/App.js
+export default function App() {
+ return
+ );
+}
+```
+
+```js src/Counter.js
+'use client';
+import { useState } from 'react';
+
+export default function Counter() {
+ const [count, setCount] = useState(0);
+ return (
+ setCount(count + 1)}>
+ Count: {count}
+
+ );
+}
+```
+
+
+
+## Async Server Component with Suspense {/*async-suspense*/}
+
+
+
+```js src/App.js
+import { Suspense } from 'react';
+import Albums from './Albums';
+
+export default function App() {
+ return (
+
+
Music
+ Loading albums...}>
+
+
+
+ );
+}
+```
+
+```js src/Albums.js
+async function fetchAlbums() {
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ return ['Abbey Road', 'Let It Be', 'Revolver'];
+}
+
+export default async function Albums() {
+ const albums = await fetchAlbums();
+ return (
+
+ {albums.map(album => (
+
{album}
+ ))}
+
+ );
+}
+```
+
+
+
+## Streaming Proof {/*streaming-proof*/}
+
+This demo proves streaming is incremental. The shell renders instantly with a `` fallback. After 2 seconds the async component streams in and replaces it β without re-rendering the outer content. The timestamps show the gap.
+
+
+
+```js src/App.js
+import { Suspense } from 'react';
+import SlowData from './SlowData';
+import Timestamp from './Timestamp';
+
+export default function App() {
+ return (
+
+ );
+}
+```
+
+```js src/Timestamp.js
+'use client';
+
+export default function Timestamp() {
+ return {new Date().toLocaleTimeString()};
+}
+```
+
+
+
+## Flight Data Types {/*flight-data-types*/}
+
+This demo passes Map, Set, Date, and BigInt from a server component through the Flight stream to a client component, proving the full Flight protocol type system works end-to-end.
+
+
+
+```js src/App.js
+import DataViewer from './DataViewer';
+
+export default function App() {
+ const map = new Map([
+ ['alice', 100],
+ ['bob', 200],
+ ]);
+ const set = new Set(['react', 'next', 'remix']);
+ const date = new Date('2025-06-15T12:00:00Z');
+ const big = 9007199254740993n;
+
+ return (
+
+ );
+}
+```
+
+
+
+## Promise Streaming with use() {/*promise-streaming-use*/}
+
+The server creates a promise (resolves in 2s) and passes it as a prop through a parent async component that suspends for 3s. When the parent reveals at ~3s, the promise is already resolved β so `use()` returns instantly with no inner fallback. The elapsed time should be ~3000ms (the parent's delay), not ~5000ms (which would mean the promise restarted on the client).
+
+
+
+```js src/App.js
+import { Suspense } from 'react';
+import SlowParent from './SlowParent';
+import UserCard from './UserCard';
+
+async function fetchUser() {
+ await new Promise(resolve => setTimeout(resolve, 2000));
+ return { name: 'Alice', role: 'Engineer' };
+}
+
+function now() {
+ return Date.now();
+}
+
+export default function App() {
+ const serverTime = now();
+ const userPromise = fetchUser();
+ return (
+
+
Promise Streaming
+
Promise resolves in 2s. Parent suspends for 3s.
+ Outer: waiting for parent (3s)...}>
+
+ Inner: waiting for data (should not appear!)}>
+
+
+
+
+
+ );
+}
+```
+
+```js src/SlowParent.js
+export default async function SlowParent({ children }) {
+ await new Promise(resolve => setTimeout(resolve, 3000));
+ return
+ Rendered {elapsed}ms after server created the promise.
+
+
+ ~3000ms = promise already resolved, waited only for parent.
+ ~5000ms would mean the promise restarted on the client.
+
+
+ );
+}
+```
+
+
+
+## Flight Data Types in Server Actions {/*flight-data-types-actions*/}
+
+This demo sends Map, Set, Date, and BigInt from a client component *to* a server action via `encodeReply`/`decodeReply`, then verifies the types survived the round trip.
+
+
+
+```js src/App.js
+import { testTypes, getResults } from './actions';
+import TestButton from './TestButton';
+
+export default async function App() {
+ const results = await getResults();
+ return (
+
+
Flight Types in Server Actions
+
+ {results ? (
+
+ {results.map(r => (
+
+ {r.label}: {r.ok ? 'pass' : 'FAIL'}
+
{r.detail}
+
+ ))}
+
+ ) : (
+
Click the button to send typed data to the server action.
+ )}
+
+ );
+}
+```
+
+```js src/actions.js
+'use server';
+
+let results = null;
+
+export async function testTypes(map, set, date, big) {
+ results = [
+ {
+ label: 'Map',
+ ok: map instanceof Map,
+ detail: map instanceof Map
+ ? 'entries: ' + JSON.stringify([...map.entries()])
+ : 'received: ' + typeof map,
+ },
+ {
+ label: 'Set',
+ ok: set instanceof Set,
+ detail: set instanceof Set
+ ? 'values: ' + JSON.stringify([...set])
+ : 'received: ' + typeof set,
+ },
+ {
+ label: 'Date',
+ ok: date instanceof Date,
+ detail: date instanceof Date
+ ? date.toISOString()
+ : 'received: ' + typeof date,
+ },
+ {
+ label: 'BigInt',
+ ok: typeof big === 'bigint',
+ detail: typeof big === 'bigint'
+ ? big.toString()
+ : 'received: ' + typeof big,
+ },
+ ];
+}
+
+export async function getResults() {
+ return results;
+}
+```
+
+```js src/TestButton.js
+'use client';
+import { useTransition } from 'react';
+
+export default function TestButton({ testTypes }) {
+ const [pending, startTransition] = useTransition();
+
+ function handleClick() {
+ startTransition(async () => {
+ await testTypes(
+ new Map([['alice', 100], ['bob', 200]]),
+ new Set(['react', 'next', 'remix']),
+ new Date('2025-06-15T12:00:00Z'),
+ 9007199254740993n
+ );
+ });
+ }
+
+ return (
+
+ {pending ? 'Sending...' : 'Send typed data to server'}
+
+ );
+}
+```
+
+
+
+## Server Action Mutation + Re-render {/*action-mutation-rerender*/}
+
+The server action mutates server-side data and returns a confirmation string. The updated list is only visible because the framework automatically re-renders the entire server component tree after the action completes β the server component re-reads the data and streams the new UI to the client.
+
+
+
+```js src/App.js
+import { getTodos } from './db';
+import { createTodo } from './actions';
+import AddTodo from './AddTodo';
+
+export default function App() {
+ const todos = getTodos();
+ return (
+
+
Todo List
+
+ This list is rendered by a server component
+ reading server-side data. It only updates because
+ the server re-renders after each action.
+
+ );
+}
+```
+
+
+
+## Inline Server Actions {/*inline-server-actions*/}
+
+Server actions defined inline inside a server component with `'use server'` on the function body. The action closes over module-level state and is passed as a prop β no separate `actions.js` file needed.
+
+
+
+```js src/App.js
+import LikeButton from './LikeButton';
+
+let count = 0;
+
+export default function App() {
+ async function addLike() {
+ 'use server';
+ count++;
+ }
+
+ return (
+
+ );
+}
+```
+
+```js src/actions.js
+'use server';
+
+let count = 0;
+
+export async function addLike() {
+ count++;
+}
+
+export async function getLikeCount() {
+ return count;
+}
+```
+
+```js src/LikeButton.js
+'use client';
+
+export default function LikeButton({ addLike }) {
+ return (
+
+ );
+}
+```
+
+
\ No newline at end of file
diff --git a/src/content/learn/scaling-up-with-reducer-and-context.md b/src/content/learn/scaling-up-with-reducer-and-context.md
index f543ca309..cd7b74192 100644
--- a/src/content/learn/scaling-up-with-reducer-and-context.md
+++ b/src/content/learn/scaling-up-with-reducer-and-context.md
@@ -231,7 +231,7 @@ AyrΔ±ca `TaskList` olay yΓΆneticilerini `Task`'e aktarΔ±r:
Bunun gibi kΓΌΓ§ΓΌk bir ΓΆrnekte bu yapΔ± iyi Γ§alΔ±ΕΔ±r, ancak ortada onlarca veya yΓΌzlerce bileΕen varsa, tΓΌm state ve fonksiyonlarΔ± aktarmak oldukΓ§a sinir bozucu olabilir!
-Bu nedenle, bunlarΔ± proplar aracΔ±lΔ±ΔΔ±yla aktarmaya alternatif olarak, hem `tasks` state'ini hem de `dispatch` fonksiyonunu [context'e](/learn/passing-data-deeply-with-context) yerleΕtirmek isteyebilirsiniz. **Bu Εekilde, hiyerarΕide `TaskApp` altΔ±ndaki herhangi bir bileΕen gΓΆrevleri okuyabilir ve tekrarlanan "prop drilling" olmadan eylemleri gΓΆnderebilir.**
+Bu nedenle, bunlarΔ± proplar aracΔ±lΔ±ΔΔ±yla aktarmaya alternatif olarak, hem `tasks` state'ini hem de `dispatch` fonksiyonunu [context'e](/learn/passing-data-deeply-with-context) yerleΕtirmek isteyebilirsiniz. **Bu Εekilde, hiyerarΕide `TaskApp` altΔ±ndaki herhangi bir bileΕen gΓΆrevleri okuyabilir ve tekrarlanan "prop drilling" olmadan eylemleri gΓΆnderebilir.**
Burada bir reducer'Δ± context ile nasΔ±l birleΕtirebileceΔiniz anlatΔ±lmΔ±ΕtΔ±r:
@@ -462,11 +462,11 @@ export default function TaskApp() {
const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
// ...
return (
-
-
+
+
...
-
-
+
+
);
}
```
@@ -521,8 +521,8 @@ export default function TaskApp() {
onChangeTask={handleChangeTask}
onDeleteTask={handleDeleteTask}
/>
-
-
+
+
);
}
@@ -682,8 +682,8 @@ ArtΔ±k gΓΆrevlerin listesini veya olay yΓΆneticilerini hiyerarΕi boyunca iletme
Δ°stanbul'da bir gΓΌn
-
-
+
+
```
Bunun yerine, gΓΆrev listesine ihtiyaΓ§ duyan herhangi bir bileΕen bunu `TaskContext`'ten okuyabilir:
@@ -736,8 +736,8 @@ export default function TaskApp() {
Δ°stanbul'da bir gΓΌn
-
-
+
+
);
}
@@ -802,7 +802,7 @@ export default function AddTask() {
type: 'added',
id: nextId++,
text: text,
- });
+ });
}}>Ekle
>
);
@@ -922,11 +922,11 @@ export function TasksProvider({ children }) {
const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
return (
-
-
+
+
{children}
-
-
+
+
);
}
```
@@ -964,11 +964,11 @@ export function TasksProvider({ children }) {
);
return (
-
-
+
+
{children}
-
-
+
+
);
}
@@ -1026,7 +1026,7 @@ export default function AddTask() {
type: 'added',
id: nextId++,
text: text,
- });
+ });
}}>Ekle
>
);
@@ -1175,11 +1175,11 @@ export function TasksProvider({ children }) {
);
return (
-
-
+
+
{children}
-
-
+
+
);
}
@@ -1245,7 +1245,7 @@ export default function AddTask() {
type: 'added',
id: nextId++,
text: text,
- });
+ });
}}>Ekle
>
);
@@ -1362,4 +1362,3 @@ UygulamanΔ±z bΓΌyΓΌdΓΌkΓ§e, bunun gibi birΓ§ok context-reducer Γ§iftine sahip ol
- UygulamanΔ±zda bunun gibi birΓ§ok context-reducer Γ§iftine sahip olabilirsiniz.
-
diff --git a/src/content/learn/separating-events-from-effects.md b/src/content/learn/separating-events-from-effects.md
index 9e73d1453..84971597f 100644
--- a/src/content/learn/separating-events-from-effects.md
+++ b/src/content/learn/separating-events-from-effects.md
@@ -400,13 +400,7 @@ Bu reaktif olmayan mantΔ±ΔΔ±, etrafΔ±ndaki reaktif Efektten ayΔ±rmak iΓ§in bir
### Bir Efekt OlayΔ± Bildirme {/*declaring-an-effect-event*/}
-
-
-Bu bΓΆlΓΌmde, React'in kararlΔ± bir sΓΌrΓΌmΓΌnde henΓΌz yayΔ±nlanmamΔ±Ε **deneysel bir API** aΓ§Δ±klanmaktadΔ±r.
-
-
-
-Bu reaktif olmayan mantΔ±ΔΔ± Efektinizden Γ§Δ±karmak iΓ§in [`useEffectEvent`](/reference/react/experimental_useEffectEvent) adlΔ± ΓΆzel bir Hook kullanΔ±n:
+Bu reaktif olmayan mantΔ±ΔΔ± Effect'ten ayΔ±rmak iΓ§in [`useEffectEvent`](/reference/react/useEffectEvent) adlΔ± ΓΆzel bir Hook kullan:
```js {1,4-6}
import { useEffect, useEffectEvent } from 'react';
@@ -439,7 +433,7 @@ function ChatRoom({ roomId, theme }) {
// ...
```
-Bu sorunu Γ§ΓΆzer. Efektinizin baΔΔ±mlΔ±lΔ±klarΔ± listesinden `onConnected` ΓΆΔesini *kaldΔ±rmanΔ±z* gerektiΔini unutmayΔ±n. **Efekt olaylarΔ± reaktif deΔildir ve baΔΔ±mlΔ±lΔ±klardan Γ§Δ±karΔ±lmalΔ±dΔ±r.**
+Bu, problemi Γ§ΓΆzer. Dikkat etmen gereken nokta, Efekt iΓ§inde artΔ±k kullanΔ±lmadΔ±ΔΔ± iΓ§in `theme` ΓΆΔesini baΔΔ±mlΔ±lΔ±klar listesinden *Γ§Δ±karman* gerektiΔidir. AyrΔ±ca `onConnected` ΓΆΔesini listeye *eklemene* de gerek yoktur Γ§ΓΌnkΓΌ **Efekt OlaylarΔ± reaktif deΔildir ve baΔΔ±mlΔ±lΔ±klardan Γ§Δ±karΔ±lmalΔ±dΔ±r.**
Yeni davranΔ±ΕΔ±n beklediΔiniz gibi Γ§alΔ±ΕtΔ±ΔΔ±nΔ± doΔrulayΔ±n:
@@ -448,8 +442,8 @@ Yeni davranΔ±ΕΔ±n beklediΔiniz gibi Γ§alΔ±ΕtΔ±ΔΔ±nΔ± doΔrulayΔ±n:
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -464,7 +458,7 @@ Yeni davranΔ±ΕΔ±n beklediΔiniz gibi Γ§alΔ±ΕtΔ±ΔΔ±nΔ± doΔrulayΔ±n:
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import { createConnection, sendMessage } from './chat.js';
import { showNotification } from './notifications.js';
@@ -574,17 +568,13 @@ label { display: block; margin-top: 10px; }
-Efekt olaylarΔ±nΔ± olay yΓΆneticilerine Γ§ok benzer olarak dΓΌΕΓΌnebilirsiniz. Temel fark, olay iΕleyicilerinin kullanΔ±cΔ± etkileΕimlerine yanΔ±t olarak Γ§alΔ±ΕmasΔ±, Efekt olaylarΔ±nΔ±n ise sizin tarafΔ±nΔ±zdan Efektlerden tetiklenmesidir. Efekt olaylarΔ±, Efektlerin tepkiselliΔi ile tepkisel olmamasΔ± gereken kod arasΔ±ndaki "zinciri kΔ±rmanΔ±zΔ±" saΔlar.
-
-### Efekt olaylarΔ± ile en son proplarΔ± ve state okuma {/*reading-latest-props-and-state-with-effect-events*/}
-
-
+Effect Eventsβi, event handlerβlara oldukΓ§a benzer Εekilde dΓΌΕΓΌnebilirsiniz. Ana fark, event handlerβlarΔ±n kullanΔ±cΔ± etkileΕimlerine yanΔ±t olarak Γ§alΔ±ΕmasΔ±, Effect Eventsβin ise Effects iΓ§inden sizin tarafΔ±nΔ±zdan tetiklenmesidir.
-Bu bΓΆlΓΌmde, React'in kararlΔ± bir sΓΌrΓΌmΓΌnde henΓΌz yayΔ±nlanmamΔ±Ε **deneysel bir API** aΓ§Δ±klanmaktadΔ±r.
+Effect Events, Effectsβin reaktivitesi ile reaktif olmamasΔ± gereken kod arasΔ±ndaki zinciri kΔ±rmanΔ±za olanak tanΔ±r.
-
+### Efekt olaylarΔ± ile en son proplarΔ± ve state okuma {/*reading-latest-props-and-state-with-effect-events*/}
-Efekt olaylarΔ±, baΔΔ±mlΔ±lΔ±k baΔlayΔ±cΔ±sΔ±nΔ± bastΔ±rmak isteyebileceΔiniz birΓ§ok modeli dΓΌzeltmenize olanak tanΔ±r.
+Effect Event'ler, dependency linter'Δ±nΔ± bastΔ±rma eΔiliminde olabileceΔin birΓ§ok deseni dΓΌzeltmene olanak tanΔ±r.
ΓrneΔin, sayfa ziyaretlerini gΓΌnlΓΌΔe kaydetmek iΓ§in bir Efektiniz olduΔunu varsayalΔ±m:
@@ -711,7 +701,7 @@ Burada, `onVisit` iΓ§indeki `url` *en son* `url`ye karΕΔ±lΔ±k gelir (bu zaten d
Mevcut kod tabanlarΔ±nda bazen lint kuralΔ±nΔ±n bu Εekilde bastΔ±rΔ±ldΔ±ΔΔ±nΔ± gΓΆrebilirsiniz:
-```js {7-9}
+```js {expectedErrors: {'react-compiler': [8]}} {7-9}
function Page({ url }) {
const { items } = useContext(ShoppingCartContext);
const numberOfItems = items.length;
@@ -725,7 +715,7 @@ function Page({ url }) {
}
```
-`UseEffectEvent` React'in kararlΔ± bir parΓ§asΔ± haline geldikten sonra, **kuralΔ±n asla bastΔ±rΔ±lmamasΔ±nΔ±** ΓΆneriyoruz.
+**Linter'Δ± asla bastΔ±rmamanΔ±** tavsiye ediyoruz.
KuralΔ± bastΔ±rmanΔ±n ilk dezavantajΔ±, Efektinizin kodunuza eklediΔiniz yeni bir reaktif baΔΔ±mlΔ±lΔ±Δa "tepki vermesi" gerektiΔinde React'in artΔ±k sizi uyarmayacak olmasΔ±dΔ±r. Γnceki ΓΆrnekte, React size bunu yapmanΔ±zΔ± hatΔ±rlattΔ±ΔΔ± iΓ§in baΔΔ±mlΔ±lΔ±klara `url` eklediniz. Linter'Δ± devre dΔ±ΕΔ± bΔ±rakΔ±rsanΔ±z, bu Efekt ΓΌzerinde gelecekte yapacaΔΔ±nΔ±z dΓΌzenlemeler iΓ§in artΔ±k bΓΆyle hatΔ±rlatΔ±cΔ±lar almayacaksΔ±nΔ±z. Bu da hatalara yol aΓ§ar.
@@ -735,7 +725,7 @@ Nedenini anlayabiliyor musunuz?
-```js
+```js {expectedErrors: {'react-compiler': [16]}}
import { useState, useEffect } from 'react';
export default function App() {
@@ -789,7 +779,6 @@ body {
-
Bu kodla ilgili sorun, baΔΔ±mlΔ±lΔ±k linterinin bastΔ±rΔ±lmasΔ±dΔ±r. BastΔ±rmayΔ± kaldΔ±rΔ±rsanΔ±z, bu Efektin `handleMove` fonksiyonuna baΔlΔ± olmasΔ± gerektiΔini gΓΆrΓΌrsΓΌnΓΌz. Bu mantΔ±klΔ±dΔ±r: `handleMove` bileΕen gΓΆvdesi iΓ§inde bildirilir, bu da onu reaktif bir deΔer yapar. Her reaktif deΔer bir baΔΔ±mlΔ±lΔ±k olarak belirtilmelidir, aksi takdirde zaman iΓ§inde eskimesi olasΔ±dΔ±r!
Orijinal kodun yazarΔ±, Effect'in herhangi bir reaktif deΔere baΔlΔ± olmadΔ±ΔΔ±nΔ± (`[]`) sΓΆyleyerek React'e "yalan sΓΆylemiΕtir". Bu nedenle React, `canMove` deΔiΕtikten sonra (ve onunla birlikte `handleMove`) Efekti yeniden senkronize etmedi. React, Efekti yeniden senkronize etmediΔi iΓ§in, dinleyici olarak eklenen `handleMove`, ilk render sΔ±rasΔ±nda oluΕturulan `handleMove` fonksiyonudur. Δ°lk render sΔ±rasΔ±nda `canMove` `true` idi, bu yΓΌzden ilk renderdan `handleMove` sonsuza kadar bu deΔeri gΓΆrecektir.
@@ -800,25 +789,9 @@ Orijinal kodun yazarΔ±, Effect'in herhangi bir reaktif deΔere baΔlΔ± olmadΔ±Δ
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export default function App() {
const [position, setPosition] = useState({ x: 0, y: 0 });
@@ -878,16 +851,10 @@ Linteri bastΔ±rmanΔ±n diΔer doΔru alternatifleri iΓ§in [Efekt BaΔΔ±mlΔ±lΔ±kla
### Efekt OlaylarΔ±nΔ±n SΔ±nΔ±rlamalarΔ± {/*limitations-of-effect-events*/}
-
-
-Bu bΓΆlΓΌmde, React'in kararlΔ± bir sΓΌrΓΌmΓΌnde henΓΌz yayΔ±nlanmamΔ±Ε **deneysel bir API** aΓ§Δ±klanmaktadΔ±r.
-
-
+Effect Event'lerin kullanΔ±m Εekli aΓ§Δ±sΔ±ndan oldukΓ§a sΔ±nΔ±rlΔ±dΔ±r:
-Efekt OlaylarΔ±, kullanma Εekliniz aΓ§Δ±sΔ±ndan oldukΓ§a sΔ±nΔ±rlΔ±dΔ±r:
-
-* **Sadece Efektlerin iΓ§inden Γ§aΔΔ±rΔ±n.**
-* **Asla diΔer bileΕenlere veya Hook'lara aktarmayΔ±n.**
+- **Sadece Efektlerin iΓ§inden Γ§aΔΔ±rΔ±n.**
+- **Asla diΔer bileΕenlere veya Hook'lara aktarmayΔ±n.**
ΓrneΔin, bir Efekt olayΔ±nΔ± Εu Εekilde bildirmeyin ve geΓ§irmeyin:
@@ -973,7 +940,7 @@ Bu kodu dΓΌzeltmek iΓ§in kurallara uymak yeterlidir.
-```js
+```js {expectedErrors: {'react-compiler': [14]}}
import { useState, useEffect } from 'react';
export default function Timer() {
@@ -1088,25 +1055,9 @@ GΓΆrΓΌnΓΌΕe gΓΆre zamanlayΔ±cΔ±yΔ± kuran Efekt `increment` deΔerine "tepki" ve
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export default function Timer() {
const [count, setCount] = useState(0);
@@ -1157,25 +1108,9 @@ Sorunu Γ§ΓΆzmek iΓ§in, Efektten bir `onTick` Efekt olayΔ± Γ§Δ±karΔ±n:
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export default function Timer() {
const [count, setCount] = useState(0);
@@ -1216,7 +1151,6 @@ export default function Timer() {
}
```
-
```css
button { margin: 10px; }
```
@@ -1233,31 +1167,15 @@ Bu ΓΆrnekte, aralΔ±k gecikmesini ΓΆzelleΕtirebilirsiniz. Bu, iki dΓΌΔme taraf
-Effect olaylarΔ± iΓ§indeki kod reaktif deΔildir. `setInterval` Γ§aΔrΔ±sΔ±nΔ±n yeniden Γ§alΔ±ΕmasΔ±nΔ± _istediΔiniz_ durumlar var mΔ±?
+Effect olaylarΔ± iΓ§indeki kod reaktif deΔildir. `setInterval` Γ§aΔrΔ±sΔ±nΔ±n yeniden Γ§alΔ±ΕmasΔ±nΔ± *istediΔiniz* durumlar var mΔ±?
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export default function Timer() {
const [count, setCount] = useState(0);
@@ -1313,7 +1231,6 @@ export default function Timer() {
}
```
-
```css
button { margin: 10px; }
```
@@ -1326,25 +1243,9 @@ YukarΔ±daki ΓΆrnekle ilgili sorun, kodun gerΓ§ekte ne yapmasΔ± gerektiΔini dΓΌ
-```json package.json hidden
-{
- "dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
- "react-scripts": "latest"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
- "eject": "react-scripts eject"
- }
-}
-```
-
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
export default function Timer() {
const [count, setCount] = useState(0);
@@ -1402,7 +1303,7 @@ button { margin: 10px; }
-Genel olarak, bir kod parΓ§asΔ±nΔ±n *amacΔ±ndan* ziyade *zamanlamasΔ±na* odaklanan `onMount` gibi fonksiyonlara ΕΓΌpheyle yaklaΕmalΔ±sΔ±nΔ±z. Δ°lk baΕta "daha aΓ§Δ±klayΔ±cΔ±" gelebilir ancak amacΔ±nΔ±zΔ± gizler. Genel bir kural olarak, Efekt olaylarΔ± *kullanΔ±cΔ±nΔ±n* bakΔ±Ε aΓ§Δ±sΔ±ndan gerΓ§ekleΕen bir Εeye karΕΔ±lΔ±k gelmelidir. ΓrneΔin, `onMessage`, `onTick`, `onVisit` veya `onConnected` iyi Effect olay adlarΔ±dΔ±r. Δ°Γ§lerindeki kodun muhtemelen reaktif olmasΔ± gerekmeyecektir. Γte yandan, `onMount`, `onUpdate`, `onUnmount` veya `onAfterRender` o kadar geneldir ki, yanlΔ±ΕlΔ±kla * reaktif olmasΔ± gereken * kodlarΔ± bunlara koymak kolaydΔ±r. Bu nedenle, Efekt olaylarΔ±nΔ±zΔ± bazΔ± kodlarΔ±n ne zaman Γ§alΔ±ΕtΔ±ΔΔ±na gΓΆre deΔil, *kullanΔ±cΔ±nΔ±n ne olduΔunu dΓΌΕΓΌndΓΌΔΓΌne gΓΆre* adlandΔ±rmalΔ±sΔ±nΔ±z.
+Genel olarak, bir kod parΓ§asΔ±nΔ±n *amacΔ±ndan* ziyade *zamanlamasΔ±na* odaklanan `onMount` gibi fonksiyonlara ΕΓΌpheyle yaklaΕmalΔ±sΔ±nΔ±z. Δ°lk baΕta "daha aΓ§Δ±klayΔ±cΔ±" gelebilir ancak amacΔ±nΔ±zΔ± gizler. Genel bir kural olarak, Efekt olaylarΔ± *kullanΔ±cΔ±nΔ±n* bakΔ±Ε aΓ§Δ±sΔ±ndan gerΓ§ekleΕen bir Εeye karΕΔ±lΔ±k gelmelidir. ΓrneΔin, `onMessage`, `onTick`, `onVisit` veya `onConnected` iyi Effect olay adlarΔ±dΔ±r. Δ°Γ§lerindeki kodun muhtemelen reaktif olmasΔ± gerekmeyecektir. Γte yandan, `onMount`, `onUpdate`, `onUnmount` veya `onAfterRender` o kadar geneldir ki, yanlΔ±ΕlΔ±kla *reaktif olmasΔ± gereken* kodlarΔ± bunlara koymak kolaydΔ±r. Bu nedenle, Efekt olaylarΔ±nΔ±zΔ± bazΔ± kodlarΔ±n ne zaman Γ§alΔ±ΕtΔ±ΔΔ±na gΓΆre deΔil, *kullanΔ±cΔ±nΔ±n ne olduΔunu dΓΌΕΓΌndΓΌΔΓΌne gΓΆre* adlandΔ±rmalΔ±sΔ±nΔ±z.
@@ -1425,8 +1326,8 @@ Efektiniz hangi odaya baΔlΔ± olduΔunu bilir. Efekt OlayΔ±nΔ±za aktarmak isteye
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -1441,7 +1342,7 @@ Efektiniz hangi odaya baΔlΔ± olduΔunu bilir. Efekt OlayΔ±nΔ±za aktarmak isteye
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import { createConnection, sendMessage } from './chat.js';
import { showNotification } from './notifications.js';
@@ -1566,8 +1467,8 @@ Sorunu Γ§ΓΆzmek iΓ§in, Efekt olayΔ± iΓ§inde *en son* `roomId`yi okumak yerine, a
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -1582,7 +1483,7 @@ Sorunu Γ§ΓΆzmek iΓ§in, Efekt olayΔ± iΓ§inde *en son* `roomId`yi okumak yerine, a
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import { createConnection, sendMessage } from './chat.js';
import { showNotification } from './notifications.js';
@@ -1703,8 +1604,8 @@ Ek zorluΔu Γ§ΓΆzmek iΓ§in, bildirim zaman aΕΔ±mΔ± kimliΔini kaydedin ve Efekt
```json package.json hidden
{
"dependencies": {
- "react": "experimental",
- "react-dom": "experimental",
+ "react": "latest",
+ "react-dom": "latest",
"react-scripts": "latest",
"toastify-js": "1.12.0"
},
@@ -1719,7 +1620,7 @@ Ek zorluΔu Γ§ΓΆzmek iΓ§in, bildirim zaman aΕΔ±mΔ± kimliΔini kaydedin ve Efekt
```js
import { useState, useEffect } from 'react';
-import { experimental_useEffectEvent as useEffectEvent } from 'react';
+import { useEffectEvent } from 'react';
import { createConnection, sendMessage } from './chat.js';
import { showNotification } from './notifications.js';
@@ -1837,10 +1738,8 @@ label { display: block; margin-top: 10px; }
-
Bu, oda deΔiΕtirdiΔinizde ΓΆnceden planlanmΔ±Ε (ancak henΓΌz gΓΆrΓΌntΓΌlenmemiΕ) bildirimlerin iptal edilmesini saΔlar.
-
diff --git a/src/content/learn/setup.md b/src/content/learn/setup.md
new file mode 100644
index 000000000..ed2567318
--- /dev/null
+++ b/src/content/learn/setup.md
@@ -0,0 +1,30 @@
+---
+title: Setup
+---
+
+
+
+React integrates with tools like editors, TypeScript, browser extensions, and compilers. This section will help you get your environment set up.
+
+
+
+
+## Editor Setup {/*editor-setup*/}
+
+See our [recommended editors](/learn/editor-setup) and learn how to set them up to work with React.
+
+## Using TypeScript {/*using-typescript*/}
+
+TypeScript is a popular way to add type definitions to JavaScript codebases. [Learn how to integrate TypeScript into your React projects](/learn/typescript).
+
+## React Developer Tools {/*react-developer-tools*/}
+
+React Developer Tools is a browser extension that can inspect React components, edit props and state, and identify performance problems. Learn how to install it [here](learn/react-developer-tools).
+
+## React Compiler {/*react-compiler*/}
+
+React Compiler is a tool that automatically optimizes your React app. [Learn more](/learn/react-compiler).
+
+## Next steps {/*next-steps*/}
+
+Head to the [Quick Start](/learn) guide for a tour of the most important React concepts you will encounter every day.
diff --git a/src/content/learn/sharing-state-between-components.md b/src/content/learn/sharing-state-between-components.md
index 031e7fdfa..f959bfb5c 100644
--- a/src/content/learn/sharing-state-between-components.md
+++ b/src/content/learn/sharing-state-between-components.md
@@ -323,7 +323,7 @@ To see what this feels like in practice with a few more components, read [Thinki
#### Synced inputs {/*synced-inputs*/}
-These two inputs are independent. Make them stay in sync: editing one input should update the other input with the same text, and vice versa.
+These two inputs are independent. Make them stay in sync: editing one input should update the other input with the same text, and vice versa.
@@ -571,7 +571,7 @@ function SearchBar({ query, onChange }) {
function List({ items }) {
return (
-
+
{items.map(food => (
{food.name}
diff --git a/src/content/learn/start-a-new-react-project.md b/src/content/learn/start-a-new-react-project.md
index ba157076e..c1e3f54a2 100644
--- a/src/content/learn/start-a-new-react-project.md
+++ b/src/content/learn/start-a-new-react-project.md
@@ -4,20 +4,20 @@ title: Yeni bir React Projesi BaΕlatma
-Yeni bir uygulama veya tamamen React ile yeni bir web sitesi oluΕturmak istiyorsanΔ±z, toplulukta popΓΌler olan React destekli Γ§atΔ±lardan birini seΓ§menizi ΓΆneririz.
+Yeni bir uygulama veya tamamen React ile yeni bir web sitesi oluΕturmak istiyorsanΔ±z, toplulukta popΓΌler olan React destekli framework'lerden birini seΓ§menizi ΓΆneririz.
-React'Δ± bir Γ§atΔ± (framework) olmadan da kullanabilirsiniz; ancak Γ§oΔu uygulamanΔ±n ve sitenin sonunda kod bΓΆlme, yΓΆnlendirme, veri Γ§ekme ve HTML oluΕturma gibi yaygΔ±n sorunlara Γ§ΓΆzΓΌmler ΓΌrettiΔini gΓΆrdΓΌk. Bu sorunlar yalnΔ±zca React iΓ§in deΔil, tΓΌm UI kΓΌtΓΌphaneleri iΓ§in ortaktΔ±r.
+React'Δ± bir framework olmadan da kullanabilirsiniz; ancak Γ§oΔu uygulamanΔ±n ve sitenin sonunda kod bΓΆlme, yΓΆnlendirme, veri Γ§ekme ve HTML oluΕturma gibi yaygΔ±n sorunlara Γ§ΓΆzΓΌmler ΓΌrettiΔini gΓΆrdΓΌk. Bu sorunlar yalnΔ±zca React iΓ§in deΔil, tΓΌm UI kΓΌtΓΌphaneleri iΓ§in ortaktΔ±r.
-Bir Γ§atΔ±yla baΕlayarak, React'e hΔ±zlΔ± bir baΕlangΔ±Γ§ yapabilir ve sonrasΔ±nda kendi Γ§atΔ±nΔ±zΔ± oluΕturmaktan kurtulabilirsiniz.
+Bir framework'le baΕlayarak, React'e hΔ±zlΔ± bir baΕlangΔ±Γ§ yapabilir ve sonrasΔ±nda kendi framework'ΓΌnΓΌzΓΌ oluΕturmaktan kurtulabilirsiniz.
-#### React'Δ± bir Γ§atΔ± olmadan kullanabilir miyim? {/*can-i-use-react-without-a-framework*/}
+#### React'Δ± bir framework olmadan kullanabilir miyim? {/*can-i-use-react-without-a-framework*/}
-React'i kesinlikle bir Γ§atΔ± (framework) olmadan da kullanabilirsiniz - bu, [SayfanΔ±zΔ±n bir bΓΆlΓΌmΓΌ iΓ§in React'Δ± kullanΔ±n](/learn/add-react-to-an-existing-project#using-react-for-a-part-of-your-existing-page) ile aΓ§Δ±klanmaktadΔ±r **Ancak, tamamen React ile yeni bir uygulama veya site oluΕturuyorsanΔ±z, bir Γ§atΔ± kullanmanΔ±zΔ± ΓΆneririz.**
+React'i kesinlikle bir framework olmadan da kullanabilirsiniz - bu, [SayfanΔ±zΔ±n bir bΓΆlΓΌmΓΌ iΓ§in React'Δ± kullanΔ±n](/learn/add-react-to-an-existing-project#using-react-for-a-part-of-your-existing-page) ile aΓ§Δ±klanmaktadΔ±r **Ancak, tamamen React ile yeni bir uygulama veya site oluΕturuyorsanΔ±z, bir framework kullanmanΔ±zΔ± ΓΆneririz.**
Δ°Εte nedeni.
@@ -26,16 +26,16 @@ BaΕlangΔ±Γ§ta yΓΆnlendirme veya veri alΔ±mΔ±na ihtiyaΓ§ duymasanΔ±z bile, bunla
**Bu sorunlar React'a ΓΆzgΓΌ deΔildir. Δ°Εte bu yΓΌzden Svelte'nin SvelteKit'i, Vue'nun Nuxt'Δ± ve daha fazlasΔ± vardΔ±r.** Bu sorunlarΔ± kendi baΕΔ±nΔ±za Γ§ΓΆzmek iΓ§in, paketleyicinizi yΓΆnlendiricinizle ve veri alΔ±mΔ± kΓΌtΓΌphanenizle entegre etmeniz gerekecektir. Δ°lk kurulumu Γ§alΔ±ΕtΔ±rmak zor deΔildir, ancak zamanla bΓΌyΓΌyen bir uygulamanΔ±n hΔ±zlΔ± bir Εekilde yΓΌklenmesiyle ilgili birΓ§ok ince nokta vardΔ±r. SayfanΔ±n gereken verilerle paralel olarak, mΓΌmkΓΌn olan en az uygulama kodunu gΓΆndermek isteyeceksiniz, ancak bunu tek bir istemci-sunucu turunda yapacaksΔ±nΔ±z. Muhtemelen sayfanΔ±n, progresif iyileΕtirmeyi desteklemek iΓ§in JavaScript kodunuz Γ§alΔ±Εmadan ΓΆnce etkileΕimli olmasΔ±nΔ± isteyeceksiniz. Pazarlama sayfalarΔ±nΔ±z iΓ§in JavaScript devre dΔ±ΕΔ± bΔ±rakΔ±lsa bile her yerde barΔ±ndΔ±rΔ±labilen ve Γ§alΔ±Εabilen tamamen statik HTML dosyalarΔ± oluΕturmak isteyebilirsiniz. Bu yetenekleri kendiniz oluΕturmak gerΓ§ekten iΕ gerektirir.
-**Bu sayfadaki React Γ§atΔ±larΔ±, bu tΓΌr sorunlarΔ± varsayΔ±lan olarak Γ§ΓΆzer ve sizden ekstra Γ§alΔ±Εma gerektirmeden bunlarΔ± yapar.** Sizin iΓ§in Γ§ok hafif baΕlamalarΔ±na ve ardΔ±ndan uygulamanΔ±zΔ± ihtiyaΓ§larΔ±nΔ±zla birlikte ΓΆlΓ§eklendirmelerine izin verirler. Her React Γ§atΔ±sΔ±nΔ±n bir topluluΔu vardΔ±r, bu nedenle sorulara yanΔ±t bulmak ve araΓ§larΔ± yΓΌkseltmek daha kolaydΔ±r. ΓatΔ±lar ayrΔ±ca kodunuza yapΔ± saΔlar, bΓΆylece siz ve diΔerleri farklΔ± projeler arasΔ±nda baΔlam ve becerileri koruyabilirsiniz. Γte yandan, ΓΆzel bir kurulumla desteklenmeyen baΔΔ±mlΔ±lΔ±k sΓΌrΓΌmlerinde sΔ±kΔ±Εma olasΔ±lΔ±ΔΔ± daha yΓΌksektir ve esasen kendi Γ§atΔ±nΔ±zΔ± oluΕturacaksΔ±nΔ±z - her ne kadar topluluksuz ve yΓΌkseltme yolu olmayan bir Γ§atΔ± olsa da (ve geΓ§miΕte yaptΔ±ΔΔ±mΔ±zlar gibi daha daΔΔ±nΔ±k tasarlanmΔ±Ε).
+UygulamanΔ±zΔ±n bu framework'ler tarafΔ±ndan iyi sunulmayan olaΔandΔ±ΕΔ± kΔ±sΔ±tlamalarΔ± varsa veya bu sorunlarΔ± kendiniz Γ§ΓΆzmeyi tercih ediyorsanΔ±z, React ile kendi ΓΆzel kurulumunuzu yapabilirsiniz. npm'den `react` ve `react-dom`u alΔ±n, [Vite](https://vite.dev/) veya [Parcel](https://parceljs.org/) gibi bir bundler ile ΓΆzel derleme sΓΌrecinizi kurun ve yΓΆnlendirme, statik oluΕturma veya sunucu tarafΔ± oluΕturma ve daha fazlasΔ± iΓ§in ihtiyaΓ§ duyduΔunuz diΔer araΓ§larΔ± ekleyin.
-EΔer hala ikna olmadΔ±ysanΔ±z veya uygulamanΔ±zΔ±n bu Γ§atΔ±lar tarafΔ±ndan iyi hizmet edilmeyen sΔ±radΔ±ΕΔ± kΔ±sΔ±tlamalarΔ± varsa ve kendi ΓΆzel kurulumunuzu oluΕturmak istiyorsanΔ±z, sizi durduramayΔ±z - devam edin! `react` ve `react-dom`'u npm'den alΔ±n, [Vite](https://vitejs.dev/) veya [Parcel](https://parceljs.org/) gibi bir paketleyici ile ΓΆzel derleme sΓΌrecinizi ayarlayΔ±n ve yΓΆnlendirme, statik ΓΌretim veya sunucu tarafΔ± iΕleme ve daha fazlasΔ± iΓ§in ihtiyaΓ§ duyduΔunuz diΔer araΓ§larΔ± ekleyin.
+EΔer hala ikna olmadΔ±ysanΔ±z veya uygulamanΔ±zΔ±n bu framework'ler tarafΔ±ndan iyi hizmet edilmeyen sΔ±radΔ±ΕΔ± kΔ±sΔ±tlamalarΔ± varsa ve kendi ΓΆzel kurulumunuzu oluΕturmak istiyorsanΔ±z, sizi durduramayΔ±z - devam edin! `react` ve `react-dom`'u npm'den alΔ±n, [Vite](https://vitejs.dev/) veya [Parcel](https://parceljs.org/) gibi bir paketleyici ile ΓΆzel derleme sΓΌrecinizi ayarlayΔ±n ve yΓΆnlendirme, statik ΓΌretim veya sunucu tarafΔ± iΕleme ve daha fazlasΔ± iΓ§in ihtiyaΓ§ duyduΔunuz diΔer araΓ§larΔ± ekleyin.
-## CanlΔ± ortam seviyesi React ΓatΔ±larΔ± {/*production-grade-react-frameworks*/}
+## CanlΔ± ortam seviyesi React Framework'leri {/*production-grade-react-frameworks*/}
These frameworks support all the features you need to deploy and scale your app in production and are working towards supporting our [full-stack architecture vision](#which-features-make-up-the-react-teams-full-stack-architecture-vision). All of the frameworks we recommend are open source with active communities for support, and can be deployed to your own server or a hosting provider. If youβre a framework author interested in being included on this list, [please let us know](https://github.com/reactjs/react.dev/issues/new?assignees=&labels=type%3A+framework&projects=&template=3-framework.yml&title=%5BFramework%5D%3A+).
-**[Next.js](https://nextjs.org/), tam ΓΆzellikli bir React Γ§atΔ±sΔ±dΔ±r.** Γok yΓΆnlΓΌdΓΌr ve Γ§oΔunlukla, statik bir blogdan karmaΕΔ±k bir dinamik uygulamaya kadar, her bΓΌyΓΌklΓΌkte React uygulamasΔ± oluΕturmanΔ±za olanak tanΔ±r. Yeni bir Next.js projesi oluΕturmak iΓ§in terminalinizde Εunu Γ§alΔ±ΕtΔ±rΔ±n:
+**[Next.js](https://nextjs.org/), tam ΓΆzellikli bir React framework'ΓΌdΓΌr.** Γok yΓΆnlΓΌdΓΌr ve Γ§oΔunlukla, statik bir blogdan karmaΕΔ±k bir dinamik uygulamaya kadar, her bΓΌyΓΌklΓΌkte React uygulamasΔ± oluΕturmanΔ±za olanak tanΔ±r. Yeni bir Next.js projesi oluΕturmak iΓ§in terminalinizde Εunu Γ§alΔ±ΕtΔ±rΔ±n:
npx create-next-app@latest
@@ -47,7 +47,7 @@ Next.js [Vercel](https://vercel.com/) tarafΔ±ndan desteklenmektedir. Bir Next.js
### Remix {/*remix*/}
-**[Remix](https://remix.run/) iΓ§ iΓ§e yΓΆnlendirmeye sahip tam ΓΆzellikli bir React Γ§atΔ±sΔ±dΔ±r.** UygulamanΔ±zΔ± iΓ§ iΓ§e geΓ§miΕ parΓ§alara bΓΆlebilmenizi saΔlar ve bu parΓ§alar, kullanΔ±cΔ± iΕlemlerine karΕΔ±lΔ±k olarak paralel olarak veri yΓΌkleyebilir ve yenilenebilir. Yeni bir Remix projesi oluΕturmak iΓ§in Εunu Γ§alΔ±ΕtΔ±rΔ±n:
+**[Remix](https://remix.run/) iΓ§ iΓ§e yΓΆnlendirmeye sahip tam ΓΆzellikli bir React framework'ΓΌdΓΌr.** UygulamanΔ±zΔ± iΓ§ iΓ§e geΓ§miΕ parΓ§alara bΓΆlebilmenizi saΔlar ve bu parΓ§alar, kullanΔ±cΔ± iΕlemlerine karΕΔ±lΔ±k olarak paralel olarak veri yΓΌkleyebilir ve yenilenebilir. Yeni bir Remix projesi oluΕturmak iΓ§in Εunu Γ§alΔ±ΕtΔ±rΔ±n:
npx create-remix
@@ -59,7 +59,7 @@ Remix [Shopify](https://www.shopify.com/) tarafΔ±ndan desteklenmektedir. Yeni bi
### Gatsby {/*gatsby*/}
-**[Gatsby](https://www.gatsbyjs.com/) hΔ±zlΔ± CMS destekli web siteleri iΓ§in bir React Γ§atΔ±sΔ±dΔ±r.** Zengin eklenti ekosistemi ve GraphQL veri katmanΔ±, iΓ§eriΔi, API'leri ve hizmetleri tek bir web sitesinde entegre etmeyi basitleΕtirir. Yeni bir Gatsby projesi oluΕturmak iΓ§in Εunu Γ§alΔ±ΕtΔ±rΔ±n:
+**[Gatsby](https://www.gatsbyjs.com/) hΔ±zlΔ± CMS destekli web siteleri iΓ§in bir React framework'ΓΌdΓΌr.** Zengin eklenti ekosistemi ve GraphQL veri katmanΔ±, iΓ§eriΔi, API'leri ve hizmetleri tek bir web sitesinde entegre etmeyi basitleΕtirir. Yeni bir Gatsby projesi oluΕturmak iΓ§in Εunu Γ§alΔ±ΕtΔ±rΔ±n:
npx create-gatsby
@@ -71,7 +71,7 @@ Gatsby [Netlify](https://www.netlify.com/) tarafΔ±ndan desteklenmektedir. [Tam s
### Expo (yerel uygulamalar iΓ§in) {/*expo*/}
-**[Expo](https://expo.dev/), gerΓ§ekten yerel kullanΔ±cΔ± arayΓΌzlerine sahip evrensel Android, iOS ve web uygulamalarΔ± oluΕturmanΔ±za olanak tanΔ±yan bir React Γ§atΔ±sΔ±dΔ±r.** [React Native](https://reactnative.dev/) iΓ§in bir SDK saΔlar ve yerel parΓ§alarΔ±n kullanΔ±mΔ±nΔ± kolaylaΕtΔ±rΔ±r. Yeni bir Expo projesi oluΕturmak iΓ§in Εunu Γ§alΔ±ΕtΔ±rΔ±n:
+**[Expo](https://expo.dev/), gerΓ§ekten yerel kullanΔ±cΔ± arayΓΌzlerine sahip evrensel Android, iOS ve web uygulamalarΔ± oluΕturmanΔ±za olanak tanΔ±yan bir React framework'ΓΌdΓΌr.** [React Native](https://reactnative.dev/) iΓ§in bir SDK saΔlar ve yerel parΓ§alarΔ±n kullanΔ±mΔ±nΔ± kolaylaΕtΔ±rΔ±r. Yeni bir Expo projesi oluΕturmak iΓ§in Εunu Γ§alΔ±ΕtΔ±rΔ±n:
npx create-expo-app
@@ -83,13 +83,13 @@ Expo [Expo (firma)](https://expo.dev/about) tarafΔ±ndan desteklenmektedir. Expo
## Bleeding-edge React frameworks {/*bleeding-edge-react-frameworks*/}
-React'Δ± nasΔ±l daha da geliΕtirebileceΔimizi keΕfederken, React'Δ± Γ§atΔ±larla (ΓΆzellikle yΓΆnlendirme, paketleme ve sunucu teknolojileriyle) daha yakΔ±ndan entegre etmenin, React kullanΔ±cΔ±larΔ±nΔ±n daha iyi uygulamalar geliΕtirmelerine yardΔ±mcΔ± olmak iΓ§in en bΓΌyΓΌk fΔ±rsatΔ±mΔ±z olduΔunu fark ettik. Next.js ekibi, [React Sunucu BileΕenleri](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-server-components) gibi Γ§atΔ± baΔΔ±msΔ±z ileri seviye React ΓΆzelliklerinin araΕtΔ±rΔ±lmasΔ±, geliΕtirilmesi, entegrasyonu ve test edilmesi konusunda bizimle iΕbirliΔi yapmayΔ± kabul etti.
+React'Δ± nasΔ±l daha da geliΕtirebileceΔimizi keΕfederken, React'Δ± framework'lerde (ΓΆzellikle yΓΆnlendirme, paketleme ve sunucu teknolojileriyle) daha yakΔ±ndan entegre etmenin, React kullanΔ±cΔ±larΔ±nΔ±n daha iyi uygulamalar geliΕtirmelerine yardΔ±mcΔ± olmak iΓ§in en bΓΌyΓΌk fΔ±rsatΔ±mΔ±z olduΔunu fark ettik. Next.js ekibi, [React Sunucu BileΕenleri](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-server-components) gibi framework baΔΔ±msΔ±z ileri seviye React ΓΆzelliklerinin araΕtΔ±rΔ±lmasΔ±, geliΕtirilmesi, entegrasyonu ve test edilmesi konusunda bizimle iΕbirliΔi yapmayΔ± kabul etti.
-Bu ΓΆzellikler, her geΓ§en gΓΌn canlΔ± ortama hazΔ±r olmaya daha da yaklaΕΔ±yor ve bunlarΔ± entegre etme konusunda diΔer paketleyici ve Γ§atΔ± geliΕtiricileriyle gΓΆrΓΌΕmeler yapΔ±yoruz. Umut ediyoruz ki, bir veya iki yΔ±l iΓ§inde bu sayfadaki tΓΌm Γ§atΔ±lar, bu ΓΆzelliklere tam desteΔe sahip olacak. (EΔer bir Γ§atΔ± yazarΔ± olarak bu ΓΆzelliklerle deney yapmak iΓ§in bizimle ortaklΔ±k kurmak istiyorsanΔ±z, lΓΌtfen bize bildirin!)
+Bu ΓΆzellikler, her geΓ§en gΓΌn canlΔ± ortama hazΔ±r olmaya daha da yaklaΕΔ±yor ve bunlarΔ± entegre etme konusunda diΔer paketleyici ve framework geliΕtiricileriyle gΓΆrΓΌΕmeler yapΔ±yoruz. Umut ediyoruz ki, bir veya iki yΔ±l iΓ§inde bu sayfadaki tΓΌm framework'ler, bu ΓΆzelliklere tam desteΔe sahip olacak. (EΔer bir framework yazarΔ± olarak bu ΓΆzelliklerle deney yapmak iΓ§in bizimle ortaklΔ±k kurmak istiyorsanΔ±z, lΓΌtfen bize bildirin!)
### Next.js (App Router) {/*nextjs-app-router*/}
-**[Next.js App Router (Uygulama YΓΆnlendiricisi)](https://nextjs.org/docs), React ekibinin tam yΔ±ΔΔ±n mimari vizyonunu gerΓ§ekleΕtirmeyi amaΓ§layan Next.js API'lerinin yeniden tasarΔ±mΔ±dΔ±r.** Bu, sunucuda veya hatta derleme sΔ±rasΔ±nda Γ§alΔ±Εan eΕzamansΔ±z bileΕenlerde veri almanΔ±za olanak tanΔ±r.
+**[Next.js App Router (Uygulama YΓΆnlendiricisi)](https://nextjs.org/docs), React ekibinin tam yΔ±ΔΔ±n mimari vizyonunu gerΓ§ekleΕtirmeyi amaΓ§layan Next.js API'lerinin yeniden tasarΔ±mΔ±dΔ±r.** Bu, sunucuda veya hatta derleme sΔ±rasΔ±nda Γ§alΔ±Εan eΕzamansΔ±z bileΕenlerde veri getirmenize olanak tanΔ±r.
Next.js [Vercel](https://vercel.com/) tarafΔ±ndan desteklenmektedir. Bir Next.js uygulamasΔ±nΔ± herhangi bir Node.js sunucusuna, sunucusuz barΔ±ndΔ±rmaya (serverless) veya kendi sunucunuza [yapabilirsiniz](https://nextjs.org/docs/app/building-your-application/deploying). [TΓΌmΓΌyle statik Next.js uygulamalarΔ±](https://nextjs.org/docs/advanced-features/static-html-export) herhangi bir statik barΔ±ndΔ±rmaya kurulabilir.
@@ -123,6 +123,6 @@ Next.js'in Uygulama YΓΆnlendiricisi ayrΔ±ca [Suspense ile data getirme](/blog/20
```
-Sunucu BileΕenleri ve Suspense, Next.js ΓΆzelliklerinden ziyade React ΓΆzellikleridir. Bununla birlikte, bu ΓΆzellikleri Γ§atΔ± dΓΌzeyinde benimsemek, ΓΆnemli ΓΆlΓ§ΓΌde uygulama Γ§alΔ±ΕmasΔ± gerektiren ve destek almayΔ± gerektiren bir sΓΌreΓ§tir. Εu anda, Next.js Uygulama YΓΆnlendiricisi en eksiksiz uygulamadΔ±r. React ekibi, bu ΓΆzellikleri bir sonraki nesil Γ§erΓ§evelerde daha kolay uygulanabilir hale getirmek iΓ§in paketleyici geliΕtiricileriyle Γ§alΔ±ΕmaktadΔ±r.
+Sunucu BileΕenleri ve Suspense, Next.js ΓΆzelliklerinden ziyade React ΓΆzellikleridir. Bununla birlikte, bu ΓΆzellikleri framework dΓΌzeyinde benimsemek, ΓΆnemli ΓΆlΓ§ΓΌde uygulama Γ§alΔ±ΕmasΔ± gerektiren ve destek almayΔ± gerektiren bir sΓΌreΓ§tir. Εu anda, Next.js Uygulama YΓΆnlendiricisi en eksiksiz uygulamadΔ±r. React ekibi, bu ΓΆzellikleri bir sonraki nesil Γ§erΓ§evelerde daha kolay uygulanabilir hale getirmek iΓ§in paketleyici geliΕtiricileriyle Γ§alΔ±ΕmaktadΔ±r.
diff --git a/src/content/learn/state-a-components-memory.md b/src/content/learn/state-a-components-memory.md
index ce0f258d8..ccfd31fbe 100644
--- a/src/content/learn/state-a-components-memory.md
+++ b/src/content/learn/state-a-components-memory.md
@@ -23,7 +23,7 @@ BileΕenler, etkileΕimin bir sonucu olarak ekranda olanΔ± deΔiΕtirmeye sΔ±kl
-```js
+```js {expectedErrors: {'react-compiler': [7]}}
import { sculptureList } from './data.js';
export default function Gallery() {
@@ -40,14 +40,14 @@ export default function Gallery() {
Sonraki
- {sculpture.name},
- {sculpture.artist}
+ {sculpture.name}
+ by {sculpture.artist}