diff --git a/website/docs/12.x/_meta.json b/website/docs/12.x/_nav.json similarity index 100% rename from website/docs/12.x/_meta.json rename to website/docs/12.x/_nav.json diff --git a/website/docs/12.x/cookbook/basics/async-tests.md b/website/docs/12.x/cookbook/basics/async-tests.md index c3900d519..43e431402 100644 --- a/website/docs/12.x/cookbook/basics/async-tests.md +++ b/website/docs/12.x/cookbook/basics/async-tests.md @@ -5,7 +5,7 @@ Typically, you would write synchronous tests, as they are simple and get the work done. However, there are cases when using asynchronous (async) tests might be necessary or beneficial. The two most common cases are: 1. **Testing Code with asynchronous operations**: When your code relies on asynchronous operations, such as network calls or database queries, async tests are essential. Even though you should mock these network calls, the mock should act similarly to the actual behavior and hence by async. -2. **UserEvent API:** Using the [User Event API](docs/api/events/user-event) in your tests creates more realistic event handling. These interactions introduce delays (even though these are typically event-loop ticks with 0 ms delays), requiring async tests to handle the timing correctly. +2. **UserEvent API:** Using the [User Event API](/docs/api/events/user-event) in your tests creates more realistic event handling. These interactions introduce delays (even though these are typically event-loop ticks with 0 ms delays), requiring async tests to handle the timing correctly. Using async tests when needed ensures your tests are reliable and simulate real-world conditions accurately. @@ -45,9 +45,9 @@ There are several asynchronous utilities you might use in your tests. ### `findBy*` queries -The most common are the [`findBy*` queries](docs/api/queries#find-by). These are useful when waiting for a matching element to appear. They can be understood as a [`getBy*` queries](docs/api/queries#get-by) used in conjunction with a [`waitFor` function](docs/api/misc/async#waitfor). +The most common are the [`findBy*` queries](/docs/api/queries#find-by). These are useful when waiting for a matching element to appear. They can be understood as a [`getBy*` queries](/docs/api/queries#get-by) used in conjunction with a [`waitFor` function](/docs/api/misc/async#waitfor). -They accept the same predicates as `getBy*` queries like `findByRole`, `findByTest`, etc. They also have a multiple elements variant called [`findAllBy*`](docs/api/queries#find-all-by). +They accept the same predicates as `getBy*` queries like `findByRole`, `findByTest`, etc. They also have a multiple elements variant called [`findAllBy*`](/docs/api/queries#find-all-by). ```typescript function findByRole: ( @@ -71,7 +71,7 @@ Each query has a default `timeout` value of 1000 ms and a default `interval` of const button = await screen.findByRole('button'), { name: 'Start' }, { timeout: 1000, interval: 50 }); ``` -Alternatively, a default global `timeout` value can be set using the [`configure` function](docs/api/misc/config#configure): +Alternatively, a default global `timeout` value can be set using the [`configure` function](/docs/api/misc/config#configure): ```typescript configure({ asyncUtilTimeout: timeout }); @@ -103,7 +103,7 @@ If you want to use it with `getBy*` queries, use the `findBy*` queries instead, ### `waitForElementToBeRemoved` function -A specialized function, [`waitForElementToBeRemoved`](docs/api/misc/async#waitforelementtoberemoved), is used to verify that a matching element was present but has since been removed. +A specialized function, [`waitForElementToBeRemoved`](/docs/api/misc/async#waitforelementtoberemoved), is used to verify that a matching element was present but has since been removed. ```typescript function waitForElementToBeRemoved( diff --git a/website/docs/12.x/docs/api.md b/website/docs/12.x/docs/api.md index ced5fd96a..16c520e08 100644 --- a/website/docs/12.x/docs/api.md +++ b/website/docs/12.x/docs/api.md @@ -6,17 +6,17 @@ uri: /api React Native Testing Library consists of following APIs: -- [`render` function](docs/api/render) - render your UI components for testing purposes -- [`screen` object](docs/api/screen) - access rendered UI: - - [Queries](docs/api/queries) - find relevant components by various predicates: role, text, test ids, etc - - Lifecycle methods: [`rerender`](docs/api/screen#rerender), [`unmount`](docs/api/screen#unmount) - - Helpers: [`debug`](docs/api/screen#debug), [`toJSON`](docs/api/screen#tojson), [`root`](docs/api/screen#root) -- [Jest matchers](docs/api/jest-matchers) - validate assumptions about your UI -- [User Event](docs/api/events/user-event) - simulate common user interactions like [`press`](docs/api/events/user-event#press) or [`type`](docs/api/events/user-event#type) in a realistic way -- [Fire Event](docs/api/events/fire-event) - simulate any component event in a simplified way purposes +- [`render` function](/docs/api/render) - render your UI components for testing purposes +- [`screen` object](/docs/api/screen) - access rendered UI: + - [Queries](/docs/api/queries) - find relevant components by various predicates: role, text, test ids, etc + - Lifecycle methods: [`rerender`](/docs/api/screen#rerender), [`unmount`](/docs/api/screen#unmount) + - Helpers: [`debug`](/docs/api/screen#debug), [`toJSON`](/docs/api/screen#tojson), [`root`](/docs/api/screen#root) +- [Jest matchers](/docs/api/jest-matchers) - validate assumptions about your UI +- [User Event](/docs/api/events/user-event) - simulate common user interactions like [`press`](/docs/api/events/user-event#press) or [`type`](/docs/api/events/user-event#type) in a realistic way +- [Fire Event](/docs/api/events/fire-event) - simulate any component event in a simplified way purposes - Misc APIs: - - [`renderHook` function](docs/api/misc/render-hook) - render hooks for testing - - [Async utils](docs/api/misc/async): `findBy*` queries, `wait`, `waitForElementToBeRemoved` - - [Configuration](docs/api/misc/config): `configure`, `resetToDefaults` - - [Accessibility](docs/api/misc/accessibility): `isHiddenFromAccessibility` - - [Other](docs/api/misc/other): `within`, `act`, `cleanup` + - [`renderHook` function](/docs/api/misc/render-hook) - render hooks for testing + - [Async utils](/docs/api/misc/async): `findBy*` queries, `wait`, `waitForElementToBeRemoved` + - [Configuration](/docs/api/misc/config): `configure`, `resetToDefaults` + - [Accessibility](/docs/api/misc/accessibility): `isHiddenFromAccessibility` + - [Other](/docs/api/misc/other): `within`, `act`, `cleanup` diff --git a/website/docs/12.x/docs/api/events/fire-event.mdx b/website/docs/12.x/docs/api/events/fire-event.mdx index 7f072d48b..b051401c6 100644 --- a/website/docs/12.x/docs/api/events/fire-event.mdx +++ b/website/docs/12.x/docs/api/events/fire-event.mdx @@ -5,7 +5,7 @@ function fireEvent(element: ReactTestInstance, eventName: string, ...data: unkno ``` :::note -For common events like `press` or `type` it's recommended to use [User Event API](docs/api/events/user-event) as it offers +For common events like `press` or `type` it's recommended to use [User Event API](/docs/api/events/user-event) as it offers more realistic event simulation by emitting a sequence of events with proper event objects that mimic React Native runtime behavior. Use Fire Event for cases not supported by User Event and for triggering event handlers on composite components. @@ -62,7 +62,7 @@ fireEvent.press: (element: ReactTestInstance, ...data: Array) => void ``` :::note -It is recommended to use the User Event [`press()`](docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. +It is recommended to use the User Event [`press()`](/docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. ::: Invokes `press` event handler on the element or parent element in the tree. @@ -98,7 +98,7 @@ fireEvent.changeText: (element: ReactTestInstance, ...data: Array) => void ``` :::note -It is recommended to use the User Event [`type()`](docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. +It is recommended to use the User Event [`type()`](/docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. ::: Invokes `changeText` event handler on the element or parent element in the tree. @@ -153,6 +153,6 @@ fireEvent.scroll(screen.getByText('scroll-view'), eventData); :::note -Prefer using [`user.scrollTo`](docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. +Prefer using [`user.scrollTo`](/docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. ::: diff --git a/website/docs/12.x/docs/api/jest-matchers.mdx b/website/docs/12.x/docs/api/jest-matchers.mdx index 26255ada9..3e746fb51 100644 --- a/website/docs/12.x/docs/api/jest-matchers.mdx +++ b/website/docs/12.x/docs/api/jest-matchers.mdx @@ -27,7 +27,7 @@ Alternatively, you can add above script to your Jest configuration (usually loca ## Migration from legacy Jest Native matchers. -If you are already using legacy Jest Native matchers we have a [migration guide](docs/migration/jest-matchers) for moving to the built-in matchers. +If you are already using legacy Jest Native matchers we have a [migration guide](/docs/migration/jest-matchers) for moving to the built-in matchers. ## Checking element existence @@ -53,7 +53,7 @@ expect(element).toHaveTextContent( ) ``` -This allows you to assert whether the given element has the given text content or not. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given element has the given text content or not. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. ### `toContainElement()` @@ -87,7 +87,7 @@ expect(element).toHaveDisplayValue( ) ``` -This allows you to assert whether the given `TextInput` element has a specified display value. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given `TextInput` element has a specified display value. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. ### `toHaveAccessibilityValue()` @@ -202,7 +202,7 @@ expect(element).toHaveAccessibleName( ) ``` -This allows you to assert whether the given element has a specified accessible name. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given element has a specified accessible name. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. The accessible name will be computed based on `aria-labelledby`, `accessibilityLabelledBy`, `aria-label`, and `accessibilityLabel` props, in the absence of these props, the element text content will be used. diff --git a/website/docs/12.x/docs/api/misc/async.mdx b/website/docs/12.x/docs/api/misc/async.mdx index 5eb8fe310..d2bdd75d6 100644 --- a/website/docs/12.x/docs/api/misc/async.mdx +++ b/website/docs/12.x/docs/api/misc/async.mdx @@ -2,7 +2,7 @@ ## `findBy*` queries -The `findBy*` queries are used to find elements that are not instantly available but will be added as a result of some asynchronous action. Learn more details [here](docs/api/queries#find-by). +The `findBy*` queries are used to find elements that are not instantly available but will be added as a result of some asynchronous action. Learn more details [here](/docs/api/queries#find-by). ## `waitFor` @@ -101,7 +101,7 @@ In order to properly use `waitFor` you need at least React >=16.9.0 (featuring a ::: :::note -If you receive warnings related to `act()` function consult our [Understanding Act](docs/advanced/understanding-act.md) function document. +If you receive warnings related to `act()` function consult our [Understanding Act](/docs/advanced/understanding-act.md) function document. ::: ## `waitForElementToBeRemoved` @@ -134,5 +134,5 @@ In order to properly use `waitForElementToBeRemoved` you need at least React >=1 ::: :::note -If you receive warnings related to `act()` function consult our [Understanding Act](docs/advanced/understanding-act.md) function document. +If you receive warnings related to `act()` function consult our [Understanding Act](/docs/advanced/understanding-act.md) function document. ::: diff --git a/website/docs/12.x/docs/api/misc/config.mdx b/website/docs/12.x/docs/api/misc/config.mdx index fb54d8ac0..203edc526 100644 --- a/website/docs/12.x/docs/api/misc/config.mdx +++ b/website/docs/12.x/docs/api/misc/config.mdx @@ -19,7 +19,7 @@ Default timeout, in ms, for async helper functions (`waitFor`, `waitForElementTo ### `defaultIncludeHiddenElements` option -Default value for [includeHiddenElements](docs/api/queries#includehiddenelements-option) query option for all queries. The default value is set to `false`, so all queries will not match [elements hidden from accessibility](#ishiddenfromaccessibility). This is because the users of the app would not be able to see such elements. +Default value for [includeHiddenElements](/docs/api/queries#includehiddenelements-option) query option for all queries. The default value is set to `false`, so all queries will not match [elements hidden from accessibility](#ishiddenfromaccessibility). This is because the users of the app would not be able to see such elements. This option is also available as `defaultHidden` alias for compatibility with [React Testing Library](https://testing-library.com/docs/dom-testing-library/api-configuration/#defaulthidden). diff --git a/website/docs/12.x/docs/api/misc/other.mdx b/website/docs/12.x/docs/api/misc/other.mdx index 8100981c3..a82941fb1 100644 --- a/website/docs/12.x/docs/api/misc/other.mdx +++ b/website/docs/12.x/docs/api/misc/other.mdx @@ -8,7 +8,7 @@ function within(element: ReactTestInstance): Queries {} function getQueriesForElement(element: ReactTestInstance): Queries {} ``` -`within` (also available as `getQueriesForElement` alias) performs [queries](docs/api/queries) scoped to given element. +`within` (also available as `getQueriesForElement` alias) performs [queries](/docs/api/queries) scoped to given element. :::note Please note that additional `render` specific operations like `update`, `unmount`, `debug`, `toJSON` are _not_ included. @@ -31,7 +31,7 @@ Use cases for scoped queries include: Useful function to help testing components that use hooks API. By default any `render`, `update`, `fireEvent`, and `waitFor` calls are wrapped by this function, so there is no need to wrap it manually. This method is re-exported from [`react-test-renderer`](https://github.com/facebook/react/blob/main/packages/react-test-renderer/src/ReactTestRenderer.js#L567]). -Consult our [Understanding Act function](docs/advanced/understanding-act.md) document for more understanding of its intricacies. +Consult our [Understanding Act function](/docs/advanced/understanding-act.md) document for more understanding of its intricacies. ## `cleanup` diff --git a/website/docs/12.x/docs/api/queries.mdx b/website/docs/12.x/docs/api/queries.mdx index e7034c683..480e73566 100644 --- a/website/docs/12.x/docs/api/queries.mdx +++ b/website/docs/12.x/docs/api/queries.mdx @@ -49,14 +49,14 @@ For this query, `getBy*` is the query variant, and `*ByRole` is the predicate. The query variants describe the expected number (and timing) of matching elements, so they differ in their return type. -| Variant | Assertion | Return type | Is Async? | -| ---------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | -| [`getBy*`](docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | -| [`getAllBy*`](docs/api/queries#get-all-by) | At least one matching element | `Array` | No | -| [`queryBy*`](docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | -| [`queryAllBy*`](docs/api/queries#query-all-by) | No assertion | `Array` | No | -| [`findBy*`](docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | -| [`findAllBy*`](docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | +| Variant | Assertion | Return type | Is Async? | +| ----------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | +| [`getBy*`](/docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | +| [`getAllBy*`](/docs/api/queries#get-all-by) | At least one matching element | `Array` | No | +| [`queryBy*`](/docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | +| [`queryAllBy*`](/docs/api/queries#query-all-by) | No assertion | `Array` | No | +| [`findBy*`](/docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | +| [`findAllBy*`](/docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | Queries work as implicit assertions on the number of matching elements and will throw an error when the assertion fails. @@ -121,7 +121,7 @@ findAllByX( `findAllBy*` queries return a promise which resolves to an array of matching elements. The promise is rejected if no elements match after a default timeout of 1000 ms. :::info -`findBy*` and `findAllBy*` queries accept optional `waitForOptions` object arguments, which can contain `timeout`, `interval` and `onTimeout` properties which have the same meaning as respective options for [`waitFor`](docs/api/misc/async#waitfor) function. +`findBy*` and `findAllBy*` queries accept optional `waitForOptions` object arguments, which can contain `timeout`, `interval` and `onTimeout` properties which have the same meaning as respective options for [`waitFor`](/docs/api/misc/async#waitfor) function. ::: :::info @@ -196,27 +196,27 @@ const element3 = screen.getByRole('button', { name: 'Hello', disabled: true }); - `disabled`: You can filter elements by their disabled state (coming either from `aria-disabled` prop or `accessbilityState.disabled` prop). The possible values are `true` or `false`. Querying `disabled: false` will also match elements with `disabled: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `disabled` state. - - This option can alternatively be expressed using the [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) Jest matchers. + - This option can alternatively be expressed using the [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) Jest matchers. - `selected`: You can filter elements by their selected state (coming either from `aria-selected` prop or `accessbilityState.selected` prop). The possible values are `true` or `false`. Querying `selected: false` will also match elements with `selected: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `selected` state. - - This option can alternatively be expressed using the [`toBeSelected()`](docs/api/jest-matchers#tobeselected) Jest matcher. + - This option can alternatively be expressed using the [`toBeSelected()`](/docs/api/jest-matchers#tobeselected) Jest matcher. * `checked`: You can filter elements by their checked state (coming either from `aria-checked` prop or `accessbilityState.checked` prop). The possible values are `true`, `false`, or `"mixed"`. - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `checked` state. - - This option can alternatively be expressed using the [`toBeChecked()` / `toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) Jest matchers. + - This option can alternatively be expressed using the [`toBeChecked()` / `toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) Jest matchers. * `busy`: You can filter elements by their busy state (coming either from `aria-busy` prop or `accessbilityState.busy` prop). The possible values are `true` or `false`. Querying `busy: false` will also match elements with `busy: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `busy` state. - - This option can alternatively be expressed using the [`toBeBusy()`](docs/api/jest-matchers#tobebusy) Jest matcher. + - This option can alternatively be expressed using the [`toBeBusy()`](/docs/api/jest-matchers#tobebusy) Jest matcher. * `expanded`: You can filter elements by their expanded state (coming either from `aria-expanded` prop or `accessbilityState.expanded` prop). The possible values are `true` or `false`. - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `expanded` state. - - This option can alternatively be expressed using the [`toBeExpanded()` / `toBeCollapsed()`](docs/api/jest-matchers#tobeexpanded) Jest matchers. + - This option can alternatively be expressed using the [`toBeExpanded()` / `toBeCollapsed()`](/docs/api/jest-matchers#tobeexpanded) Jest matchers. * `value`: Filter elements by their accessibility value, based on either `aria-valuemin`, `aria-valuemax`, `aria-valuenow`, `aria-valuetext` or `accessibilityValue` props. Accessiblity value conceptually consists of numeric `min`, `max` and `now` entries, as well as string `text` entry. - See React Native [accessibilityValue](https://reactnative.dev/docs/accessibility#accessibilityvalue) docs to learn more about the accessibility value concept. - - This option can alternatively be expressed using the [`toHaveAccessibilityValue()`](docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher. + - This option can alternatively be expressed using the [`toHaveAccessibilityValue()`](/docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher. ### `*ByLabelText` {#by-label-text} @@ -383,9 +383,9 @@ Usually query first argument can be a **string** or a **regex**. All queries tak #### `includeHiddenElements` option -All queries have the `includeHiddenElements` option which affects whether [elements hidden from accessibility](docs/api/misc/accessibility#ishiddenfromaccessibility) are matched by the query. By default queries will not match hidden elements, because the users of the app would not be able to see such elements. +All queries have the `includeHiddenElements` option which affects whether [elements hidden from accessibility](/docs/api/misc/accessibility#ishiddenfromaccessibility) are matched by the query. By default queries will not match hidden elements, because the users of the app would not be able to see such elements. -You can configure the default value with the [`configure` function](docs/api/misc/config#configure). +You can configure the default value with the [`configure` function](/docs/api/misc/config#configure). This option is also available as `hidden` alias for compatibility with [React Testing Library](https://testing-library.com/docs/queries/byrole#hidden). diff --git a/website/docs/12.x/docs/api/render.mdx b/website/docs/12.x/docs/api/render.mdx index eb6cdc9f2..583ff3006 100644 --- a/website/docs/12.x/docs/api/render.mdx +++ b/website/docs/12.x/docs/api/render.mdx @@ -60,6 +60,6 @@ React Test Renderer does not enforce this check; hence, by default, React Native ### Result {#render-result} -The `render` function returns the same queries and utilities as the [`screen`](docs/api/screen) object. We recommended using the `screen` object as more developer-friendly way. +The `render` function returns the same queries and utilities as the [`screen`](/docs/api/screen) object. We recommended using the `screen` object as more developer-friendly way. See [this article](https://kentcdodds.com/blog/common-mistakes-with-react-testing-library#not-using-screen) from Kent C. Dodds for more details. diff --git a/website/docs/12.x/docs/api/screen.mdx b/website/docs/12.x/docs/api/screen.mdx index 73e99e83a..d71483fd8 100644 --- a/website/docs/12.x/docs/api/screen.mdx +++ b/website/docs/12.x/docs/api/screen.mdx @@ -14,13 +14,13 @@ let screen: { The `screen` object offers a recommended way to access queries and utilities for the currently rendered UI. -This object is assigned after the `render` call and cleared after each test by calling [`cleanup`](docs/api/misc/other#cleanup). If no `render` call has been made in a given test, then it holds a special object and throws a helpful error on each property and method access. +This object is assigned after the `render` call and cleared after each test by calling [`cleanup`](/docs/api/misc/other#cleanup). If no `render` call has been made in a given test, then it holds a special object and throws a helpful error on each property and method access. ### `...queries` The most important feature of `screen` is providing a set of helpful queries that allow you to find certain elements in the view hierarchy. -See [Queries](docs/api/queries) for a complete list. +See [Queries](/docs/api/queries) for a complete list. #### Example @@ -129,7 +129,7 @@ Get the rendered component JSON representation, e.g. for snapshot testing. const root: ReactTestInstance; ``` -Returns the rendered root [host element](docs/advanced/testing-env#host-and-composite-components). +Returns the rendered root [host element](/docs/advanced/testing-env#host-and-composite-components). This API is primarily useful for component tests, as it allows you to access root host view without using `*ByTestId` queries or similar methods. @@ -143,7 +143,7 @@ This API typically will return a composite view, which goes against recommended const UNSAFE_root: ReactTestInstance; ``` -Returns the rendered [composite root element](docs/advanced/testing-env#host-and-composite-components). +Returns the rendered [composite root element](/docs/advanced/testing-env#host-and-composite-components). :::note This API has been previously named `container` for compatibility with [React Testing Library](https://testing-library.com/docs/react-testing-library/other#container-1). However, despite the same name, the actual behavior has been significantly different; hence, we decided to change the name to `UNSAFE_root`. diff --git a/website/docs/12.x/docs/guides/faq.mdx b/website/docs/12.x/docs/guides/faq.mdx index 8a446bfb7..4c6098acf 100644 --- a/website/docs/12.x/docs/guides/faq.mdx +++ b/website/docs/12.x/docs/guides/faq.mdx @@ -9,9 +9,9 @@ or iOS simulator/Android emulator to provision the underlying OS and platform AP Instead of using React Native renderer, it simulates only the JavaScript part of its runtime using [React Test Renderer](https://reactjs.org/docs/test-renderer.html) while providing queries -and event APIs ([User Event](docs/api/events/user-event), [Fire Event](docs/api/events/fire-event)) that mimicking certain behaviors from the actual runtime. +and event APIs ([User Event](/docs/api/events/user-event), [Fire Event](/docs/api/events/fire-event)) that mimicking certain behaviors from the actual runtime. -You can learn more about our testing environment [here](docs/advanced/testing-env). +You can learn more about our testing environment [here](/docs/advanced/testing-env). This approach has specific benefits and shortfalls. On the positive side: @@ -25,7 +25,7 @@ On the negative side: - you cannot test native features - it might not perfectly simulate certain JavaScript features, but we are working on it -The [User Event interactions](docs/api/events/user-event) solve some of the simulation issues, as they offer more realistic event handling than the basic [Fire Event API](docs/api/events/fire-event). +The [User Event interactions](/docs/api/events/user-event) solve some of the simulation issues, as they offer more realistic event handling than the basic [Fire Event API](/docs/api/events/fire-event). ## Should I use/migrate to `screen` queries? @@ -36,4 +36,4 @@ For new code, you are encouraged to use `screen` as there are some good reasons ## Should I use/migrate to User Event interactions? -We encourage you to migrate existing tests to use the [User Event interactions](docs/api/events/user-event), which offer more realistic event handling than the basic [Fire Event API](docs/api/events/fire-event). Hence, it will provide more confidence in the quality of your code. +We encourage you to migrate existing tests to use the [User Event interactions](/docs/api/events/user-event), which offer more realistic event handling than the basic [Fire Event API](/docs/api/events/fire-event). Hence, it will provide more confidence in the quality of your code. diff --git a/website/docs/12.x/docs/guides/how-to-query.mdx b/website/docs/12.x/docs/guides/how-to-query.mdx index 12be2a442..11c977de1 100644 --- a/website/docs/12.x/docs/guides/how-to-query.mdx +++ b/website/docs/12.x/docs/guides/how-to-query.mdx @@ -18,14 +18,14 @@ For this query, `getBy*` is the query variant, and `*ByRole` is the predicate. The query variants describe the expected number (and timing) of matching elements, so they differ in their return type. -| Variant | Assertion | Return type | Is Async? | -| ---------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | -| [`getBy*`](docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | -| [`getAllBy*`](docs/api/queries#get-all-by) | At least one matching element | `Array` | No | -| [`queryBy*`](docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | -| [`queryAllBy*`](docs/api/queries#query-all-by) | No assertion | `Array` | No | -| [`findBy*`](docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | -| [`findAllBy*`](docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | +| Variant | Assertion | Return type | Is Async? | +| ----------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | +| [`getBy*`](/docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | +| [`getAllBy*`](/docs/api/queries#get-all-by) | At least one matching element | `Array` | No | +| [`queryBy*`](/docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | +| [`queryAllBy*`](/docs/api/queries#query-all-by) | No assertion | `Array` | No | +| [`findBy*`](/docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | +| [`findAllBy*`](/docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | Queries work as implicit assertions on the number of matching elements and will throw an error when the assertion fails. @@ -38,7 +38,7 @@ Here are general guidelines for picking idiomatic query variants: 1. Use `getBy*` in the most common case when you expect a **single matching element**. Use other queries only in more specific cases. 2. Use `findBy*` when an element is not yet in the element tree, but you expect it to be there as a **result of some asynchronous action**. 3. Use `getAllBy*` (and `findAllBy*` for async) if you expect **more than one matching element**, e.g. in a list. -4. Use `queryBy*` only when element **should not exist** to use it together with e.g. [`not.toBeOnTheScreen()`](docs/api/jest-matchers#tobeonthescreen) matcher. +4. Use `queryBy*` only when element **should not exist** to use it together with e.g. [`not.toBeOnTheScreen()`](/docs/api/jest-matchers#tobeonthescreen) matcher. Avoid using `queryAllBy*` in regular tests, as it provides no assertions on the number of matching elements. You may still find it useful when building reusable custom testing tools. @@ -46,15 +46,15 @@ Avoid using `queryAllBy*` in regular tests, as it provides no assertions on the The query predicate describes how you decide whether to match the given element. -| Predicate | Supported elements | Inspected props | -| ------------------------------------------------------------ | ------------------ | ------------------------------------------------------------------------------------------- | -| [`*ByRole`](docs/api/queries#by-role) | all host elements | `role`, `accessibilityRole`,
optional: accessible name, accessibility state and value | -| [`*ByLabelText`](docs/api/queries#by-label-text) | all host elements | `aria-label`, `aria-labelledby`,
`accessibilityLabel`, `accessibilityLabelledBy` | -| [`*ByDisplayValue`](docs/api/queries#by-display-value) | `TextInput` | `value`, `defaultValue` | -| [`*ByPlaceholderText`](docs/api/queries#by-placeholder-text) | `TextInput` | `placeholder` | -| [`*ByText`](docs/api/queries#by-text) | `Text` | `children` (text content) | -| [`*ByHintText`](docs/api/queries#by-hint-text) | all host elements | `accessibilityHint` | -| [`*ByTestId`](docs/api/queries#by-test-id) | all host elements | `testID` | +| Predicate | Supported elements | Inspected props | +| ------------------------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------- | +| [`*ByRole`](/docs/api/queries#by-role) | all host elements | `role`, `accessibilityRole`,
optional: accessible name, accessibility state and value | +| [`*ByLabelText`](/docs/api/queries#by-label-text) | all host elements | `aria-label`, `aria-labelledby`,
`accessibilityLabel`, `accessibilityLabelledBy` | +| [`*ByDisplayValue`](/docs/api/queries#by-display-value) | `TextInput` | `value`, `defaultValue` | +| [`*ByPlaceholderText`](/docs/api/queries#by-placeholder-text) | `TextInput` | `placeholder` | +| [`*ByText`](/docs/api/queries#by-text) | `Text` | `children` (text content) | +| [`*ByHintText`](/docs/api/queries#by-hint-text) | all host elements | `accessibilityHint` | +| [`*ByTestId`](/docs/api/queries#by-test-id) | all host elements | `testID` | ### Idiomatic query predicates @@ -64,7 +64,7 @@ It is recommended to use query predicates in the following order of priority: ### 1. By Role query {#by-role-query} -The first and most versatile predicate is [`*ByRole`](docs/api/queries#by-role), which starts with the semantic role of the element and can be further narrowed down with additional options. React Native has two role systems, the web/ARIA-compatible one based on [`role`](https://reactnative.dev/docs/accessibility#role) prop and the traditional one based on [`accessibilityRole`](https://reactnative.dev/docs/accessibility#accessibilityrole) prop, you can use either of these. +The first and most versatile predicate is [`*ByRole`](/docs/api/queries#by-role), which starts with the semantic role of the element and can be further narrowed down with additional options. React Native has two role systems, the web/ARIA-compatible one based on [`role`](https://reactnative.dev/docs/accessibility#role) prop and the traditional one based on [`accessibilityRole`](https://reactnative.dev/docs/accessibility#accessibilityrole) prop, you can use either of these. In most cases, you need to set accessibility roles explicitly (or your component library can set some of them for you). These roles allow assistive technologies (like screen readers) and testing code to understand your view hierarchy better. @@ -88,7 +88,7 @@ Some frequently used roles include: #### Name option {#by-role-query-name-option} -Frequently, you will want to add the [`name`](docs/api/queries#by-role-options) option, which will match both the element's role and its accessible name (= element's accessibility label or text content). +Frequently, you will want to add the [`name`](/docs/api/queries#by-role-options) option, which will match both the element's role and its accessible name (= element's accessibility label or text content). Here are a couple of examples: @@ -104,9 +104,9 @@ Querying [`TextInput`](https://reactnative.dev/docs/textinput) elements presents Therefore, you can use the following queries to find relevant text inputs: -1. [`*ByLabelText`](docs/api/queries#by-label-text) - will match the accessibility label of the element. This query will match any host elements, including `TextInput` elements. -2. [`*ByPlaceholderText`](docs/api/queries#by-placeholder-text) - will match the placeholder of `TextInput` element. This query will match only `TextInput` elements. -3. [`*ByDisplayValue`](docs/api/queries#by-display-value) - will the current (or default) value of `TextInput` element. This query will match only `TextInput` elements. +1. [`*ByLabelText`](/docs/api/queries#by-label-text) - will match the accessibility label of the element. This query will match any host elements, including `TextInput` elements. +2. [`*ByPlaceholderText`](/docs/api/queries#by-placeholder-text) - will match the placeholder of `TextInput` element. This query will match only `TextInput` elements. +3. [`*ByDisplayValue`](/docs/api/queries#by-display-value) - will the current (or default) value of `TextInput` element. This query will match only `TextInput` elements. ### 3. Other accessible queries {#other-accessible-queries} @@ -114,12 +114,12 @@ These queries reflect the apps' user experience, both visual and through assisti These queries include: -- [`*ByText`](docs/api/queries#by-text) - will match the text content of the element. This query will match only `Text` elements. -- [`*ByLabelText`](docs/api/queries#by-label-text) - will match the accessibility label of the element. -- [`*ByHintText`](docs/api/queries#by-hint-text) - will match the accessibility hint of the element. +- [`*ByText`](/docs/api/queries#by-text) - will match the text content of the element. This query will match only `Text` elements. +- [`*ByLabelText`](/docs/api/queries#by-label-text) - will match the accessibility label of the element. +- [`*ByHintText`](/docs/api/queries#by-hint-text) - will match the accessibility hint of the element. ### 4. Test ID query {#test-id-query} -As a final predicate, you can use the `testID` prop to find relevant views. Using the [`*ByTestId`](docs/api/queries#by-test-id) predicate offers the most flexibility, but at the same time, it does not represent the user experience, as users are not aware of test IDs. +As a final predicate, you can use the `testID` prop to find relevant views. Using the [`*ByTestId`](/docs/api/queries#by-test-id) predicate offers the most flexibility, but at the same time, it does not represent the user experience, as users are not aware of test IDs. Note that using test IDs is a widespread technique in end-to-end testing due to various issues with querying views through other means **in its specific context**. Nevertheless, we still encourage you to use recommended RNTL queries as it will make your integration and component test more reliable and resilient. diff --git a/website/docs/12.x/docs/guides/troubleshooting.mdx b/website/docs/12.x/docs/guides/troubleshooting.mdx index 3ed8ae6b9..c71729cb2 100644 --- a/website/docs/12.x/docs/guides/troubleshooting.mdx +++ b/website/docs/12.x/docs/guides/troubleshooting.mdx @@ -73,7 +73,7 @@ When writing tests you may encounter warnings connected with `act()` function. T - sync `act()` warning - `Warning: An update to Component inside a test was not wrapped in act(...)` - async `act()` warning - `Warning: You called act(async () => ...) without await` -You can read more about `act()` function in our [understanding `act` function guide](docs/advanced/understanding-act). +You can read more about `act()` function in our [understanding `act` function guide](/docs/advanced/understanding-act). Normally, you should not encounter sync `act()` warnings, but if that happens this probably indicate an issue with your test and should be investigated. diff --git a/website/docs/12.x/docs/migration/jest-matchers.mdx b/website/docs/12.x/docs/migration/jest-matchers.mdx index 1ab9e05aa..09f8a518a 100644 --- a/website/docs/12.x/docs/migration/jest-matchers.mdx +++ b/website/docs/12.x/docs/migration/jest-matchers.mdx @@ -1,6 +1,6 @@ # Migration to built-in Jest matchers -This guide describes the steps necessary to migrate from [legacy Jest Native matchers v5](https://github.com/testing-library/jest-native) to [built-in Jest matchers](docs/api/jest-matchers). +This guide describes the steps necessary to migrate from [legacy Jest Native matchers v5](https://github.com/testing-library/jest-native) to [built-in Jest matchers](/docs/api/jest-matchers). ## General notes @@ -39,37 +39,37 @@ expect(element).legacy_toHaveAccessibilityState({ busy: true }); The following matchers should work the same: -- [`toBeEmptyElement()`](docs/api/jest-matchers#tobeemptyelement) -- [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) -- [`toBeOnTheScreen()`](docs/api/jest-matchers#tobeonthescreen) -- [`toBeVisible()`](docs/api/jest-matchers#tobevisible) -- [`toContainElement()`](docs/api/jest-matchers#tocontainelement) -- [`toHaveAccessibilityValue()`](docs/api/jest-matchers#tohaveaccessibilityvalue) -- [`toHaveDisplayValue()`](docs/api/jest-matchers#tohavedisplayvalue) -- [`toHaveProp()`](docs/api/jest-matchers#tohaveprop) -- [`toHaveStyle()`](docs/api/jest-matchers#tohavestyle) -- [`toHaveTextContent()`](docs/api/jest-matchers#tohavetextcontent) +- [`toBeEmptyElement()`](/docs/api/jest-matchers#tobeemptyelement) +- [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) +- [`toBeOnTheScreen()`](/docs/api/jest-matchers#tobeonthescreen) +- [`toBeVisible()`](/docs/api/jest-matchers#tobevisible) +- [`toContainElement()`](/docs/api/jest-matchers#tocontainelement) +- [`toHaveAccessibilityValue()`](/docs/api/jest-matchers#tohaveaccessibilityvalue) +- [`toHaveDisplayValue()`](/docs/api/jest-matchers#tohavedisplayvalue) +- [`toHaveProp()`](/docs/api/jest-matchers#tohaveprop) +- [`toHaveStyle()`](/docs/api/jest-matchers#tohavestyle) +- [`toHaveTextContent()`](/docs/api/jest-matchers#tohavetextcontent) ### Replaced matchers The `toHaveAccessibilityState()` matcher has been replaced by the following matchers: -- enabled state: [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) -- checked state: [`toBeChecked()` / `toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) -- selected state: [`toBeSelected()`](docs/api/jest-matchers#tobeselected) -- expanded state: [`toBeExpanded()` / `toBeCollapsed()`](docs/api/jest-matchers#tobeexpanded) -- busy state: [`toBeBusy()`](docs/api/jest-matchers#tobebusy) +- enabled state: [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) +- checked state: [`toBeChecked()` / `toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) +- selected state: [`toBeSelected()`](/docs/api/jest-matchers#tobeselected) +- expanded state: [`toBeExpanded()` / `toBeCollapsed()`](/docs/api/jest-matchers#tobeexpanded) +- busy state: [`toBeBusy()`](/docs/api/jest-matchers#tobebusy) The new matchers support both `accessibilityState` and `aria-*` props. ### Added matchers -New [`toHaveAccessibleName()`](docs/api/jest-matchers#tohaveaccessiblename) has been added. +New [`toHaveAccessibleName()`](/docs/api/jest-matchers#tohaveaccessiblename) has been added. ### Noteworthy details You should be aware of the following details: -- [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) matchers also check the disabled state for the element's ancestors and not only the element itself. This is the same as in legacy Jest Native matchers of the same name but differs from the removed `toHaveAccessibilityState()` matcher. -- [`toBeChecked()`](docs/api/jest-matchers#tobechecked) matcher supports only elements with a `checkbox`, `radio` and 'switch' role -- [`toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) matcher supports only elements with `checkbox` role +- [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) matchers also check the disabled state for the element's ancestors and not only the element itself. This is the same as in legacy Jest Native matchers of the same name but differs from the removed `toHaveAccessibilityState()` matcher. +- [`toBeChecked()`](/docs/api/jest-matchers#tobechecked) matcher supports only elements with a `checkbox`, `radio` and 'switch' role +- [`toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) matcher supports only elements with `checkbox` role diff --git a/website/docs/12.x/docs/migration/previous/v7.mdx b/website/docs/12.x/docs/migration/previous/v7.mdx index e3305669c..18b000e0d 100644 --- a/website/docs/12.x/docs/migration/previous/v7.mdx +++ b/website/docs/12.x/docs/migration/previous/v7.mdx @@ -112,4 +112,4 @@ There are slight differences in how `fireEvent` works in both libraries: +fireEvent(element: ReactTestInstance, eventName: string, ...data: Array) ``` 1. There is no `NativeTestEvent` - second and rest arguments are used instead. -1. There are only 3 short-hand events: [`fireEvent.press`](docs/api/events/fire-event#press), [`fireEvent.changeText`](docs/api/events/fire-event#change-text) and [`fireEvent.scroll`](docs/api/events/fire-event#scroll). For all other or custom events you can use the base signature. +1. There are only 3 short-hand events: [`fireEvent.press`](/docs/api/events/fire-event#press), [`fireEvent.changeText`](/docs/api/events/fire-event#change-text) and [`fireEvent.scroll`](/docs/api/events/fire-event#scroll). For all other or custom events you can use the base signature. diff --git a/website/docs/12.x/docs/migration/previous/v9.mdx b/website/docs/12.x/docs/migration/previous/v9.mdx index 6a8689ae0..60557c566 100644 --- a/website/docs/12.x/docs/migration/previous/v9.mdx +++ b/website/docs/12.x/docs/migration/previous/v9.mdx @@ -6,7 +6,7 @@ Version 7.0 brought React Native Testing Library into the `@testing-library` fam This is a backward compatible change. -When querying text, it is now possible to pass a [`TextMatch`](docs/api/queries#textmatch) to most text based queries, which lets you configure how `@testing-library/react-native` should match your text. For instance, passing `exact: false` will allow matching substrings and will ignore case: +When querying text, it is now possible to pass a [`TextMatch`](/docs/api/queries#textmatch) to most text based queries, which lets you configure how `@testing-library/react-native` should match your text. For instance, passing `exact: false` will allow matching substrings and will ignore case: ```jsx const { getByText } = render(Hello World); diff --git a/website/docs/12.x/docs/migration/v12.mdx b/website/docs/12.x/docs/migration/v12.mdx index cf14509f5..c00b9a01d 100644 --- a/website/docs/12.x/docs/migration/v12.mdx +++ b/website/docs/12.x/docs/migration/v12.mdx @@ -2,7 +2,7 @@ :::info -If you are already using legacy `@testing-library/jest-native` Jest Matchers, we have a [migration guide](docs/migration/jest-matchers) for moving to the built-in matchers. +If you are already using legacy `@testing-library/jest-native` Jest Matchers, we have a [migration guide](/docs/migration/jest-matchers) for moving to the built-in matchers. ::: @@ -14,7 +14,7 @@ React Native Testing Library 12 introduces a handful of breaking changes compare Elements that are hidden from accessiblity, e.g. elements on non-active screen when using React Navigation, now will not be matched by default by all queries. This is the effect of switching the default value for global config option `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) to `false`. -Previous behaviour of matching hidden elements can be enabled on query level using [includeHiddenElements](docs/api/queries#includehiddenelements-option) query options or globally using `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) configuration option. +Previous behaviour of matching hidden elements can be enabled on query level using [includeHiddenElements](/docs/api/queries#includehiddenelements-option) query options or globally using `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) configuration option. ### 2. `*ByRole` queries now return only accessibility elements @@ -51,7 +51,7 @@ While following elements will not match: ### 3. `*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return host elements -`*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return [host elements](docs/advanced/testing-env#host-and-composite-components), which is consistent with other queries. +`*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return [host elements](/docs/advanced/testing-env#host-and-composite-components), which is consistent with other queries. While potentially breaking, this should not cause issues in tests if you are using recommended queries and Jest Matchers from Jest Native package. diff --git a/website/docs/12.x/docs/start/quick-start.mdx b/website/docs/12.x/docs/start/quick-start.mdx index fd53f0a51..922a73559 100644 --- a/website/docs/12.x/docs/start/quick-start.mdx +++ b/website/docs/12.x/docs/start/quick-start.mdx @@ -1,4 +1,4 @@ -import { PackageManagerTabs } from 'rspress/theme'; +import { PackageManagerTabs } from '@rspress/core/theme'; # Quick Start diff --git a/website/docs/13.x/_meta.json b/website/docs/13.x/_nav.json similarity index 100% rename from website/docs/13.x/_meta.json rename to website/docs/13.x/_nav.json diff --git a/website/docs/13.x/cookbook/basics/async-tests.md b/website/docs/13.x/cookbook/basics/async-tests.md index c3900d519..43e431402 100644 --- a/website/docs/13.x/cookbook/basics/async-tests.md +++ b/website/docs/13.x/cookbook/basics/async-tests.md @@ -5,7 +5,7 @@ Typically, you would write synchronous tests, as they are simple and get the work done. However, there are cases when using asynchronous (async) tests might be necessary or beneficial. The two most common cases are: 1. **Testing Code with asynchronous operations**: When your code relies on asynchronous operations, such as network calls or database queries, async tests are essential. Even though you should mock these network calls, the mock should act similarly to the actual behavior and hence by async. -2. **UserEvent API:** Using the [User Event API](docs/api/events/user-event) in your tests creates more realistic event handling. These interactions introduce delays (even though these are typically event-loop ticks with 0 ms delays), requiring async tests to handle the timing correctly. +2. **UserEvent API:** Using the [User Event API](/docs/api/events/user-event) in your tests creates more realistic event handling. These interactions introduce delays (even though these are typically event-loop ticks with 0 ms delays), requiring async tests to handle the timing correctly. Using async tests when needed ensures your tests are reliable and simulate real-world conditions accurately. @@ -45,9 +45,9 @@ There are several asynchronous utilities you might use in your tests. ### `findBy*` queries -The most common are the [`findBy*` queries](docs/api/queries#find-by). These are useful when waiting for a matching element to appear. They can be understood as a [`getBy*` queries](docs/api/queries#get-by) used in conjunction with a [`waitFor` function](docs/api/misc/async#waitfor). +The most common are the [`findBy*` queries](/docs/api/queries#find-by). These are useful when waiting for a matching element to appear. They can be understood as a [`getBy*` queries](/docs/api/queries#get-by) used in conjunction with a [`waitFor` function](/docs/api/misc/async#waitfor). -They accept the same predicates as `getBy*` queries like `findByRole`, `findByTest`, etc. They also have a multiple elements variant called [`findAllBy*`](docs/api/queries#find-all-by). +They accept the same predicates as `getBy*` queries like `findByRole`, `findByTest`, etc. They also have a multiple elements variant called [`findAllBy*`](/docs/api/queries#find-all-by). ```typescript function findByRole: ( @@ -71,7 +71,7 @@ Each query has a default `timeout` value of 1000 ms and a default `interval` of const button = await screen.findByRole('button'), { name: 'Start' }, { timeout: 1000, interval: 50 }); ``` -Alternatively, a default global `timeout` value can be set using the [`configure` function](docs/api/misc/config#configure): +Alternatively, a default global `timeout` value can be set using the [`configure` function](/docs/api/misc/config#configure): ```typescript configure({ asyncUtilTimeout: timeout }); @@ -103,7 +103,7 @@ If you want to use it with `getBy*` queries, use the `findBy*` queries instead, ### `waitForElementToBeRemoved` function -A specialized function, [`waitForElementToBeRemoved`](docs/api/misc/async#waitforelementtoberemoved), is used to verify that a matching element was present but has since been removed. +A specialized function, [`waitForElementToBeRemoved`](/docs/api/misc/async#waitforelementtoberemoved), is used to verify that a matching element was present but has since been removed. ```typescript function waitForElementToBeRemoved( diff --git a/website/docs/13.x/docs/api.md b/website/docs/13.x/docs/api.md index ced5fd96a..16c520e08 100644 --- a/website/docs/13.x/docs/api.md +++ b/website/docs/13.x/docs/api.md @@ -6,17 +6,17 @@ uri: /api React Native Testing Library consists of following APIs: -- [`render` function](docs/api/render) - render your UI components for testing purposes -- [`screen` object](docs/api/screen) - access rendered UI: - - [Queries](docs/api/queries) - find relevant components by various predicates: role, text, test ids, etc - - Lifecycle methods: [`rerender`](docs/api/screen#rerender), [`unmount`](docs/api/screen#unmount) - - Helpers: [`debug`](docs/api/screen#debug), [`toJSON`](docs/api/screen#tojson), [`root`](docs/api/screen#root) -- [Jest matchers](docs/api/jest-matchers) - validate assumptions about your UI -- [User Event](docs/api/events/user-event) - simulate common user interactions like [`press`](docs/api/events/user-event#press) or [`type`](docs/api/events/user-event#type) in a realistic way -- [Fire Event](docs/api/events/fire-event) - simulate any component event in a simplified way purposes +- [`render` function](/docs/api/render) - render your UI components for testing purposes +- [`screen` object](/docs/api/screen) - access rendered UI: + - [Queries](/docs/api/queries) - find relevant components by various predicates: role, text, test ids, etc + - Lifecycle methods: [`rerender`](/docs/api/screen#rerender), [`unmount`](/docs/api/screen#unmount) + - Helpers: [`debug`](/docs/api/screen#debug), [`toJSON`](/docs/api/screen#tojson), [`root`](/docs/api/screen#root) +- [Jest matchers](/docs/api/jest-matchers) - validate assumptions about your UI +- [User Event](/docs/api/events/user-event) - simulate common user interactions like [`press`](/docs/api/events/user-event#press) or [`type`](/docs/api/events/user-event#type) in a realistic way +- [Fire Event](/docs/api/events/fire-event) - simulate any component event in a simplified way purposes - Misc APIs: - - [`renderHook` function](docs/api/misc/render-hook) - render hooks for testing - - [Async utils](docs/api/misc/async): `findBy*` queries, `wait`, `waitForElementToBeRemoved` - - [Configuration](docs/api/misc/config): `configure`, `resetToDefaults` - - [Accessibility](docs/api/misc/accessibility): `isHiddenFromAccessibility` - - [Other](docs/api/misc/other): `within`, `act`, `cleanup` + - [`renderHook` function](/docs/api/misc/render-hook) - render hooks for testing + - [Async utils](/docs/api/misc/async): `findBy*` queries, `wait`, `waitForElementToBeRemoved` + - [Configuration](/docs/api/misc/config): `configure`, `resetToDefaults` + - [Accessibility](/docs/api/misc/accessibility): `isHiddenFromAccessibility` + - [Other](/docs/api/misc/other): `within`, `act`, `cleanup` diff --git a/website/docs/13.x/docs/api/events/fire-event.mdx b/website/docs/13.x/docs/api/events/fire-event.mdx index b91b73533..37c018a3e 100644 --- a/website/docs/13.x/docs/api/events/fire-event.mdx +++ b/website/docs/13.x/docs/api/events/fire-event.mdx @@ -3,7 +3,7 @@ ## `fireEvent` {#fire-event} :::note -For common events like `press` or `type` it's recommended to use [User Event API](docs/api/events/user-event) as it offers +For common events like `press` or `type` it's recommended to use [User Event API](/docs/api/events/user-event) as it offers more realistic event simulation by emitting a sequence of events with proper event objects that mimic React Native runtime behavior. Use Fire Event for cases not supported by User Event and for triggering event handlers on composite components. @@ -60,7 +60,7 @@ FireEvent exposes convenience methods for common events like: `press`, `changeTe ### `fireEvent.press` {#press} :::note -It is recommended to use the User Event [`press()`](docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. +It is recommended to use the User Event [`press()`](/docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. ::: ```tsx @@ -99,7 +99,7 @@ expect(onPressMock).toHaveBeenCalledWith(eventData); ### `fireEvent.changeText` {#change-text} :::note -It is recommended to use the User Event [`type()`](docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. +It is recommended to use the User Event [`type()`](/docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. ::: ```tsx @@ -130,7 +130,7 @@ fireEvent.changeText(screen.getByPlaceholderText('Enter data'), CHANGE_TEXT); ### `fireEvent.scroll` {#scroll} :::note -Prefer using [`user.scrollTo`](docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. +Prefer using [`user.scrollTo`](/docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. ::: ```tsx @@ -167,7 +167,7 @@ fireEvent.scroll(screen.getByText('scroll-view'), eventData); ``` :::note -Prefer using [`user.scrollTo`](docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. +Prefer using [`user.scrollTo`](/docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. ::: ## `fireEventAsync` {#fire-event-async} @@ -204,7 +204,7 @@ Like `fireEvent`, `fireEventAsync` also provides convenience methods for common ### `fireEventAsync.press` {#async-press} :::note -It is recommended to use the User Event [`press()`](docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. +It is recommended to use the User Event [`press()`](/docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. ::: ```tsx @@ -219,7 +219,7 @@ Async version of [`fireEvent.press`](#press) designed for React 19 and React Sus ### `fireEventAsync.changeText` {#async-change-text} :::note -It is recommended to use the User Event [`type()`](docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. +It is recommended to use the User Event [`type()`](/docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. ::: ```tsx @@ -234,7 +234,7 @@ Async version of [`fireEvent.changeText`](#change-text) designed for React 19 an ### `fireEventAsync.scroll` {#async-scroll} :::note -Prefer using [`user.scrollTo`](docs/api/events/user-event#scrollto) over `fireEventAsync.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. +Prefer using [`user.scrollTo`](/docs/api/events/user-event#scrollto) over `fireEventAsync.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. ::: ```tsx diff --git a/website/docs/13.x/docs/api/jest-matchers.mdx b/website/docs/13.x/docs/api/jest-matchers.mdx index 0834b07bc..f1576848c 100644 --- a/website/docs/13.x/docs/api/jest-matchers.mdx +++ b/website/docs/13.x/docs/api/jest-matchers.mdx @@ -8,7 +8,7 @@ There is no need to set up the built-in matchers; they are automatically availab ## Migration from legacy Jest Native matchers. -If you are already using legacy Jest Native matchers we have a [migration guide](docs/migration/jest-matchers) for moving to the built-in matchers. +If you are already using legacy Jest Native matchers we have a [migration guide](/docs/migration/jest-matchers) for moving to the built-in matchers. ## Checking element existence @@ -34,7 +34,7 @@ expect(element).toHaveTextContent( ) ``` -This allows you to assert whether the given element has the given text content or not. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given element has the given text content or not. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. ### `toContainElement()` @@ -68,7 +68,7 @@ expect(element).toHaveDisplayValue( ) ``` -This allows you to assert whether the given `TextInput` element has a specified display value. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given `TextInput` element has a specified display value. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. ### `toHaveAccessibilityValue()` @@ -183,7 +183,7 @@ expect(element).toHaveAccessibleName( ) ``` -This allows you to assert whether the given element has a specified accessible name. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given element has a specified accessible name. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. The accessible name will be computed based on `aria-labelledby`, `accessibilityLabelledBy`, `aria-label`, and `accessibilityLabel` props, in the absence of these props, the element text content will be used. diff --git a/website/docs/13.x/docs/api/misc/async.mdx b/website/docs/13.x/docs/api/misc/async.mdx index 4638ece49..7db4fcff5 100644 --- a/website/docs/13.x/docs/api/misc/async.mdx +++ b/website/docs/13.x/docs/api/misc/async.mdx @@ -2,7 +2,7 @@ ## `findBy*` queries -The `findBy*` queries are used to find elements that are not instantly available but will be added as a result of some asynchronous action. Learn more details [here](docs/api/queries#find-by). +The `findBy*` queries are used to find elements that are not instantly available but will be added as a result of some asynchronous action. Learn more details [here](/docs/api/queries#find-by). ## `waitFor` @@ -91,7 +91,7 @@ await waitFor(() => { ``` :::note -If you receive warnings related to `act()` function consult our [Understanding Act](docs/advanced/understanding-act.md) function document. +If you receive warnings related to `act()` function consult our [Understanding Act](/docs/advanced/understanding-act.md) function document. ::: ## `waitForElementToBeRemoved` @@ -120,5 +120,5 @@ This method expects that the element is initially present in the render tree and You can use any of `getBy`, `getAllBy`, `queryBy` and `queryAllBy` queries for `expectation` parameter. :::note -If you receive warnings related to `act()` function consult our [Understanding Act](docs/advanced/understanding-act.md) function document. +If you receive warnings related to `act()` function consult our [Understanding Act](/docs/advanced/understanding-act.md) function document. ::: diff --git a/website/docs/13.x/docs/api/misc/config.mdx b/website/docs/13.x/docs/api/misc/config.mdx index b8566c66f..e942007ec 100644 --- a/website/docs/13.x/docs/api/misc/config.mdx +++ b/website/docs/13.x/docs/api/misc/config.mdx @@ -19,7 +19,7 @@ Default timeout, in ms, for async helper functions (`waitFor`, `waitForElementTo ### `defaultIncludeHiddenElements` option -Default value for [includeHiddenElements](docs/api/queries#includehiddenelements-option) query option for all queries. The default value is set to `false`, so all queries will not match [elements hidden from accessibility](#ishiddenfromaccessibility). This is because the users of the app would not be able to see such elements. +Default value for [includeHiddenElements](/docs/api/queries#includehiddenelements-option) query option for all queries. The default value is set to `false`, so all queries will not match [elements hidden from accessibility](#ishiddenfromaccessibility). This is because the users of the app would not be able to see such elements. This option is also available as `defaultHidden` alias for compatibility with [React Testing Library](https://testing-library.com/docs/dom-testing-library/api-configuration/#defaulthidden). diff --git a/website/docs/13.x/docs/api/misc/other.mdx b/website/docs/13.x/docs/api/misc/other.mdx index 8100981c3..a82941fb1 100644 --- a/website/docs/13.x/docs/api/misc/other.mdx +++ b/website/docs/13.x/docs/api/misc/other.mdx @@ -8,7 +8,7 @@ function within(element: ReactTestInstance): Queries {} function getQueriesForElement(element: ReactTestInstance): Queries {} ``` -`within` (also available as `getQueriesForElement` alias) performs [queries](docs/api/queries) scoped to given element. +`within` (also available as `getQueriesForElement` alias) performs [queries](/docs/api/queries) scoped to given element. :::note Please note that additional `render` specific operations like `update`, `unmount`, `debug`, `toJSON` are _not_ included. @@ -31,7 +31,7 @@ Use cases for scoped queries include: Useful function to help testing components that use hooks API. By default any `render`, `update`, `fireEvent`, and `waitFor` calls are wrapped by this function, so there is no need to wrap it manually. This method is re-exported from [`react-test-renderer`](https://github.com/facebook/react/blob/main/packages/react-test-renderer/src/ReactTestRenderer.js#L567]). -Consult our [Understanding Act function](docs/advanced/understanding-act.md) document for more understanding of its intricacies. +Consult our [Understanding Act function](/docs/advanced/understanding-act.md) document for more understanding of its intricacies. ## `cleanup` diff --git a/website/docs/13.x/docs/api/queries.mdx b/website/docs/13.x/docs/api/queries.mdx index e7034c683..480e73566 100644 --- a/website/docs/13.x/docs/api/queries.mdx +++ b/website/docs/13.x/docs/api/queries.mdx @@ -49,14 +49,14 @@ For this query, `getBy*` is the query variant, and `*ByRole` is the predicate. The query variants describe the expected number (and timing) of matching elements, so they differ in their return type. -| Variant | Assertion | Return type | Is Async? | -| ---------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | -| [`getBy*`](docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | -| [`getAllBy*`](docs/api/queries#get-all-by) | At least one matching element | `Array` | No | -| [`queryBy*`](docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | -| [`queryAllBy*`](docs/api/queries#query-all-by) | No assertion | `Array` | No | -| [`findBy*`](docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | -| [`findAllBy*`](docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | +| Variant | Assertion | Return type | Is Async? | +| ----------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | +| [`getBy*`](/docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | +| [`getAllBy*`](/docs/api/queries#get-all-by) | At least one matching element | `Array` | No | +| [`queryBy*`](/docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | +| [`queryAllBy*`](/docs/api/queries#query-all-by) | No assertion | `Array` | No | +| [`findBy*`](/docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | +| [`findAllBy*`](/docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | Queries work as implicit assertions on the number of matching elements and will throw an error when the assertion fails. @@ -121,7 +121,7 @@ findAllByX( `findAllBy*` queries return a promise which resolves to an array of matching elements. The promise is rejected if no elements match after a default timeout of 1000 ms. :::info -`findBy*` and `findAllBy*` queries accept optional `waitForOptions` object arguments, which can contain `timeout`, `interval` and `onTimeout` properties which have the same meaning as respective options for [`waitFor`](docs/api/misc/async#waitfor) function. +`findBy*` and `findAllBy*` queries accept optional `waitForOptions` object arguments, which can contain `timeout`, `interval` and `onTimeout` properties which have the same meaning as respective options for [`waitFor`](/docs/api/misc/async#waitfor) function. ::: :::info @@ -196,27 +196,27 @@ const element3 = screen.getByRole('button', { name: 'Hello', disabled: true }); - `disabled`: You can filter elements by their disabled state (coming either from `aria-disabled` prop or `accessbilityState.disabled` prop). The possible values are `true` or `false`. Querying `disabled: false` will also match elements with `disabled: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `disabled` state. - - This option can alternatively be expressed using the [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) Jest matchers. + - This option can alternatively be expressed using the [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) Jest matchers. - `selected`: You can filter elements by their selected state (coming either from `aria-selected` prop or `accessbilityState.selected` prop). The possible values are `true` or `false`. Querying `selected: false` will also match elements with `selected: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `selected` state. - - This option can alternatively be expressed using the [`toBeSelected()`](docs/api/jest-matchers#tobeselected) Jest matcher. + - This option can alternatively be expressed using the [`toBeSelected()`](/docs/api/jest-matchers#tobeselected) Jest matcher. * `checked`: You can filter elements by their checked state (coming either from `aria-checked` prop or `accessbilityState.checked` prop). The possible values are `true`, `false`, or `"mixed"`. - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `checked` state. - - This option can alternatively be expressed using the [`toBeChecked()` / `toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) Jest matchers. + - This option can alternatively be expressed using the [`toBeChecked()` / `toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) Jest matchers. * `busy`: You can filter elements by their busy state (coming either from `aria-busy` prop or `accessbilityState.busy` prop). The possible values are `true` or `false`. Querying `busy: false` will also match elements with `busy: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `busy` state. - - This option can alternatively be expressed using the [`toBeBusy()`](docs/api/jest-matchers#tobebusy) Jest matcher. + - This option can alternatively be expressed using the [`toBeBusy()`](/docs/api/jest-matchers#tobebusy) Jest matcher. * `expanded`: You can filter elements by their expanded state (coming either from `aria-expanded` prop or `accessbilityState.expanded` prop). The possible values are `true` or `false`. - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `expanded` state. - - This option can alternatively be expressed using the [`toBeExpanded()` / `toBeCollapsed()`](docs/api/jest-matchers#tobeexpanded) Jest matchers. + - This option can alternatively be expressed using the [`toBeExpanded()` / `toBeCollapsed()`](/docs/api/jest-matchers#tobeexpanded) Jest matchers. * `value`: Filter elements by their accessibility value, based on either `aria-valuemin`, `aria-valuemax`, `aria-valuenow`, `aria-valuetext` or `accessibilityValue` props. Accessiblity value conceptually consists of numeric `min`, `max` and `now` entries, as well as string `text` entry. - See React Native [accessibilityValue](https://reactnative.dev/docs/accessibility#accessibilityvalue) docs to learn more about the accessibility value concept. - - This option can alternatively be expressed using the [`toHaveAccessibilityValue()`](docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher. + - This option can alternatively be expressed using the [`toHaveAccessibilityValue()`](/docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher. ### `*ByLabelText` {#by-label-text} @@ -383,9 +383,9 @@ Usually query first argument can be a **string** or a **regex**. All queries tak #### `includeHiddenElements` option -All queries have the `includeHiddenElements` option which affects whether [elements hidden from accessibility](docs/api/misc/accessibility#ishiddenfromaccessibility) are matched by the query. By default queries will not match hidden elements, because the users of the app would not be able to see such elements. +All queries have the `includeHiddenElements` option which affects whether [elements hidden from accessibility](/docs/api/misc/accessibility#ishiddenfromaccessibility) are matched by the query. By default queries will not match hidden elements, because the users of the app would not be able to see such elements. -You can configure the default value with the [`configure` function](docs/api/misc/config#configure). +You can configure the default value with the [`configure` function](/docs/api/misc/config#configure). This option is also available as `hidden` alias for compatibility with [React Testing Library](https://testing-library.com/docs/queries/byrole#hidden). diff --git a/website/docs/13.x/docs/api/render.mdx b/website/docs/13.x/docs/api/render.mdx index 9ae4417a0..fbc2f597f 100644 --- a/website/docs/13.x/docs/api/render.mdx +++ b/website/docs/13.x/docs/api/render.mdx @@ -63,7 +63,7 @@ React Test Renderer does not enforce this check; hence, by default, React Native ### Result -The `render` function returns the same queries and utilities as the [`screen`](docs/api/screen) object. We recommended using the `screen` object as more developer-friendly way. +The `render` function returns the same queries and utilities as the [`screen`](/docs/api/screen) object. We recommended using the `screen` object as more developer-friendly way. See [this article](https://kentcdodds.com/blog/common-mistakes-with-react-testing-library#not-using-screen) from Kent C. Dodds for more details. @@ -99,7 +99,7 @@ test('async component test', async () => { ### Result -The `renderAsync` function returns a promise that resolves to the same queries and utilities as the [`screen`](docs/api/screen) object. We recommend using the `screen` object for queries and the lifecycle methods from the render result when needed. +The `renderAsync` function returns a promise that resolves to the same queries and utilities as the [`screen`](/docs/api/screen) object. We recommend using the `screen` object for queries and the lifecycle methods from the render result when needed. :::warning Async lifecycle methods diff --git a/website/docs/13.x/docs/api/screen.mdx b/website/docs/13.x/docs/api/screen.mdx index d9cf25865..99d63aaf4 100644 --- a/website/docs/13.x/docs/api/screen.mdx +++ b/website/docs/13.x/docs/api/screen.mdx @@ -14,13 +14,13 @@ let screen: { The `screen` object offers a recommended way to access queries and utilities for the currently rendered UI. -This object is assigned after the `render` call and cleared after each test by calling [`cleanup`](docs/api/misc/other#cleanup). If no `render` call has been made in a given test, then it holds a special object and throws a helpful error on each property and method access. +This object is assigned after the `render` call and cleared after each test by calling [`cleanup`](/docs/api/misc/other#cleanup). If no `render` call has been made in a given test, then it holds a special object and throws a helpful error on each property and method access. ### `...queries` The most important feature of `screen` is providing a set of helpful queries that allow you to find certain elements in the view hierarchy. -See [Queries](docs/api/queries) for a complete list. +See [Queries](/docs/api/queries) for a complete list. #### Example @@ -172,7 +172,7 @@ Get the rendered component JSON representation, e.g. for snapshot testing. const root: ReactTestInstance; ``` -Returns the rendered root [host element](docs/advanced/testing-env#host-and-composite-components). +Returns the rendered root [host element](/docs/advanced/testing-env#host-and-composite-components). This API is primarily useful for component tests, as it allows you to access root host view without using `*ByTestId` queries or similar methods. @@ -186,7 +186,7 @@ This API typically will return a composite view, which goes against recommended const UNSAFE_root: ReactTestInstance; ``` -Returns the rendered [composite root element](docs/advanced/testing-env#host-and-composite-components). +Returns the rendered [composite root element](/docs/advanced/testing-env#host-and-composite-components). :::note This API has been previously named `container` for compatibility with [React Testing Library](https://testing-library.com/docs/react-testing-library/other#container-1). However, despite the same name, the actual behavior has been significantly different; hence, we decided to change the name to `UNSAFE_root`. diff --git a/website/docs/13.x/docs/guides/faq.mdx b/website/docs/13.x/docs/guides/faq.mdx index 8a446bfb7..4c6098acf 100644 --- a/website/docs/13.x/docs/guides/faq.mdx +++ b/website/docs/13.x/docs/guides/faq.mdx @@ -9,9 +9,9 @@ or iOS simulator/Android emulator to provision the underlying OS and platform AP Instead of using React Native renderer, it simulates only the JavaScript part of its runtime using [React Test Renderer](https://reactjs.org/docs/test-renderer.html) while providing queries -and event APIs ([User Event](docs/api/events/user-event), [Fire Event](docs/api/events/fire-event)) that mimicking certain behaviors from the actual runtime. +and event APIs ([User Event](/docs/api/events/user-event), [Fire Event](/docs/api/events/fire-event)) that mimicking certain behaviors from the actual runtime. -You can learn more about our testing environment [here](docs/advanced/testing-env). +You can learn more about our testing environment [here](/docs/advanced/testing-env). This approach has specific benefits and shortfalls. On the positive side: @@ -25,7 +25,7 @@ On the negative side: - you cannot test native features - it might not perfectly simulate certain JavaScript features, but we are working on it -The [User Event interactions](docs/api/events/user-event) solve some of the simulation issues, as they offer more realistic event handling than the basic [Fire Event API](docs/api/events/fire-event). +The [User Event interactions](/docs/api/events/user-event) solve some of the simulation issues, as they offer more realistic event handling than the basic [Fire Event API](/docs/api/events/fire-event). ## Should I use/migrate to `screen` queries? @@ -36,4 +36,4 @@ For new code, you are encouraged to use `screen` as there are some good reasons ## Should I use/migrate to User Event interactions? -We encourage you to migrate existing tests to use the [User Event interactions](docs/api/events/user-event), which offer more realistic event handling than the basic [Fire Event API](docs/api/events/fire-event). Hence, it will provide more confidence in the quality of your code. +We encourage you to migrate existing tests to use the [User Event interactions](/docs/api/events/user-event), which offer more realistic event handling than the basic [Fire Event API](/docs/api/events/fire-event). Hence, it will provide more confidence in the quality of your code. diff --git a/website/docs/13.x/docs/guides/how-to-query.mdx b/website/docs/13.x/docs/guides/how-to-query.mdx index 12be2a442..11c977de1 100644 --- a/website/docs/13.x/docs/guides/how-to-query.mdx +++ b/website/docs/13.x/docs/guides/how-to-query.mdx @@ -18,14 +18,14 @@ For this query, `getBy*` is the query variant, and `*ByRole` is the predicate. The query variants describe the expected number (and timing) of matching elements, so they differ in their return type. -| Variant | Assertion | Return type | Is Async? | -| ---------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | -| [`getBy*`](docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | -| [`getAllBy*`](docs/api/queries#get-all-by) | At least one matching element | `Array` | No | -| [`queryBy*`](docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | -| [`queryAllBy*`](docs/api/queries#query-all-by) | No assertion | `Array` | No | -| [`findBy*`](docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | -| [`findAllBy*`](docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | +| Variant | Assertion | Return type | Is Async? | +| ----------------------------------------------- | ----------------------------- | ------------------------------------------ | --------- | +| [`getBy*`](/docs/api/queries#get-by) | Exactly one matching element | `ReactTestInstance` | No | +| [`getAllBy*`](/docs/api/queries#get-all-by) | At least one matching element | `Array` | No | +| [`queryBy*`](/docs/api/queries#query-by) | Zero or one matching element | ReactTestInstance | null | No | +| [`queryAllBy*`](/docs/api/queries#query-all-by) | No assertion | `Array` | No | +| [`findBy*`](/docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | +| [`findAllBy*`](/docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | Queries work as implicit assertions on the number of matching elements and will throw an error when the assertion fails. @@ -38,7 +38,7 @@ Here are general guidelines for picking idiomatic query variants: 1. Use `getBy*` in the most common case when you expect a **single matching element**. Use other queries only in more specific cases. 2. Use `findBy*` when an element is not yet in the element tree, but you expect it to be there as a **result of some asynchronous action**. 3. Use `getAllBy*` (and `findAllBy*` for async) if you expect **more than one matching element**, e.g. in a list. -4. Use `queryBy*` only when element **should not exist** to use it together with e.g. [`not.toBeOnTheScreen()`](docs/api/jest-matchers#tobeonthescreen) matcher. +4. Use `queryBy*` only when element **should not exist** to use it together with e.g. [`not.toBeOnTheScreen()`](/docs/api/jest-matchers#tobeonthescreen) matcher. Avoid using `queryAllBy*` in regular tests, as it provides no assertions on the number of matching elements. You may still find it useful when building reusable custom testing tools. @@ -46,15 +46,15 @@ Avoid using `queryAllBy*` in regular tests, as it provides no assertions on the The query predicate describes how you decide whether to match the given element. -| Predicate | Supported elements | Inspected props | -| ------------------------------------------------------------ | ------------------ | ------------------------------------------------------------------------------------------- | -| [`*ByRole`](docs/api/queries#by-role) | all host elements | `role`, `accessibilityRole`,
optional: accessible name, accessibility state and value | -| [`*ByLabelText`](docs/api/queries#by-label-text) | all host elements | `aria-label`, `aria-labelledby`,
`accessibilityLabel`, `accessibilityLabelledBy` | -| [`*ByDisplayValue`](docs/api/queries#by-display-value) | `TextInput` | `value`, `defaultValue` | -| [`*ByPlaceholderText`](docs/api/queries#by-placeholder-text) | `TextInput` | `placeholder` | -| [`*ByText`](docs/api/queries#by-text) | `Text` | `children` (text content) | -| [`*ByHintText`](docs/api/queries#by-hint-text) | all host elements | `accessibilityHint` | -| [`*ByTestId`](docs/api/queries#by-test-id) | all host elements | `testID` | +| Predicate | Supported elements | Inspected props | +| ------------------------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------- | +| [`*ByRole`](/docs/api/queries#by-role) | all host elements | `role`, `accessibilityRole`,
optional: accessible name, accessibility state and value | +| [`*ByLabelText`](/docs/api/queries#by-label-text) | all host elements | `aria-label`, `aria-labelledby`,
`accessibilityLabel`, `accessibilityLabelledBy` | +| [`*ByDisplayValue`](/docs/api/queries#by-display-value) | `TextInput` | `value`, `defaultValue` | +| [`*ByPlaceholderText`](/docs/api/queries#by-placeholder-text) | `TextInput` | `placeholder` | +| [`*ByText`](/docs/api/queries#by-text) | `Text` | `children` (text content) | +| [`*ByHintText`](/docs/api/queries#by-hint-text) | all host elements | `accessibilityHint` | +| [`*ByTestId`](/docs/api/queries#by-test-id) | all host elements | `testID` | ### Idiomatic query predicates @@ -64,7 +64,7 @@ It is recommended to use query predicates in the following order of priority: ### 1. By Role query {#by-role-query} -The first and most versatile predicate is [`*ByRole`](docs/api/queries#by-role), which starts with the semantic role of the element and can be further narrowed down with additional options. React Native has two role systems, the web/ARIA-compatible one based on [`role`](https://reactnative.dev/docs/accessibility#role) prop and the traditional one based on [`accessibilityRole`](https://reactnative.dev/docs/accessibility#accessibilityrole) prop, you can use either of these. +The first and most versatile predicate is [`*ByRole`](/docs/api/queries#by-role), which starts with the semantic role of the element and can be further narrowed down with additional options. React Native has two role systems, the web/ARIA-compatible one based on [`role`](https://reactnative.dev/docs/accessibility#role) prop and the traditional one based on [`accessibilityRole`](https://reactnative.dev/docs/accessibility#accessibilityrole) prop, you can use either of these. In most cases, you need to set accessibility roles explicitly (or your component library can set some of them for you). These roles allow assistive technologies (like screen readers) and testing code to understand your view hierarchy better. @@ -88,7 +88,7 @@ Some frequently used roles include: #### Name option {#by-role-query-name-option} -Frequently, you will want to add the [`name`](docs/api/queries#by-role-options) option, which will match both the element's role and its accessible name (= element's accessibility label or text content). +Frequently, you will want to add the [`name`](/docs/api/queries#by-role-options) option, which will match both the element's role and its accessible name (= element's accessibility label or text content). Here are a couple of examples: @@ -104,9 +104,9 @@ Querying [`TextInput`](https://reactnative.dev/docs/textinput) elements presents Therefore, you can use the following queries to find relevant text inputs: -1. [`*ByLabelText`](docs/api/queries#by-label-text) - will match the accessibility label of the element. This query will match any host elements, including `TextInput` elements. -2. [`*ByPlaceholderText`](docs/api/queries#by-placeholder-text) - will match the placeholder of `TextInput` element. This query will match only `TextInput` elements. -3. [`*ByDisplayValue`](docs/api/queries#by-display-value) - will the current (or default) value of `TextInput` element. This query will match only `TextInput` elements. +1. [`*ByLabelText`](/docs/api/queries#by-label-text) - will match the accessibility label of the element. This query will match any host elements, including `TextInput` elements. +2. [`*ByPlaceholderText`](/docs/api/queries#by-placeholder-text) - will match the placeholder of `TextInput` element. This query will match only `TextInput` elements. +3. [`*ByDisplayValue`](/docs/api/queries#by-display-value) - will the current (or default) value of `TextInput` element. This query will match only `TextInput` elements. ### 3. Other accessible queries {#other-accessible-queries} @@ -114,12 +114,12 @@ These queries reflect the apps' user experience, both visual and through assisti These queries include: -- [`*ByText`](docs/api/queries#by-text) - will match the text content of the element. This query will match only `Text` elements. -- [`*ByLabelText`](docs/api/queries#by-label-text) - will match the accessibility label of the element. -- [`*ByHintText`](docs/api/queries#by-hint-text) - will match the accessibility hint of the element. +- [`*ByText`](/docs/api/queries#by-text) - will match the text content of the element. This query will match only `Text` elements. +- [`*ByLabelText`](/docs/api/queries#by-label-text) - will match the accessibility label of the element. +- [`*ByHintText`](/docs/api/queries#by-hint-text) - will match the accessibility hint of the element. ### 4. Test ID query {#test-id-query} -As a final predicate, you can use the `testID` prop to find relevant views. Using the [`*ByTestId`](docs/api/queries#by-test-id) predicate offers the most flexibility, but at the same time, it does not represent the user experience, as users are not aware of test IDs. +As a final predicate, you can use the `testID` prop to find relevant views. Using the [`*ByTestId`](/docs/api/queries#by-test-id) predicate offers the most flexibility, but at the same time, it does not represent the user experience, as users are not aware of test IDs. Note that using test IDs is a widespread technique in end-to-end testing due to various issues with querying views through other means **in its specific context**. Nevertheless, we still encourage you to use recommended RNTL queries as it will make your integration and component test more reliable and resilient. diff --git a/website/docs/13.x/docs/guides/react-19.mdx b/website/docs/13.x/docs/guides/react-19.mdx index 17ba65b97..598e83a69 100644 --- a/website/docs/13.x/docs/guides/react-19.mdx +++ b/website/docs/13.x/docs/guides/react-19.mdx @@ -10,27 +10,27 @@ RNTL 13.3 introduces async versions of the core testing APIs to handle React 19' **Rendering APIs:** -- **[`renderAsync`](docs/api/render#render-async)** - async version of `render` -- **[`screen.rerenderAsync`](docs/api/screen#rerender-async)** - async version of `screen.rerender` -- **[`screen.unmountAsync`](docs/api/screen#unmount-async)** - async version of `screen.unmount` +- **[`renderAsync`](/docs/api/render#render-async)** - async version of `render` +- **[`screen.rerenderAsync`](/docs/api/screen#rerender-async)** - async version of `screen.rerender` +- **[`screen.unmountAsync`](/docs/api/screen#unmount-async)** - async version of `screen.unmount` **Event APIs:** -- **[`fireEventAsync`](docs/api/events/fire-event#fire-event-async)** - async version of `fireEvent` +- **[`fireEventAsync`](/docs/api/events/fire-event#fire-event-async)** - async version of `fireEvent` ## APIs that remain unchanged Many existing APIs continue to work without modification: -- **[Query methods](docs/api/queries)**: `screen.getBy*`, `screen.queryBy*`, `screen.findBy*` - all work the same -- **[User Event API](docs/api/events/user-event)** - already async, so no API changes needed -- **[Jest matchers](docs/api/jest-matchers)** - work with already-rendered output, so no changes required +- **[Query methods](/docs/api/queries)**: `screen.getBy*`, `screen.queryBy*`, `screen.findBy*` - all work the same +- **[User Event API](/docs/api/events/user-event)** - already async, so no API changes needed +- **[Jest matchers](/docs/api/jest-matchers)** - work with already-rendered output, so no changes required ## What changes in your tests ### Making tests async -The main change is using [`renderAsync`](docs/api/render#renderasync) instead of `render`, which requires: +The main change is using [`renderAsync`](/docs/api/render#renderasync) instead of `render`, which requires: 1. Making your test function `async` 2. Adding `await` before `renderAsync` diff --git a/website/docs/13.x/docs/guides/troubleshooting.mdx b/website/docs/13.x/docs/guides/troubleshooting.mdx index 3ed8ae6b9..c71729cb2 100644 --- a/website/docs/13.x/docs/guides/troubleshooting.mdx +++ b/website/docs/13.x/docs/guides/troubleshooting.mdx @@ -73,7 +73,7 @@ When writing tests you may encounter warnings connected with `act()` function. T - sync `act()` warning - `Warning: An update to Component inside a test was not wrapped in act(...)` - async `act()` warning - `Warning: You called act(async () => ...) without await` -You can read more about `act()` function in our [understanding `act` function guide](docs/advanced/understanding-act). +You can read more about `act()` function in our [understanding `act` function guide](/docs/advanced/understanding-act). Normally, you should not encounter sync `act()` warnings, but if that happens this probably indicate an issue with your test and should be investigated. diff --git a/website/docs/13.x/docs/migration/jest-matchers.mdx b/website/docs/13.x/docs/migration/jest-matchers.mdx index cb4939574..796dec8ff 100644 --- a/website/docs/13.x/docs/migration/jest-matchers.mdx +++ b/website/docs/13.x/docs/migration/jest-matchers.mdx @@ -1,6 +1,6 @@ # Migration to built-in Jest matchers -This guide describes the steps necessary to migrate from [legacy Jest Native matchers v5](https://github.com/testing-library/jest-native) to [built-in Jest matchers](docs/api/jest-matchers). +This guide describes the steps necessary to migrate from [legacy Jest Native matchers v5](https://github.com/testing-library/jest-native) to [built-in Jest matchers](/docs/api/jest-matchers). ## General notes @@ -34,37 +34,37 @@ expect(element).legacy_toHaveAccessibilityState({ busy: true }); The following matchers should work the same: -- [`toBeEmptyElement()`](docs/api/jest-matchers#tobeemptyelement) -- [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) -- [`toBeOnTheScreen()`](docs/api/jest-matchers#tobeonthescreen) -- [`toBeVisible()`](docs/api/jest-matchers#tobevisible) -- [`toContainElement()`](docs/api/jest-matchers#tocontainelement) -- [`toHaveAccessibilityValue()`](docs/api/jest-matchers#tohaveaccessibilityvalue) -- [`toHaveDisplayValue()`](docs/api/jest-matchers#tohavedisplayvalue) -- [`toHaveProp()`](docs/api/jest-matchers#tohaveprop) -- [`toHaveStyle()`](docs/api/jest-matchers#tohavestyle) -- [`toHaveTextContent()`](docs/api/jest-matchers#tohavetextcontent) +- [`toBeEmptyElement()`](/docs/api/jest-matchers#tobeemptyelement) +- [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) +- [`toBeOnTheScreen()`](/docs/api/jest-matchers#tobeonthescreen) +- [`toBeVisible()`](/docs/api/jest-matchers#tobevisible) +- [`toContainElement()`](/docs/api/jest-matchers#tocontainelement) +- [`toHaveAccessibilityValue()`](/docs/api/jest-matchers#tohaveaccessibilityvalue) +- [`toHaveDisplayValue()`](/docs/api/jest-matchers#tohavedisplayvalue) +- [`toHaveProp()`](/docs/api/jest-matchers#tohaveprop) +- [`toHaveStyle()`](/docs/api/jest-matchers#tohavestyle) +- [`toHaveTextContent()`](/docs/api/jest-matchers#tohavetextcontent) ### Replaced matchers The `toHaveAccessibilityState()` matcher has been replaced by the following matchers: -- enabled state: [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) -- checked state: [`toBeChecked()` / `toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) -- selected state: [`toBeSelected()`](docs/api/jest-matchers#tobeselected) -- expanded state: [`toBeExpanded()` / `toBeCollapsed()`](docs/api/jest-matchers#tobeexpanded) -- busy state: [`toBeBusy()`](docs/api/jest-matchers#tobebusy) +- enabled state: [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) +- checked state: [`toBeChecked()` / `toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) +- selected state: [`toBeSelected()`](/docs/api/jest-matchers#tobeselected) +- expanded state: [`toBeExpanded()` / `toBeCollapsed()`](/docs/api/jest-matchers#tobeexpanded) +- busy state: [`toBeBusy()`](/docs/api/jest-matchers#tobebusy) The new matchers support both `accessibilityState` and `aria-*` props. ### Added matchers -New [`toHaveAccessibleName()`](docs/api/jest-matchers#tohaveaccessiblename) has been added. +New [`toHaveAccessibleName()`](/docs/api/jest-matchers#tohaveaccessiblename) has been added. ### Noteworthy details You should be aware of the following details: -- [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) matchers also check the disabled state for the element's ancestors and not only the element itself. This is the same as in legacy Jest Native matchers of the same name but differs from the removed `toHaveAccessibilityState()` matcher. -- [`toBeChecked()`](docs/api/jest-matchers#tobechecked) matcher supports only elements with a `checkbox`, `radio` and 'switch' role -- [`toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) matcher supports only elements with `checkbox` role +- [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) matchers also check the disabled state for the element's ancestors and not only the element itself. This is the same as in legacy Jest Native matchers of the same name but differs from the removed `toHaveAccessibilityState()` matcher. +- [`toBeChecked()`](/docs/api/jest-matchers#tobechecked) matcher supports only elements with a `checkbox`, `radio` and 'switch' role +- [`toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) matcher supports only elements with `checkbox` role diff --git a/website/docs/13.x/docs/migration/previous/v12.mdx b/website/docs/13.x/docs/migration/previous/v12.mdx index cf14509f5..c00b9a01d 100644 --- a/website/docs/13.x/docs/migration/previous/v12.mdx +++ b/website/docs/13.x/docs/migration/previous/v12.mdx @@ -2,7 +2,7 @@ :::info -If you are already using legacy `@testing-library/jest-native` Jest Matchers, we have a [migration guide](docs/migration/jest-matchers) for moving to the built-in matchers. +If you are already using legacy `@testing-library/jest-native` Jest Matchers, we have a [migration guide](/docs/migration/jest-matchers) for moving to the built-in matchers. ::: @@ -14,7 +14,7 @@ React Native Testing Library 12 introduces a handful of breaking changes compare Elements that are hidden from accessiblity, e.g. elements on non-active screen when using React Navigation, now will not be matched by default by all queries. This is the effect of switching the default value for global config option `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) to `false`. -Previous behaviour of matching hidden elements can be enabled on query level using [includeHiddenElements](docs/api/queries#includehiddenelements-option) query options or globally using `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) configuration option. +Previous behaviour of matching hidden elements can be enabled on query level using [includeHiddenElements](/docs/api/queries#includehiddenelements-option) query options or globally using `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) configuration option. ### 2. `*ByRole` queries now return only accessibility elements @@ -51,7 +51,7 @@ While following elements will not match: ### 3. `*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return host elements -`*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return [host elements](docs/advanced/testing-env#host-and-composite-components), which is consistent with other queries. +`*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return [host elements](/docs/advanced/testing-env#host-and-composite-components), which is consistent with other queries. While potentially breaking, this should not cause issues in tests if you are using recommended queries and Jest Matchers from Jest Native package. diff --git a/website/docs/13.x/docs/migration/previous/v7.mdx b/website/docs/13.x/docs/migration/previous/v7.mdx index e3305669c..18b000e0d 100644 --- a/website/docs/13.x/docs/migration/previous/v7.mdx +++ b/website/docs/13.x/docs/migration/previous/v7.mdx @@ -112,4 +112,4 @@ There are slight differences in how `fireEvent` works in both libraries: +fireEvent(element: ReactTestInstance, eventName: string, ...data: Array) ``` 1. There is no `NativeTestEvent` - second and rest arguments are used instead. -1. There are only 3 short-hand events: [`fireEvent.press`](docs/api/events/fire-event#press), [`fireEvent.changeText`](docs/api/events/fire-event#change-text) and [`fireEvent.scroll`](docs/api/events/fire-event#scroll). For all other or custom events you can use the base signature. +1. There are only 3 short-hand events: [`fireEvent.press`](/docs/api/events/fire-event#press), [`fireEvent.changeText`](/docs/api/events/fire-event#change-text) and [`fireEvent.scroll`](/docs/api/events/fire-event#scroll). For all other or custom events you can use the base signature. diff --git a/website/docs/13.x/docs/migration/previous/v9.mdx b/website/docs/13.x/docs/migration/previous/v9.mdx index 6a8689ae0..60557c566 100644 --- a/website/docs/13.x/docs/migration/previous/v9.mdx +++ b/website/docs/13.x/docs/migration/previous/v9.mdx @@ -6,7 +6,7 @@ Version 7.0 brought React Native Testing Library into the `@testing-library` fam This is a backward compatible change. -When querying text, it is now possible to pass a [`TextMatch`](docs/api/queries#textmatch) to most text based queries, which lets you configure how `@testing-library/react-native` should match your text. For instance, passing `exact: false` will allow matching substrings and will ignore case: +When querying text, it is now possible to pass a [`TextMatch`](/docs/api/queries#textmatch) to most text based queries, which lets you configure how `@testing-library/react-native` should match your text. For instance, passing `exact: false` will allow matching substrings and will ignore case: ```jsx const { getByText } = render(Hello World); diff --git a/website/docs/13.x/docs/migration/v13.mdx b/website/docs/13.x/docs/migration/v13.mdx index cb7c99b7d..68594d5a9 100644 --- a/website/docs/13.x/docs/migration/v13.mdx +++ b/website/docs/13.x/docs/migration/v13.mdx @@ -16,7 +16,7 @@ Note: currently, stable React Native is unavailable for React 19, which is still This version introduces concurrent rendering by default. This change should not affect regular tests, but it might affect your tests if you use React Suspense or similar. -You can revert to legacy rendering by passing `concurrentRoot: false` to [render](docs/api/render#concurrent-root) or [configure](docs/api/misc/config#concurrent-root) methods. +You can revert to legacy rendering by passing `concurrentRoot: false` to [render](/docs/api/render#concurrent-root) or [configure](/docs/api/misc/config#concurrent-root) methods. Note: in React 19, concurrent rendering is the only supported rendering mode. @@ -37,11 +37,11 @@ We have removed this deprecated query as it is typically too general to give mea - [\*ByRole](#by-role) query with relevant state options: `disabled`, `selected`, `checked`, `expanded` and `busy` - use built-in Jest matchers to check the state of element found using some other query: - - enabled state: [toBeEnabled() / toBeDisabled()](docs/api/jest-matchers#tobeenabled) - - checked state: [toBeChecked() / toBePartiallyChecked()](docs/api/jest-matchers#tobechecked) - - selected state: [toBeSelected()](docs/api/jest-matchers#tobeselected) - - expanded state: [toBeExpanded() / toBeCollapsed()](docs/api/jest-matchers#tobeexpanded) - - busy state: [toBeBusy()](docs/api/jest-matchers#tobebusy) + - enabled state: [toBeEnabled() / toBeDisabled()](/docs/api/jest-matchers#tobeenabled) + - checked state: [toBeChecked() / toBePartiallyChecked()](/docs/api/jest-matchers#tobechecked) + - selected state: [toBeSelected()](/docs/api/jest-matchers#tobeselected) + - expanded state: [toBeExpanded() / toBeCollapsed()](/docs/api/jest-matchers#tobeexpanded) + - busy state: [toBeBusy()](/docs/api/jest-matchers#tobebusy) ```ts // Replace this: @@ -59,7 +59,7 @@ expect(view).toBeDisabled(); // Assert its accessibility state We have removed this deprecated query as it is typically too general to give meaningful results. Use one of the following options: -- [toHaveAccessibilityValue()](docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher to check the state of element found using some other query +- [toHaveAccessibilityValue()](/docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher to check the state of element found using some other query - [\*ByRole](#by-role) query with `value` option ```ts @@ -90,7 +90,7 @@ preset: 'react-native'; ### Removed `debug.shallow` -We didn't support shallow rendering for the time being. Now, we are removing the last remains of it: `debug.shallow()`. If you are interested in shallow rendering see [here](docs/migration/previous/v2#removed-global-shallow-function). +We didn't support shallow rendering for the time being. Now, we are removing the last remains of it: `debug.shallow()`. If you are interested in shallow rendering see [here](/docs/migration/previous/v2#removed-global-shallow-function). ### Changes to accessibility label calculation diff --git a/website/docs/13.x/docs/start/quick-start.mdx b/website/docs/13.x/docs/start/quick-start.mdx index 8a813a9ae..56b158cc8 100644 --- a/website/docs/13.x/docs/start/quick-start.mdx +++ b/website/docs/13.x/docs/start/quick-start.mdx @@ -1,4 +1,4 @@ -import { PackageManagerTabs } from 'rspress/theme'; +import { PackageManagerTabs } from '@rspress/core/theme'; # Quick Start diff --git a/website/docs/14.x/_meta.json b/website/docs/14.x/_nav.json similarity index 100% rename from website/docs/14.x/_meta.json rename to website/docs/14.x/_nav.json diff --git a/website/docs/14.x/cookbook/basics/async-events.md b/website/docs/14.x/cookbook/basics/async-events.md index 9734570d0..214a453c8 100644 --- a/website/docs/14.x/cookbook/basics/async-events.md +++ b/website/docs/14.x/cookbook/basics/async-events.md @@ -46,9 +46,9 @@ There are several asynchronous utilities you might use in your tests. ### `findBy*` queries -The most common are the [`findBy*` queries](docs/api/queries#find-by). These are useful when waiting for a matching element to appear. They can be understood as a [`getBy*` queries](docs/api/queries#get-by) used in conjunction with a [`waitFor` function](docs/api/misc/async#waitfor). +The most common are the [`findBy*` queries](/docs/api/queries#find-by). These are useful when waiting for a matching element to appear. They can be understood as a [`getBy*` queries](/docs/api/queries#get-by) used in conjunction with a [`waitFor` function](/docs/api/misc/async#waitfor). -They accept the same predicates as `getBy*` queries like `findByRole`, `findByTest`, etc. They also have a multiple elements variant called [`findAllBy*`](docs/api/queries#find-all-by). +They accept the same predicates as `getBy*` queries like `findByRole`, `findByTest`, etc. They also have a multiple elements variant called [`findAllBy*`](/docs/api/queries#find-all-by). ```typescript function findByRole: ( @@ -76,7 +76,7 @@ const button = await screen.findByRole( ); ``` -Alternatively, a default global `timeout` value can be set using the [`configure` function](docs/api/misc/config#configure): +Alternatively, a default global `timeout` value can be set using the [`configure` function](/docs/api/misc/config#configure): ```typescript configure({ asyncUtilTimeout: timeout }); @@ -108,7 +108,7 @@ If you want to use it with `getBy*` queries, use the `findBy*` queries instead, ### `waitForElementToBeRemoved` function -A specialized function, [`waitForElementToBeRemoved`](docs/api/misc/async#waitforelementtoberemoved), is used to verify that a matching element was present but has since been removed. +A specialized function, [`waitForElementToBeRemoved`](/docs/api/misc/async#waitforelementtoberemoved), is used to verify that a matching element was present but has since been removed. ```typescript function waitForElementToBeRemoved( diff --git a/website/docs/14.x/docs/api.md b/website/docs/14.x/docs/api.md index ced5fd96a..16c520e08 100644 --- a/website/docs/14.x/docs/api.md +++ b/website/docs/14.x/docs/api.md @@ -6,17 +6,17 @@ uri: /api React Native Testing Library consists of following APIs: -- [`render` function](docs/api/render) - render your UI components for testing purposes -- [`screen` object](docs/api/screen) - access rendered UI: - - [Queries](docs/api/queries) - find relevant components by various predicates: role, text, test ids, etc - - Lifecycle methods: [`rerender`](docs/api/screen#rerender), [`unmount`](docs/api/screen#unmount) - - Helpers: [`debug`](docs/api/screen#debug), [`toJSON`](docs/api/screen#tojson), [`root`](docs/api/screen#root) -- [Jest matchers](docs/api/jest-matchers) - validate assumptions about your UI -- [User Event](docs/api/events/user-event) - simulate common user interactions like [`press`](docs/api/events/user-event#press) or [`type`](docs/api/events/user-event#type) in a realistic way -- [Fire Event](docs/api/events/fire-event) - simulate any component event in a simplified way purposes +- [`render` function](/docs/api/render) - render your UI components for testing purposes +- [`screen` object](/docs/api/screen) - access rendered UI: + - [Queries](/docs/api/queries) - find relevant components by various predicates: role, text, test ids, etc + - Lifecycle methods: [`rerender`](/docs/api/screen#rerender), [`unmount`](/docs/api/screen#unmount) + - Helpers: [`debug`](/docs/api/screen#debug), [`toJSON`](/docs/api/screen#tojson), [`root`](/docs/api/screen#root) +- [Jest matchers](/docs/api/jest-matchers) - validate assumptions about your UI +- [User Event](/docs/api/events/user-event) - simulate common user interactions like [`press`](/docs/api/events/user-event#press) or [`type`](/docs/api/events/user-event#type) in a realistic way +- [Fire Event](/docs/api/events/fire-event) - simulate any component event in a simplified way purposes - Misc APIs: - - [`renderHook` function](docs/api/misc/render-hook) - render hooks for testing - - [Async utils](docs/api/misc/async): `findBy*` queries, `wait`, `waitForElementToBeRemoved` - - [Configuration](docs/api/misc/config): `configure`, `resetToDefaults` - - [Accessibility](docs/api/misc/accessibility): `isHiddenFromAccessibility` - - [Other](docs/api/misc/other): `within`, `act`, `cleanup` + - [`renderHook` function](/docs/api/misc/render-hook) - render hooks for testing + - [Async utils](/docs/api/misc/async): `findBy*` queries, `wait`, `waitForElementToBeRemoved` + - [Configuration](/docs/api/misc/config): `configure`, `resetToDefaults` + - [Accessibility](/docs/api/misc/accessibility): `isHiddenFromAccessibility` + - [Other](/docs/api/misc/other): `within`, `act`, `cleanup` diff --git a/website/docs/14.x/docs/api/events/fire-event.mdx b/website/docs/14.x/docs/api/events/fire-event.mdx index 00a194cce..5399b683c 100644 --- a/website/docs/14.x/docs/api/events/fire-event.mdx +++ b/website/docs/14.x/docs/api/events/fire-event.mdx @@ -3,7 +3,7 @@ ## `fireEvent` {#fire-event} :::note -For common events like `press` or `type` it's recommended to use [User Event API](docs/api/events/user-event) as it offers +For common events like `press` or `type` it's recommended to use [User Event API](/docs/api/events/user-event) as it offers more realistic event simulation by emitting a sequence of events with proper event objects that mimic React Native runtime behavior. Use Fire Event for cases not supported by User Event and for triggering event handlers on composite components. @@ -62,7 +62,7 @@ FireEvent exposes convenience methods for common events like: `press`, `changeTe ### `fireEvent.press` {#press} :::note -It is recommended to use the User Event [`press()`](docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. +It is recommended to use the User Event [`press()`](/docs/api/events/user-event#press) helper instead as it offers more realistic simulation of press interaction, including pressable support. ::: ```tsx @@ -101,7 +101,7 @@ expect(onPressMock).toHaveBeenCalledWith(eventData); ### `fireEvent.changeText` {#change-text} :::note -It is recommended to use the User Event [`type()`](docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. +It is recommended to use the User Event [`type()`](/docs/api/events/user-event#type) helper instead as it offers more realistic simulation of text change interaction, including key-by-key typing, element focus, and other editing events. ::: ```tsx @@ -132,7 +132,7 @@ await fireEvent.changeText(screen.getByPlaceholderText('Enter data'), CHANGE_TEX ### `fireEvent.scroll` {#scroll} :::note -Prefer using [`user.scrollTo`](docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. +Prefer using [`user.scrollTo`](/docs/api/events/user-event#scrollto) over `fireEvent.scroll` for `ScrollView`, `FlatList`, and `SectionList` components. User Event provides a more realistic event simulation based on React Native runtime behavior. ::: ```tsx diff --git a/website/docs/14.x/docs/api/jest-matchers.mdx b/website/docs/14.x/docs/api/jest-matchers.mdx index 75c17b988..9538194de 100644 --- a/website/docs/14.x/docs/api/jest-matchers.mdx +++ b/website/docs/14.x/docs/api/jest-matchers.mdx @@ -8,7 +8,7 @@ There is no need to set up the built-in matchers; they are automatically availab ## Migration from legacy Jest Native matchers. -If you are already using legacy Jest Native matchers we have a [migration guide](docs/migration/jest-matchers) for moving to the built-in matchers. +If you are already using legacy Jest Native matchers we have a [migration guide](/docs/migration/jest-matchers) for moving to the built-in matchers. ## Checking element existence @@ -34,7 +34,7 @@ expect(element).toHaveTextContent( ) ``` -This allows you to assert whether the given element has the given text content or not. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given element has the given text content or not. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. ### `toContainElement()` @@ -68,7 +68,7 @@ expect(element).toHaveDisplayValue( ) ``` -This allows you to assert whether the given `TextInput` element has a specified display value. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given `TextInput` element has a specified display value. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. ### `toHaveAccessibilityValue()` @@ -183,7 +183,7 @@ expect(element).toHaveAccessibleName( ) ``` -This allows you to assert whether the given element has a specified accessible name. It accepts either `string` or `RegExp` matchers, as well as [text match options](docs/api/queries#text-match-options) of `exact` and `normalizer`. +This allows you to assert whether the given element has a specified accessible name. It accepts either `string` or `RegExp` matchers, as well as [text match options](/docs/api/queries#text-match-options) of `exact` and `normalizer`. The accessible name will be computed based on `aria-labelledby`, `accessibilityLabelledBy`, `aria-label`, and `accessibilityLabel` props. For `Image` elements, the `alt` prop will also be considered. In the absence of these props, the element text content will be used. diff --git a/website/docs/14.x/docs/api/misc/async.mdx b/website/docs/14.x/docs/api/misc/async.mdx index e2721a18b..1992311ae 100644 --- a/website/docs/14.x/docs/api/misc/async.mdx +++ b/website/docs/14.x/docs/api/misc/async.mdx @@ -2,7 +2,7 @@ ## `findBy*` queries -The `findBy*` queries are used to find elements that are not instantly available but will be added as a result of some asynchronous action. Learn more details [here](docs/api/queries#find-by). +The `findBy*` queries are used to find elements that are not instantly available but will be added as a result of some asynchronous action. Learn more details [here](/docs/api/queries#find-by). ## `waitFor` @@ -98,7 +98,7 @@ await waitFor( ``` :::note -If you receive warnings related to `act()` function consult our [Understanding Act](docs/advanced/understanding-act) function document. +If you receive warnings related to `act()` function consult our [Understanding Act](/docs/advanced/understanding-act) function document. ::: ### Options @@ -137,5 +137,5 @@ This method expects that the element is initially present in the render tree and You can use any of `getBy`, `getAllBy`, `queryBy` and `queryAllBy` queries for `expectation` parameter. :::note -If you receive warnings related to `act()` function consult our [Understanding Act](docs/advanced/understanding-act) function document. +If you receive warnings related to `act()` function consult our [Understanding Act](/docs/advanced/understanding-act) function document. ::: diff --git a/website/docs/14.x/docs/api/misc/config.mdx b/website/docs/14.x/docs/api/misc/config.mdx index d7cc763cd..a72fa8dea 100644 --- a/website/docs/14.x/docs/api/misc/config.mdx +++ b/website/docs/14.x/docs/api/misc/config.mdx @@ -28,7 +28,7 @@ Default timeout, in ms, for async helper functions (`waitFor`, `waitForElementTo ### `defaultIncludeHiddenElements` option -Default value for [includeHiddenElements](docs/api/queries#includehiddenelements-option) query option for all queries. The default value is set to `false`, so all queries will not match [elements hidden from accessibility](#ishiddenfromaccessibility). This is because the users of the app would not be able to see such elements. +Default value for [includeHiddenElements](/docs/api/queries#includehiddenelements-option) query option for all queries. The default value is set to `false`, so all queries will not match [elements hidden from accessibility](#ishiddenfromaccessibility). This is because the users of the app would not be able to see such elements. This option is also available as `defaultHidden` alias for compatibility with [React Testing Library](https://testing-library.com/docs/dom-testing-library/api-configuration/#defaulthidden). diff --git a/website/docs/14.x/docs/api/misc/other.mdx b/website/docs/14.x/docs/api/misc/other.mdx index c6316a3e2..f9868a325 100644 --- a/website/docs/14.x/docs/api/misc/other.mdx +++ b/website/docs/14.x/docs/api/misc/other.mdx @@ -6,7 +6,7 @@ function within(element: HostElement): Queries {} ``` -`within` performs [queries](docs/api/queries) scoped to given element. +`within` performs [queries](/docs/api/queries) scoped to given element. :::note Please note that additional `render` specific operations like `rerender`, `unmount`, `debug`, `toJSON` are _not_ included. @@ -48,7 +48,7 @@ it('should update state', async () => { **Note**: Even if your callback is synchronous, you should still use `await act(...)` as `act` now always returns a Promise. -Consult our [Understanding Act function](docs/advanced/understanding-act) document for more understanding of its intricacies. +Consult our [Understanding Act function](/docs/advanced/understanding-act) document for more understanding of its intricacies. ## `cleanup` diff --git a/website/docs/14.x/docs/api/queries.mdx b/website/docs/14.x/docs/api/queries.mdx index 3aa2798e2..5152dad94 100644 --- a/website/docs/14.x/docs/api/queries.mdx +++ b/website/docs/14.x/docs/api/queries.mdx @@ -49,14 +49,14 @@ For this query, `getBy*` is the query variant, and `*ByRole` is the predicate. The query variants describe the expected number (and timing) of matching elements, so they differ in their return type. -| Variant | Assertion | Return type | Is Async? | -| ---------------------------------------------- | ----------------------------- | ------------------------------------ | --------- | -| [`getBy*`](docs/api/queries#get-by) | Exactly one matching element | `HostElement` | No | -| [`getAllBy*`](docs/api/queries#get-all-by) | At least one matching element | `Array` | No | -| [`queryBy*`](docs/api/queries#query-by) | Zero or one matching element | HostElement | null | No | -| [`queryAllBy*`](docs/api/queries#query-all-by) | No assertion | `Array` | No | -| [`findBy*`](docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | -| [`findAllBy*`](docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | +| Variant | Assertion | Return type | Is Async? | +| ----------------------------------------------- | ----------------------------- | ------------------------------------ | --------- | +| [`getBy*`](/docs/api/queries#get-by) | Exactly one matching element | `HostElement` | No | +| [`getAllBy*`](/docs/api/queries#get-all-by) | At least one matching element | `Array` | No | +| [`queryBy*`](/docs/api/queries#query-by) | Zero or one matching element | HostElement | null | No | +| [`queryAllBy*`](/docs/api/queries#query-all-by) | No assertion | `Array` | No | +| [`findBy*`](/docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | +| [`findAllBy*`](/docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | Queries work as implicit assertions on the number of matching elements and will throw an error when the assertion fails. @@ -121,7 +121,7 @@ findAllByX( `findAllBy*` queries return a promise which resolves to an array of matching elements. The promise is rejected if no elements match after a default timeout of 1000 ms. :::info -`findBy*` and `findAllBy*` queries accept optional `waitForOptions` object arguments, which can contain `timeout`, `interval` and `onTimeout` properties which have the same meaning as respective options for [`waitFor`](docs/api/misc/async#waitfor) function. +`findBy*` and `findAllBy*` queries accept optional `waitForOptions` object arguments, which can contain `timeout`, `interval` and `onTimeout` properties which have the same meaning as respective options for [`waitFor`](/docs/api/misc/async#waitfor) function. ::: :::info @@ -196,27 +196,27 @@ const element3 = screen.getByRole('button', { name: 'Hello', disabled: true }); - `disabled`: You can filter elements by their disabled state (coming either from `aria-disabled` prop or `accessbilityState.disabled` prop). The possible values are `true` or `false`. Querying `disabled: false` will also match elements with `disabled: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `disabled` state. - - This option can alternatively be expressed using the [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) Jest matchers. + - This option can alternatively be expressed using the [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) Jest matchers. - `selected`: You can filter elements by their selected state (coming either from `aria-selected` prop or `accessbilityState.selected` prop). The possible values are `true` or `false`. Querying `selected: false` will also match elements with `selected: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `selected` state. - - This option can alternatively be expressed using the [`toBeSelected()`](docs/api/jest-matchers#tobeselected) Jest matcher. + - This option can alternatively be expressed using the [`toBeSelected()`](/docs/api/jest-matchers#tobeselected) Jest matcher. * `checked`: You can filter elements by their checked state (coming either from `aria-checked` prop or `accessbilityState.checked` prop). The possible values are `true`, `false`, or `"mixed"`. - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `checked` state. - - This option can alternatively be expressed using the [`toBeChecked()` / `toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) Jest matchers. + - This option can alternatively be expressed using the [`toBeChecked()` / `toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) Jest matchers. * `busy`: You can filter elements by their busy state (coming either from `aria-busy` prop or `accessbilityState.busy` prop). The possible values are `true` or `false`. Querying `busy: false` will also match elements with `busy: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `busy` state. - - This option can alternatively be expressed using the [`toBeBusy()`](docs/api/jest-matchers#tobebusy) Jest matcher. + - This option can alternatively be expressed using the [`toBeBusy()`](/docs/api/jest-matchers#tobebusy) Jest matcher. * `expanded`: You can filter elements by their expanded state (coming either from `aria-expanded` prop or `accessbilityState.expanded` prop). The possible values are `true` or `false`. - See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `expanded` state. - - This option can alternatively be expressed using the [`toBeExpanded()` / `toBeCollapsed()`](docs/api/jest-matchers#tobeexpanded) Jest matchers. + - This option can alternatively be expressed using the [`toBeExpanded()` / `toBeCollapsed()`](/docs/api/jest-matchers#tobeexpanded) Jest matchers. * `value`: Filter elements by their accessibility value, based on either `aria-valuemin`, `aria-valuemax`, `aria-valuenow`, `aria-valuetext` or `accessibilityValue` props. Accessiblity value conceptually consists of numeric `min`, `max` and `now` entries, as well as string `text` entry. - See React Native [accessibilityValue](https://reactnative.dev/docs/accessibility#accessibilityvalue) docs to learn more about the accessibility value concept. - - This option can alternatively be expressed using the [`toHaveAccessibilityValue()`](docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher. + - This option can alternatively be expressed using the [`toHaveAccessibilityValue()`](/docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher. ### `*ByLabelText` {#by-label-text} @@ -384,9 +384,9 @@ Usually query first argument can be a **string** or a **regex**. All queries tak #### `includeHiddenElements` option -All queries have the `includeHiddenElements` option which affects whether [elements hidden from accessibility](docs/api/misc/accessibility#ishiddenfromaccessibility) are matched by the query. By default queries will not match hidden elements, because the users of the app would not be able to see such elements. +All queries have the `includeHiddenElements` option which affects whether [elements hidden from accessibility](/docs/api/misc/accessibility#ishiddenfromaccessibility) are matched by the query. By default queries will not match hidden elements, because the users of the app would not be able to see such elements. -You can configure the default value with the [`configure` function](docs/api/misc/config#configure). +You can configure the default value with the [`configure` function](/docs/api/misc/config#configure). This option is also available as `hidden` alias for compatibility with [React Testing Library](https://testing-library.com/docs/queries/byrole#hidden). diff --git a/website/docs/14.x/docs/api/render.mdx b/website/docs/14.x/docs/api/render.mdx index cc6861db3..79018dd5c 100644 --- a/website/docs/14.x/docs/api/render.mdx +++ b/website/docs/14.x/docs/api/render.mdx @@ -52,7 +52,7 @@ This validation is always enabled and cannot be disabled, ensuring your tests ac ### Result -The `render` function returns a promise that resolves to the same queries and utilities as the [`screen`](docs/api/screen) object. We recommend using the `screen` object for queries and the lifecycle methods from the render result when needed. +The `render` function returns a promise that resolves to the same queries and utilities as the [`screen`](/docs/api/screen) object. We recommend using the `screen` object for queries and the lifecycle methods from the render result when needed. See [this article](https://kentcdodds.com/blog/common-mistakes-with-react-testing-library#not-using-screen) from Kent C. Dodds for more details. diff --git a/website/docs/14.x/docs/api/screen.mdx b/website/docs/14.x/docs/api/screen.mdx index 9e122d096..8b43045f8 100644 --- a/website/docs/14.x/docs/api/screen.mdx +++ b/website/docs/14.x/docs/api/screen.mdx @@ -14,13 +14,13 @@ let screen: { The `screen` object offers a recommended way to access queries and utilities for the currently rendered UI. -This object is assigned after the `render` call and cleared after each test by calling [`cleanup`](docs/api/misc/other#cleanup). If no `render` call has been made in a given test, then it holds a special object and throws a helpful error on each property and method access. +This object is assigned after the `render` call and cleared after each test by calling [`cleanup`](/docs/api/misc/other#cleanup). If no `render` call has been made in a given test, then it holds a special object and throws a helpful error on each property and method access. ### `...queries` The most important feature of `screen` is providing a set of helpful queries that allow you to find certain elements in the view hierarchy. -See [Queries](docs/api/queries) for a complete list. +See [Queries](/docs/api/queries) for a complete list. #### Example @@ -169,7 +169,7 @@ test('example', async () => { const root: HostElement | null; ``` -Returns the rendered root [host element](docs/advanced/testing-env#host-and-composite-components), or `null` if nothing was rendered. This is the first child of the `container`, which represents the actual root element you rendered. +Returns the rendered root [host element](/docs/advanced/testing-env#host-and-composite-components), or `null` if nothing was rendered. This is the first child of the `container`, which represents the actual root element you rendered. This API is primarily useful for component tests, as it allows you to access root host view without using `*ByTestId` queries or similar methods. diff --git a/website/docs/14.x/docs/guides/faq.mdx b/website/docs/14.x/docs/guides/faq.mdx index 9ee8d601c..33ff48340 100644 --- a/website/docs/14.x/docs/guides/faq.mdx +++ b/website/docs/14.x/docs/guides/faq.mdx @@ -9,9 +9,9 @@ or iOS simulator/Android emulator to provision the underlying OS and platform AP Instead of using React Native renderer, it simulates only the JavaScript part of its runtime using [Test Renderer](https://github.com/mdjastrzebski/test-renderer) while providing queries -and event APIs ([User Event](docs/api/events/user-event), [Fire Event](docs/api/events/fire-event)) that mimicking certain behaviors from the actual runtime. +and event APIs ([User Event](/docs/api/events/user-event), [Fire Event](/docs/api/events/fire-event)) that mimicking certain behaviors from the actual runtime. -You can learn more about our testing environment [here](docs/advanced/testing-env). +You can learn more about our testing environment [here](/docs/advanced/testing-env). This approach has specific benefits and shortfalls. On the positive side: @@ -25,7 +25,7 @@ On the negative side: - you cannot test native features - it might not perfectly simulate certain JavaScript features, but we are working on it -The [User Event interactions](docs/api/events/user-event) solve some of the simulation issues, as they offer more realistic event handling than the basic [Fire Event API](docs/api/events/fire-event). +The [User Event interactions](/docs/api/events/user-event) solve some of the simulation issues, as they offer more realistic event handling than the basic [Fire Event API](/docs/api/events/fire-event). ## Should I use/migrate to `screen` queries? @@ -36,4 +36,4 @@ For new code, you are encouraged to use `screen` as there are some good reasons ## Should I use/migrate to User Event interactions? -We encourage you to migrate existing tests to use the [User Event interactions](docs/api/events/user-event), which offer more realistic event handling than the basic [Fire Event API](docs/api/events/fire-event). Hence, it will provide more confidence in the quality of your code. +We encourage you to migrate existing tests to use the [User Event interactions](/docs/api/events/user-event), which offer more realistic event handling than the basic [Fire Event API](/docs/api/events/fire-event). Hence, it will provide more confidence in the quality of your code. diff --git a/website/docs/14.x/docs/guides/how-to-query.mdx b/website/docs/14.x/docs/guides/how-to-query.mdx index ff03b6e8a..73a347d83 100644 --- a/website/docs/14.x/docs/guides/how-to-query.mdx +++ b/website/docs/14.x/docs/guides/how-to-query.mdx @@ -18,14 +18,14 @@ For this query, `getBy*` is the query variant, and `*ByRole` is the predicate. The query variants describe the expected number (and timing) of matching elements, so they differ in their return type. -| Variant | Assertion | Return type | Is Async? | -| ---------------------------------------------- | ----------------------------- | ------------------------------------ | --------- | -| [`getBy*`](docs/api/queries#get-by) | Exactly one matching element | `HostElement` | No | -| [`getAllBy*`](docs/api/queries#get-all-by) | At least one matching element | `Array` | No | -| [`queryBy*`](docs/api/queries#query-by) | Zero or one matching element | HostElement | null | No | -| [`queryAllBy*`](docs/api/queries#query-all-by) | No assertion | `Array` | No | -| [`findBy*`](docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | -| [`findAllBy*`](docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | +| Variant | Assertion | Return type | Is Async? | +| ----------------------------------------------- | ----------------------------- | ------------------------------------ | --------- | +| [`getBy*`](/docs/api/queries#get-by) | Exactly one matching element | `HostElement` | No | +| [`getAllBy*`](/docs/api/queries#get-all-by) | At least one matching element | `Array` | No | +| [`queryBy*`](/docs/api/queries#query-by) | Zero or one matching element | HostElement | null | No | +| [`queryAllBy*`](/docs/api/queries#query-all-by) | No assertion | `Array` | No | +| [`findBy*`](/docs/api/queries#find-by) | Exactly one matching element | `Promise` | Yes | +| [`findAllBy*`](/docs/api/queries#find-all-by) | At least one matching element | `Promise>` | Yes | Queries work as implicit assertions on the number of matching elements and will throw an error when the assertion fails. @@ -38,7 +38,7 @@ Here are general guidelines for picking idiomatic query variants: 1. Use `getBy*` in the most common case when you expect a **single matching element**. Use other queries only in more specific cases. 2. Use `findBy*` when an element is not yet in the element tree, but you expect it to be there as a **result of some asynchronous action**. 3. Use `getAllBy*` (and `findAllBy*` for async) if you expect **more than one matching element**, e.g. in a list. -4. Use `queryBy*` only when element **should not exist** to use it together with e.g. [`not.toBeOnTheScreen()`](docs/api/jest-matchers#tobeonthescreen) matcher. +4. Use `queryBy*` only when element **should not exist** to use it together with e.g. [`not.toBeOnTheScreen()`](/docs/api/jest-matchers#tobeonthescreen) matcher. Avoid using `queryAllBy*` in regular tests, as it provides no assertions on the number of matching elements. You may still find it useful when building reusable custom testing tools. @@ -46,15 +46,15 @@ Avoid using `queryAllBy*` in regular tests, as it provides no assertions on the The query predicate describes how you decide whether to match the given element. -| Predicate | Supported elements | Inspected props | -| ------------------------------------------------------------ | ------------------ | ----------------------------------------------------------------------------------------------------------------- | -| [`*ByRole`](docs/api/queries#by-role) | all host elements | `role`, `accessibilityRole`,
optional: accessible name, accessibility state and value | -| [`*ByLabelText`](docs/api/queries#by-label-text) | all host elements | `aria-label`, `aria-labelledby`,
`accessibilityLabel`, `accessibilityLabelledBy`,
`alt` (for `Image`) | -| [`*ByDisplayValue`](docs/api/queries#by-display-value) | `TextInput` | `value`, `defaultValue` | -| [`*ByPlaceholderText`](docs/api/queries#by-placeholder-text) | `TextInput` | `placeholder` | -| [`*ByText`](docs/api/queries#by-text) | `Text` | `children` (text content) | -| [`*ByHintText`](docs/api/queries#by-hint-text) | all host elements | `accessibilityHint` | -| [`*ByTestId`](docs/api/queries#by-test-id) | all host elements | `testID` | +| Predicate | Supported elements | Inspected props | +| ------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------- | +| [`*ByRole`](/docs/api/queries#by-role) | all host elements | `role`, `accessibilityRole`,
optional: accessible name, accessibility state and value | +| [`*ByLabelText`](/docs/api/queries#by-label-text) | all host elements | `aria-label`, `aria-labelledby`,
`accessibilityLabel`, `accessibilityLabelledBy`,
`alt` (for `Image`) | +| [`*ByDisplayValue`](/docs/api/queries#by-display-value) | `TextInput` | `value`, `defaultValue` | +| [`*ByPlaceholderText`](/docs/api/queries#by-placeholder-text) | `TextInput` | `placeholder` | +| [`*ByText`](/docs/api/queries#by-text) | `Text` | `children` (text content) | +| [`*ByHintText`](/docs/api/queries#by-hint-text) | all host elements | `accessibilityHint` | +| [`*ByTestId`](/docs/api/queries#by-test-id) | all host elements | `testID` | ### Idiomatic query predicates @@ -64,7 +64,7 @@ It is recommended to use query predicates in the following order of priority: ### 1. By Role query {#by-role-query} -The first and most versatile predicate is [`*ByRole`](docs/api/queries#by-role), which starts with the semantic role of the element and can be further narrowed down with additional options. React Native has two role systems, the web/ARIA-compatible one based on [`role`](https://reactnative.dev/docs/accessibility#role) prop and the traditional one based on [`accessibilityRole`](https://reactnative.dev/docs/accessibility#accessibilityrole) prop, you can use either of these. +The first and most versatile predicate is [`*ByRole`](/docs/api/queries#by-role), which starts with the semantic role of the element and can be further narrowed down with additional options. React Native has two role systems, the web/ARIA-compatible one based on [`role`](https://reactnative.dev/docs/accessibility#role) prop and the traditional one based on [`accessibilityRole`](https://reactnative.dev/docs/accessibility#accessibilityrole) prop, you can use either of these. In most cases, you need to set accessibility roles explicitly (or your component library can set some of them for you). These roles allow assistive technologies (like screen readers) and testing code to understand your view hierarchy better. @@ -88,7 +88,7 @@ Some frequently used roles include: #### Name option {#by-role-query-name-option} -Frequently, you will want to add the [`name`](docs/api/queries#by-role-options) option, which will match both the element's role and its accessible name (= element's accessibility label or text content). +Frequently, you will want to add the [`name`](/docs/api/queries#by-role-options) option, which will match both the element's role and its accessible name (= element's accessibility label or text content). Here are a couple of examples: @@ -104,9 +104,9 @@ Querying [`TextInput`](https://reactnative.dev/docs/textinput) elements presents Therefore, you can use the following queries to find relevant text inputs: -1. [`*ByLabelText`](docs/api/queries#by-label-text) - will match the accessibility label of the element. This query will match any host elements, including `TextInput` elements. -2. [`*ByPlaceholderText`](docs/api/queries#by-placeholder-text) - will match the placeholder of `TextInput` element. This query will match only `TextInput` elements. -3. [`*ByDisplayValue`](docs/api/queries#by-display-value) - will the current (or default) value of `TextInput` element. This query will match only `TextInput` elements. +1. [`*ByLabelText`](/docs/api/queries#by-label-text) - will match the accessibility label of the element. This query will match any host elements, including `TextInput` elements. +2. [`*ByPlaceholderText`](/docs/api/queries#by-placeholder-text) - will match the placeholder of `TextInput` element. This query will match only `TextInput` elements. +3. [`*ByDisplayValue`](/docs/api/queries#by-display-value) - will the current (or default) value of `TextInput` element. This query will match only `TextInput` elements. ### 3. Other accessible queries {#other-accessible-queries} @@ -114,12 +114,12 @@ These queries reflect the apps' user experience, both visual and through assisti These queries include: -- [`*ByText`](docs/api/queries#by-text) - will match the text content of the element. This query will match only `Text` elements. -- [`*ByLabelText`](docs/api/queries#by-label-text) - will match the accessibility label of the element. -- [`*ByHintText`](docs/api/queries#by-hint-text) - will match the accessibility hint of the element. +- [`*ByText`](/docs/api/queries#by-text) - will match the text content of the element. This query will match only `Text` elements. +- [`*ByLabelText`](/docs/api/queries#by-label-text) - will match the accessibility label of the element. +- [`*ByHintText`](/docs/api/queries#by-hint-text) - will match the accessibility hint of the element. ### 4. Test ID query {#test-id-query} -As a final predicate, you can use the `testID` prop to find relevant views. Using the [`*ByTestId`](docs/api/queries#by-test-id) predicate offers the most flexibility, but at the same time, it does not represent the user experience, as users are not aware of test IDs. +As a final predicate, you can use the `testID` prop to find relevant views. Using the [`*ByTestId`](/docs/api/queries#by-test-id) predicate offers the most flexibility, but at the same time, it does not represent the user experience, as users are not aware of test IDs. Note that using test IDs is a widespread technique in end-to-end testing due to various issues with querying views through other means **in its specific context**. Nevertheless, we still encourage you to use recommended RNTL queries as it will make your integration and component test more reliable and resilient. diff --git a/website/docs/14.x/docs/guides/troubleshooting.mdx b/website/docs/14.x/docs/guides/troubleshooting.mdx index 42e19f609..c1aedd052 100644 --- a/website/docs/14.x/docs/guides/troubleshooting.mdx +++ b/website/docs/14.x/docs/guides/troubleshooting.mdx @@ -54,7 +54,7 @@ When writing tests you may encounter warnings connected with `act()` function. T - sync `act()` warning - `Warning: An update to Component inside a test was not wrapped in act(...)` - async `act()` warning - `Warning: You called act(async () => ...) without await` -You can read more about `act()` function in our [understanding `act` function guide](docs/advanced/understanding-act). +You can read more about `act()` function in our [understanding `act` function guide](/docs/advanced/understanding-act). Normally, you should not encounter sync `act()` warnings, but if that happens this probably indicate an issue with your test and should be investigated. diff --git a/website/docs/14.x/docs/migration/jest-matchers.mdx b/website/docs/14.x/docs/migration/jest-matchers.mdx index fbdca61e0..9abefaae3 100644 --- a/website/docs/14.x/docs/migration/jest-matchers.mdx +++ b/website/docs/14.x/docs/migration/jest-matchers.mdx @@ -1,6 +1,6 @@ # Migration to built-in Jest matchers -This guide describes the steps necessary to migrate from [legacy Jest Native matchers v5](https://github.com/testing-library/jest-native) to [built-in Jest matchers](docs/api/jest-matchers). +This guide describes the steps necessary to migrate from [legacy Jest Native matchers v5](https://github.com/testing-library/jest-native) to [built-in Jest matchers](/docs/api/jest-matchers). ## General notes @@ -34,37 +34,37 @@ expect(element).legacy_toHaveAccessibilityState({ busy: true }); The following matchers should work the same: -- [`toBeEmptyElement()`](docs/api/jest-matchers#tobeemptyelement) -- [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) -- [`toBeOnTheScreen()`](docs/api/jest-matchers#tobeonthescreen) -- [`toBeVisible()`](docs/api/jest-matchers#tobevisible) -- [`toContainElement()`](docs/api/jest-matchers#tocontainelement) -- [`toHaveAccessibilityValue()`](docs/api/jest-matchers#tohaveaccessibilityvalue) -- [`toHaveDisplayValue()`](docs/api/jest-matchers#tohavedisplayvalue) -- [`toHaveProp()`](docs/api/jest-matchers#tohaveprop) -- [`toHaveStyle()`](docs/api/jest-matchers#tohavestyle) -- [`toHaveTextContent()`](docs/api/jest-matchers#tohavetextcontent) +- [`toBeEmptyElement()`](/docs/api/jest-matchers#tobeemptyelement) +- [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) +- [`toBeOnTheScreen()`](/docs/api/jest-matchers#tobeonthescreen) +- [`toBeVisible()`](/docs/api/jest-matchers#tobevisible) +- [`toContainElement()`](/docs/api/jest-matchers#tocontainelement) +- [`toHaveAccessibilityValue()`](/docs/api/jest-matchers#tohaveaccessibilityvalue) +- [`toHaveDisplayValue()`](/docs/api/jest-matchers#tohavedisplayvalue) +- [`toHaveProp()`](/docs/api/jest-matchers#tohaveprop) +- [`toHaveStyle()`](/docs/api/jest-matchers#tohavestyle) +- [`toHaveTextContent()`](/docs/api/jest-matchers#tohavetextcontent) ### Replaced matchers The `toHaveAccessibilityState()` matcher has been replaced by the following matchers: -- enabled state: [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) -- checked state: [`toBeChecked()` / `toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) -- selected state: [`toBeSelected()`](docs/api/jest-matchers#tobeselected) -- expanded state: [`toBeExpanded()` / `toBeCollapsed()`](docs/api/jest-matchers#tobeexpanded) -- busy state: [`toBeBusy()`](docs/api/jest-matchers#tobebusy) +- enabled state: [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) +- checked state: [`toBeChecked()` / `toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) +- selected state: [`toBeSelected()`](/docs/api/jest-matchers#tobeselected) +- expanded state: [`toBeExpanded()` / `toBeCollapsed()`](/docs/api/jest-matchers#tobeexpanded) +- busy state: [`toBeBusy()`](/docs/api/jest-matchers#tobebusy) The new matchers support both `accessibilityState` and `aria-*` props. ### Added matchers -New [`toHaveAccessibleName()`](docs/api/jest-matchers#tohaveaccessiblename) has been added. +New [`toHaveAccessibleName()`](/docs/api/jest-matchers#tohaveaccessiblename) has been added. ### Noteworthy details You should be aware of the following details: -- [`toBeEnabled()` / `toBeDisabled()`](docs/api/jest-matchers#tobeenabled) matchers also check the disabled state for the element's ancestors and not only the element itself. This is the same as in legacy Jest Native matchers of the same name but differs from the removed `toHaveAccessibilityState()` matcher. -- [`toBeChecked()`](docs/api/jest-matchers#tobechecked) matcher works only on `Switch` host elements or accessibility elements with `checkbox`, `radio` or `switch` role -- [`toBePartiallyChecked()`](docs/api/jest-matchers#tobechecked) matcher supports only elements with `checkbox` role +- [`toBeEnabled()` / `toBeDisabled()`](/docs/api/jest-matchers#tobeenabled) matchers also check the disabled state for the element's ancestors and not only the element itself. This is the same as in legacy Jest Native matchers of the same name but differs from the removed `toHaveAccessibilityState()` matcher. +- [`toBeChecked()`](/docs/api/jest-matchers#tobechecked) matcher works only on `Switch` host elements or accessibility elements with `checkbox`, `radio` or `switch` role +- [`toBePartiallyChecked()`](/docs/api/jest-matchers#tobechecked) matcher supports only elements with `checkbox` role diff --git a/website/docs/14.x/docs/migration/v12.mdx b/website/docs/14.x/docs/migration/v12.mdx index 249893e50..7a5861910 100644 --- a/website/docs/14.x/docs/migration/v12.mdx +++ b/website/docs/14.x/docs/migration/v12.mdx @@ -2,7 +2,7 @@ :::info -If you are already using legacy `@testing-library/jest-native` Jest Matchers, we have a [migration guide](docs/migration/jest-matchers) for moving to the built-in matchers. +If you are already using legacy `@testing-library/jest-native` Jest Matchers, we have a [migration guide](/docs/migration/jest-matchers) for moving to the built-in matchers. ::: @@ -14,7 +14,7 @@ React Native Testing Library 12 introduces a handful of breaking changes compare Elements that are hidden from accessiblity, e.g. elements on non-active screen when using React Navigation, now will not be matched by default by all queries. This is the effect of switching the default value for global config option `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) to `false`. -Previous behaviour of matching hidden elements can be enabled on query level using [includeHiddenElements](docs/api/queries#includehiddenelements-option) query options or globally using `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) configuration option. +Previous behaviour of matching hidden elements can be enabled on query level using [includeHiddenElements](/docs/api/queries#includehiddenelements-option) query options or globally using `defaultIncludeHiddenElements`(api#defaultincludehiddenelements-option) configuration option. ### 2. `*ByRole` queries now return only accessibility elements @@ -51,7 +51,7 @@ While following elements will not match: ### 3. `*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return host elements -`*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return [host elements](docs/advanced/testing-env#host-and-composite-components), which is consistent with other queries. +`*ByText`, `*ByDisplayValue`, `*ByPlaceholderText` queries now return [host elements](/docs/advanced/testing-env#host-and-composite-components), which is consistent with other queries. While potentially breaking, this should not cause issues in tests if you are using recommended queries and Jest Matchers from Jest Native package. diff --git a/website/docs/14.x/docs/migration/v13.mdx b/website/docs/14.x/docs/migration/v13.mdx index cb7c99b7d..cf8c3abc3 100644 --- a/website/docs/14.x/docs/migration/v13.mdx +++ b/website/docs/14.x/docs/migration/v13.mdx @@ -16,7 +16,7 @@ Note: currently, stable React Native is unavailable for React 19, which is still This version introduces concurrent rendering by default. This change should not affect regular tests, but it might affect your tests if you use React Suspense or similar. -You can revert to legacy rendering by passing `concurrentRoot: false` to [render](docs/api/render#concurrent-root) or [configure](docs/api/misc/config#concurrent-root) methods. +You can revert to legacy rendering by passing `concurrentRoot: false` to [render](/docs/api/render#concurrent-root) or [configure](/docs/api/misc/config#concurrent-root) methods. Note: in React 19, concurrent rendering is the only supported rendering mode. @@ -37,11 +37,11 @@ We have removed this deprecated query as it is typically too general to give mea - [\*ByRole](#by-role) query with relevant state options: `disabled`, `selected`, `checked`, `expanded` and `busy` - use built-in Jest matchers to check the state of element found using some other query: - - enabled state: [toBeEnabled() / toBeDisabled()](docs/api/jest-matchers#tobeenabled) - - checked state: [toBeChecked() / toBePartiallyChecked()](docs/api/jest-matchers#tobechecked) - - selected state: [toBeSelected()](docs/api/jest-matchers#tobeselected) - - expanded state: [toBeExpanded() / toBeCollapsed()](docs/api/jest-matchers#tobeexpanded) - - busy state: [toBeBusy()](docs/api/jest-matchers#tobebusy) + - enabled state: [toBeEnabled() / toBeDisabled()](/docs/api/jest-matchers#tobeenabled) + - checked state: [toBeChecked() / toBePartiallyChecked()](/docs/api/jest-matchers#tobechecked) + - selected state: [toBeSelected()](/docs/api/jest-matchers#tobeselected) + - expanded state: [toBeExpanded() / toBeCollapsed()](/docs/api/jest-matchers#tobeexpanded) + - busy state: [toBeBusy()](/docs/api/jest-matchers#tobebusy) ```ts // Replace this: @@ -59,7 +59,7 @@ expect(view).toBeDisabled(); // Assert its accessibility state We have removed this deprecated query as it is typically too general to give meaningful results. Use one of the following options: -- [toHaveAccessibilityValue()](docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher to check the state of element found using some other query +- [toHaveAccessibilityValue()](/docs/api/jest-matchers#tohaveaccessibilityvalue) Jest matcher to check the state of element found using some other query - [\*ByRole](#by-role) query with `value` option ```ts @@ -90,7 +90,7 @@ preset: 'react-native'; ### Removed `debug.shallow` -We didn't support shallow rendering for the time being. Now, we are removing the last remains of it: `debug.shallow()`. If you are interested in shallow rendering see [here](docs/migration/previous/v2#removed-global-shallow-function). +We didn't support shallow rendering for the time being. Now, we are removing the last remains of it: `debug.shallow()`. If you are interested in shallow rendering see [here](/docs/migration/v2#removed-global-shallow-function). ### Changes to accessibility label calculation diff --git a/website/docs/14.x/docs/migration/v14.mdx b/website/docs/14.x/docs/migration/v14.mdx index 7088f6b9e..12d7de952 100644 --- a/website/docs/14.x/docs/migration/v14.mdx +++ b/website/docs/14.x/docs/migration/v14.mdx @@ -1,4 +1,4 @@ -import { PackageManagerTabs } from 'rspress/theme'; +import { PackageManagerTabs } from '@rspress/core/theme'; # Migration to 14.x diff --git a/website/docs/14.x/docs/migration/v7.mdx b/website/docs/14.x/docs/migration/v7.mdx index 482681409..60a6d7106 100644 --- a/website/docs/14.x/docs/migration/v7.mdx +++ b/website/docs/14.x/docs/migration/v7.mdx @@ -112,4 +112,4 @@ There are slight differences in how `fireEvent` works in both libraries: +fireEvent(element: HostElement, eventName: string, ...data: Array) ``` 1. There is no `NativeTestEvent` - second and rest arguments are used instead. -1. There are only 3 short-hand events: [`fireEvent.press`](docs/api/events/fire-event#press), [`fireEvent.changeText`](docs/api/events/fire-event#change-text) and [`fireEvent.scroll`](docs/api/events/fire-event#scroll). For all other or custom events you can use the base signature. +1. There are only 3 short-hand events: [`fireEvent.press`](/docs/api/events/fire-event#press), [`fireEvent.changeText`](/docs/api/events/fire-event#change-text) and [`fireEvent.scroll`](/docs/api/events/fire-event#scroll). For all other or custom events you can use the base signature. diff --git a/website/docs/14.x/docs/migration/v9.mdx b/website/docs/14.x/docs/migration/v9.mdx index 6a8689ae0..60557c566 100644 --- a/website/docs/14.x/docs/migration/v9.mdx +++ b/website/docs/14.x/docs/migration/v9.mdx @@ -6,7 +6,7 @@ Version 7.0 brought React Native Testing Library into the `@testing-library` fam This is a backward compatible change. -When querying text, it is now possible to pass a [`TextMatch`](docs/api/queries#textmatch) to most text based queries, which lets you configure how `@testing-library/react-native` should match your text. For instance, passing `exact: false` will allow matching substrings and will ignore case: +When querying text, it is now possible to pass a [`TextMatch`](/docs/api/queries#textmatch) to most text based queries, which lets you configure how `@testing-library/react-native` should match your text. For instance, passing `exact: false` will allow matching substrings and will ignore case: ```jsx const { getByText } = render(Hello World); diff --git a/website/docs/14.x/docs/start/_meta.json b/website/docs/14.x/docs/start/_meta.json index 06cb91e9b..13858aa42 100644 --- a/website/docs/14.x/docs/start/_meta.json +++ b/website/docs/14.x/docs/start/_meta.json @@ -2,7 +2,7 @@ "intro", "quick-start", { - "type": "link", + "type": "custom-link", "label": "v14 Migration", "link": "/docs/migration/v14" } diff --git a/website/docs/14.x/docs/start/quick-start.mdx b/website/docs/14.x/docs/start/quick-start.mdx index 95ebcd22c..a43c9b95b 100644 --- a/website/docs/14.x/docs/start/quick-start.mdx +++ b/website/docs/14.x/docs/start/quick-start.mdx @@ -1,4 +1,4 @@ -import { PackageManagerTabs } from 'rspress/theme'; +import { PackageManagerTabs } from '@rspress/core/theme'; # Quick Start diff --git a/website/package.json b/website/package.json index 43e3f8b00..ed3051f76 100644 --- a/website/package.json +++ b/website/package.json @@ -8,10 +8,11 @@ "preview": "rspress preview" }, "dependencies": { - "@callstack/rspress-theme": "^0.0.3", + "@callstack/rspress-theme": "^0.5.1", + "@rspress/core": "^2.0.0-rc.5", + "react": "^19.2.0", + "react-dom": "^19.2.0", "rsbuild-plugin-open-graph": "^1.0.2", - "rspress": "1.44.0", - "rspress-plugin-font-open-sans": "^1.0.0", "rspress-plugin-vercel-analytics": "^0.3.0" }, "devDependencies": { diff --git a/website/rspress.config.ts b/website/rspress.config.ts index 705fb2055..55f9e7d7b 100644 --- a/website/rspress.config.ts +++ b/website/rspress.config.ts @@ -1,9 +1,373 @@ import * as path from 'path'; -import { defineConfig } from 'rspress/config'; +import { defineConfig } from '@rspress/core'; import { pluginCallstackTheme } from '@callstack/rspress-theme/plugin'; import { pluginOpenGraph } from 'rsbuild-plugin-open-graph'; import pluginVercelAnalytics from 'rspress-plugin-vercel-analytics'; +const sidebar12x = { + '/12.x/docs/': [ + { + text: 'Getting started', + items: [ + { text: 'Introduction', link: '/12.x/docs/start/intro' }, + { text: 'Quick Start', link: '/12.x/docs/start/quick-start' }, + ], + }, + { + text: 'API reference', + items: [ + { text: 'Render function', link: '/12.x/docs/api/render' }, + { text: 'Screen object', link: '/12.x/docs/api/screen' }, + { text: 'Queries', link: '/12.x/docs/api/queries' }, + { text: 'Jest Matchers', link: '/12.x/docs/api/jest-matchers' }, + { + text: 'Triggering events', + items: [ + { text: 'Fire Event', link: '/12.x/docs/api/events/fire-event' }, + { text: 'User Event', link: '/12.x/docs/api/events/user-event' }, + ], + }, + { + text: 'Miscellaneous', + items: [ + { text: 'Accessibility', link: '/12.x/docs/api/misc/accessibility' }, + { text: 'Async utilities', link: '/12.x/docs/api/misc/async' }, + { text: 'Config', link: '/12.x/docs/api/misc/config' }, + { text: 'Other', link: '/12.x/docs/api/misc/other' }, + { text: 'Render Hook', link: '/12.x/docs/api/misc/render-hook' }, + ], + }, + ], + }, + { + text: 'Guides', + items: [ + { text: 'How to Query', link: '/12.x/docs/guides/how-to-query' }, + { text: 'Troubleshooting', link: '/12.x/docs/guides/troubleshooting' }, + { text: 'FAQ', link: '/12.x/docs/guides/faq' }, + { text: 'Community Resources', link: '/12.x/docs/guides/community-resources' }, + ], + }, + { + text: 'Advanced Guides', + items: [ + { text: 'Testing Environment', link: '/12.x/docs/advanced/testing-env' }, + { text: 'Understanding Act', link: '/12.x/docs/advanced/understanding-act' }, + ], + }, + { + text: 'Migration Guides', + collapsed: true, + items: [ + { text: 'v12 Migration', link: '/12.x/docs/migration/v12' }, + { text: 'Jest Matchers', link: '/12.x/docs/migration/jest-matchers' }, + { + text: 'Previous versions', + collapsed: true, + items: [ + { text: 'v11', link: '/12.x/docs/migration/previous/v11' }, + { text: 'v9', link: '/12.x/docs/migration/previous/v9' }, + { text: 'v7', link: '/12.x/docs/migration/previous/v7' }, + { text: 'v2', link: '/12.x/docs/migration/previous/v2' }, + ], + }, + ], + }, + ], + '/12.x/cookbook/': [ + { text: 'Cookbook', link: '/12.x/cookbook/' }, + { + text: 'Basic Recipes', + items: [ + { text: 'Async Tests', link: '/12.x/cookbook/basics/async-tests' }, + { text: 'Custom Render', link: '/12.x/cookbook/basics/custom-render' }, + ], + }, + { + text: 'Advanced Recipes', + items: [{ text: 'Network Requests', link: '/12.x/cookbook/advanced/network-requests' }], + }, + { + text: 'State Management Recipes', + items: [{ text: 'Jotai', link: '/12.x/cookbook/state-management/jotai' }], + }, + ], +}; + +const sidebar13x = { + '/13.x/docs/': [ + { + text: 'Getting started', + items: [ + { text: 'Introduction', link: '/13.x/docs/start/intro' }, + { text: 'Quick Start', link: '/13.x/docs/start/quick-start' }, + ], + }, + { + text: 'API reference', + items: [ + { text: 'Render function', link: '/13.x/docs/api/render' }, + { text: 'Screen object', link: '/13.x/docs/api/screen' }, + { text: 'Queries', link: '/13.x/docs/api/queries' }, + { text: 'Jest Matchers', link: '/13.x/docs/api/jest-matchers' }, + { + text: 'Triggering events', + items: [ + { text: 'Fire Event', link: '/13.x/docs/api/events/fire-event' }, + { text: 'User Event', link: '/13.x/docs/api/events/user-event' }, + ], + }, + { + text: 'Miscellaneous', + items: [ + { text: 'Accessibility', link: '/13.x/docs/api/misc/accessibility' }, + { text: 'Async utilities', link: '/13.x/docs/api/misc/async' }, + { text: 'Config', link: '/13.x/docs/api/misc/config' }, + { text: 'Other', link: '/13.x/docs/api/misc/other' }, + { text: 'Render Hook', link: '/13.x/docs/api/misc/render-hook' }, + ], + }, + ], + }, + { + text: 'Guides', + items: [ + { text: 'How to Query', link: '/13.x/docs/guides/how-to-query' }, + { text: 'React 19', link: '/13.x/docs/guides/react-19' }, + { text: 'Troubleshooting', link: '/13.x/docs/guides/troubleshooting' }, + { text: 'FAQ', link: '/13.x/docs/guides/faq' }, + { text: 'Community Resources', link: '/13.x/docs/guides/community-resources' }, + ], + }, + { + text: 'Advanced Guides', + items: [ + { text: 'Testing Environment', link: '/13.x/docs/advanced/testing-env' }, + { text: 'Third-party Integration', link: '/13.x/docs/advanced/third-party-integration' }, + { text: 'Understanding Act', link: '/13.x/docs/advanced/understanding-act' }, + ], + }, + { + text: 'Migration Guides', + collapsed: true, + items: [ + { text: 'v13 Migration', link: '/13.x/docs/migration/v13' }, + { text: 'Jest Matchers', link: '/13.x/docs/migration/jest-matchers' }, + { + text: 'Previous versions', + collapsed: true, + items: [ + { text: 'v12', link: '/13.x/docs/migration/previous/v12' }, + { text: 'v11', link: '/13.x/docs/migration/previous/v11' }, + { text: 'v9', link: '/13.x/docs/migration/previous/v9' }, + { text: 'v7', link: '/13.x/docs/migration/previous/v7' }, + { text: 'v2', link: '/13.x/docs/migration/previous/v2' }, + ], + }, + ], + }, + ], + '/13.x/cookbook/': [ + { text: 'Cookbook', link: '/13.x/cookbook/' }, + { + text: 'Basic Recipes', + items: [ + { text: 'Async Tests', link: '/13.x/cookbook/basics/async-tests' }, + { text: 'Custom Render', link: '/13.x/cookbook/basics/custom-render' }, + ], + }, + { + text: 'Advanced Recipes', + items: [{ text: 'Network Requests', link: '/13.x/cookbook/advanced/network-requests' }], + }, + { + text: 'State Management Recipes', + items: [{ text: 'Jotai', link: '/13.x/cookbook/state-management/jotai' }], + }, + ], +}; + +const sidebar14x = { + '/14.x/docs/': [ + { + text: 'Getting started', + items: [ + { text: 'Introduction', link: '/14.x/docs/start/intro' }, + { text: 'Quick Start', link: '/14.x/docs/start/quick-start' }, + ], + }, + { + text: 'API reference', + items: [ + { text: 'Render function', link: '/14.x/docs/api/render' }, + { text: 'Screen object', link: '/14.x/docs/api/screen' }, + { text: 'Queries', link: '/14.x/docs/api/queries' }, + { text: 'Jest Matchers', link: '/14.x/docs/api/jest-matchers' }, + { + text: 'Triggering events', + items: [ + { text: 'Fire Event', link: '/14.x/docs/api/events/fire-event' }, + { text: 'User Event', link: '/14.x/docs/api/events/user-event' }, + ], + }, + { + text: 'Miscellaneous', + items: [ + { text: 'Accessibility', link: '/14.x/docs/api/misc/accessibility' }, + { text: 'Async utilities', link: '/14.x/docs/api/misc/async' }, + { text: 'Config', link: '/14.x/docs/api/misc/config' }, + { text: 'Other', link: '/14.x/docs/api/misc/other' }, + { text: 'Render Hook', link: '/14.x/docs/api/misc/render-hook' }, + ], + }, + ], + }, + { + text: 'Guides', + items: [ + { text: 'How to Query', link: '/14.x/docs/guides/how-to-query' }, + { text: 'Troubleshooting', link: '/14.x/docs/guides/troubleshooting' }, + { text: 'FAQ', link: '/14.x/docs/guides/faq' }, + { text: 'Community Resources', link: '/14.x/docs/guides/community-resources' }, + ], + }, + { + text: 'Advanced Guides', + items: [ + { text: 'Testing Environment', link: '/14.x/docs/advanced/testing-env' }, + { text: 'Third-party Integration', link: '/14.x/docs/advanced/third-party-integration' }, + { text: 'Understanding Act', link: '/14.x/docs/advanced/understanding-act' }, + ], + }, + { + text: 'Migration Guides', + collapsed: true, + items: [ + { text: 'v14 Migration', link: '/14.x/docs/migration/v14' }, + { text: 'Jest Matchers', link: '/14.x/docs/migration/jest-matchers' }, + { text: 'v13', link: '/14.x/docs/migration/v13' }, + { text: 'v12', link: '/14.x/docs/migration/v12' }, + { text: 'v11', link: '/14.x/docs/migration/v11' }, + { text: 'v9', link: '/14.x/docs/migration/v9' }, + { text: 'v7', link: '/14.x/docs/migration/v7' }, + { text: 'v2', link: '/14.x/docs/migration/v2' }, + ], + }, + ], + '/14.x/cookbook/': [ + { text: 'Cookbook', link: '/14.x/cookbook/' }, + { + text: 'Basic Recipes', + items: [ + { text: 'Async Events', link: '/14.x/cookbook/basics/async-events' }, + { text: 'Custom Render', link: '/14.x/cookbook/basics/custom-render' }, + ], + }, + { + text: 'Advanced Recipes', + items: [{ text: 'Network Requests', link: '/14.x/cookbook/advanced/network-requests' }], + }, + { + text: 'State Management Recipes', + items: [{ text: 'Jotai', link: '/14.x/cookbook/state-management/jotai' }], + }, + ], +}; + +// Default version (13.x) sidebar without version prefix +const sidebarDefault = { + '/docs/': [ + { + text: 'Getting started', + items: [ + { text: 'Introduction', link: '/docs/start/intro' }, + { text: 'Quick Start', link: '/docs/start/quick-start' }, + ], + }, + { + text: 'API reference', + items: [ + { text: 'Render function', link: '/docs/api/render' }, + { text: 'Screen object', link: '/docs/api/screen' }, + { text: 'Queries', link: '/docs/api/queries' }, + { text: 'Jest Matchers', link: '/docs/api/jest-matchers' }, + { + text: 'Triggering events', + items: [ + { text: 'Fire Event', link: '/docs/api/events/fire-event' }, + { text: 'User Event', link: '/docs/api/events/user-event' }, + ], + }, + { + text: 'Miscellaneous', + items: [ + { text: 'Accessibility', link: '/docs/api/misc/accessibility' }, + { text: 'Async utilities', link: '/docs/api/misc/async' }, + { text: 'Config', link: '/docs/api/misc/config' }, + { text: 'Other', link: '/docs/api/misc/other' }, + { text: 'Render Hook', link: '/docs/api/misc/render-hook' }, + ], + }, + ], + }, + { + text: 'Guides', + items: [ + { text: 'How to Query', link: '/docs/guides/how-to-query' }, + { text: 'React 19', link: '/docs/guides/react-19' }, + { text: 'Troubleshooting', link: '/docs/guides/troubleshooting' }, + { text: 'FAQ', link: '/docs/guides/faq' }, + { text: 'Community Resources', link: '/docs/guides/community-resources' }, + ], + }, + { + text: 'Advanced Guides', + items: [ + { text: 'Testing Environment', link: '/docs/advanced/testing-env' }, + { text: 'Third-party Integration', link: '/docs/advanced/third-party-integration' }, + { text: 'Understanding Act', link: '/docs/advanced/understanding-act' }, + ], + }, + { + text: 'Migration Guides', + collapsed: true, + items: [ + { text: 'v13 Migration', link: '/docs/migration/v13' }, + { text: 'Jest Matchers', link: '/docs/migration/jest-matchers' }, + { + text: 'Previous versions', + collapsed: true, + items: [ + { text: 'v12', link: '/docs/migration/previous/v12' }, + { text: 'v11', link: '/docs/migration/previous/v11' }, + { text: 'v9', link: '/docs/migration/previous/v9' }, + { text: 'v7', link: '/docs/migration/previous/v7' }, + { text: 'v2', link: '/docs/migration/previous/v2' }, + ], + }, + ], + }, + ], + '/cookbook/': [ + { text: 'Cookbook', link: '/cookbook/' }, + { + text: 'Basic Recipes', + items: [ + { text: 'Async Tests', link: '/cookbook/basics/async-tests' }, + { text: 'Custom Render', link: '/cookbook/basics/custom-render' }, + ], + }, + { + text: 'Advanced Recipes', + items: [{ text: 'Network Requests', link: '/cookbook/advanced/network-requests' }], + }, + { + text: 'State Management Recipes', + items: [{ text: 'Jotai', link: '/cookbook/state-management/jotai' }], + }, + ], +}; + export default defineConfig({ root: 'docs', base: '/react-native-testing-library/', @@ -14,8 +378,8 @@ export default defineConfig({ logoText: 'React Native Testing Library', outDir: 'build', markdown: { - checkDeadLinks: true, - codeHighlighter: 'prism', + // checkDeadLinks is enabled by default in V2 + // Shiki is now the default code highlighter }, multiVersion: { default: '13.x', @@ -41,6 +405,20 @@ export default defineConfig({ content: 'https://github.com/callstack/react-native-testing-library', }, ], + nav: [ + { text: 'Docs', link: '/docs/start/intro', activeMatch: '^/docs/' }, + { text: 'Cookbook', link: '/cookbook/', activeMatch: '^/cookbook/' }, + { + text: 'Examples', + link: 'https://github.com/callstack/react-native-testing-library/tree/main/examples', + }, + ], + sidebar: { + ...sidebarDefault, + ...sidebar12x, + ...sidebar13x, + ...sidebar14x, + }, }, builderConfig: { plugins: [ diff --git a/website/yarn.lock b/website/yarn.lock index 71824f1af..fcb69b51e 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -5,26 +5,42 @@ __metadata: version: 8 cacheKey: 10c0 -"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.3.1": - version: 7.27.6 - resolution: "@babel/runtime@npm:7.27.6" - checksum: 10c0/89726be83f356f511dcdb74d3ea4d873a5f0cf0017d4530cb53aa27380c01ca102d573eff8b8b77815e624b1f8c24e7f0311834ad4fb632c90a770fda00bd4c8 +"@callstack/rspress-theme@npm:^0.5.1": + version: 0.5.1 + resolution: "@callstack/rspress-theme@npm:0.5.1" + peerDependencies: + "@rspress/core": ^2.0.0-rc.4 + react: ^19.2.0 + react-dom: ^19.2.0 + checksum: 10c0/bf41ba2f53d8c27b28fbd44c8083ed7432c6a73f50213ccab82013116b0d0b549423a44090d6665c9ddb1f97f471cec8f6549df2c0079cac9fb61aa8557fc14a languageName: node linkType: hard -"@bufbuild/protobuf@npm:^2.5.0": - version: 2.6.0 - resolution: "@bufbuild/protobuf@npm:2.6.0" - checksum: 10c0/94c6fd63266a78135e3a82cb054dcde66760909948932152069bef3bb68335877b213d80c6983bb609b15f2ea0eb5912621eebd5bd4a98dbb940136ff5161b30 +"@emnapi/core@npm:^1.5.0": + version: 1.8.1 + resolution: "@emnapi/core@npm:1.8.1" + dependencies: + "@emnapi/wasi-threads": "npm:1.1.0" + tslib: "npm:^2.4.0" + checksum: 10c0/2c242f4b49779bac403e1cbcc98edacdb1c8ad36562408ba9a20663824669e930bc8493be46a2522d9dc946b8d96cd7073970bae914928c7671b5221c85b432e languageName: node linkType: hard -"@callstack/rspress-theme@npm:^0.0.3": - version: 0.0.3 - resolution: "@callstack/rspress-theme@npm:0.0.3" - peerDependencies: - react: ^18.3.1 - checksum: 10c0/f7f008da7730657d512a66b35bf438b37946c3874fa09d501a1f8d0d927ec3ffcd189039e9906f2174f56421c26bafe3335cd4b0f688206c327003150bdf6f17 +"@emnapi/runtime@npm:^1.5.0": + version: 1.8.1 + resolution: "@emnapi/runtime@npm:1.8.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.1.0": + version: 1.1.0 + resolution: "@emnapi/wasi-threads@npm:1.1.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/e6d54bf2b1e64cdd83d2916411e44e579b6ae35d5def0dea61a3c452d9921373044dff32a8b8473ae60c80692bdc39323e98b96a3f3d87ba6886b24dd0ef7ca1 languageName: node linkType: hard @@ -51,84 +67,48 @@ __metadata: languageName: node linkType: hard -"@jsonjoy.com/base64@npm:^1.1.1": - version: 1.1.2 - resolution: "@jsonjoy.com/base64@npm:1.1.2" - peerDependencies: - tslib: 2 - checksum: 10c0/88717945f66dc89bf58ce75624c99fe6a5c9a0c8614e26d03e406447b28abff80c69fb37dabe5aafef1862cf315071ae66e5c85f6018b437d95f8d13d235e6eb - languageName: node - linkType: hard - -"@jsonjoy.com/json-pack@npm:^1.0.3": - version: 1.2.0 - resolution: "@jsonjoy.com/json-pack@npm:1.2.0" - dependencies: - "@jsonjoy.com/base64": "npm:^1.1.1" - "@jsonjoy.com/util": "npm:^1.1.2" - hyperdyperid: "npm:^1.2.0" - thingies: "npm:^1.20.0" - peerDependencies: - tslib: 2 - checksum: 10c0/0744cfe2f54d896003ad240f0f069b41a152feb53b6134c5e65961126b9e5fdfc74a46f63b1dfa280e80a3d176c57e06de072bf03d749ec1982e41677a1ce5d5 - languageName: node - linkType: hard - -"@jsonjoy.com/util@npm:^1.1.2, @jsonjoy.com/util@npm:^1.3.0": - version: 1.6.0 - resolution: "@jsonjoy.com/util@npm:1.6.0" - peerDependencies: - tslib: 2 - checksum: 10c0/98182d8a5a0f5e04cdf755dacb523ba5e3e6a81e4941cbfeb157f8954c0e90e2e972fc7237c2378995fc3fa9f2b2649d28b197f556da3b5a80e56c6966c559e3 - languageName: node - linkType: hard - -"@mdx-js/loader@npm:^2.3.0": - version: 2.3.0 - resolution: "@mdx-js/loader@npm:2.3.0" - dependencies: - "@mdx-js/mdx": "npm:^2.0.0" - source-map: "npm:^0.7.0" - peerDependencies: - webpack: ">=4" - checksum: 10c0/64ff6c45a4ff7f344de57bc466958fbbc93b5c1dbde8af9f2b5e7b05c85fb9c71317ebf7b890371d19fc44ab7b89e67931479c22089cf9765f4afde08ffb9698 - languageName: node - linkType: hard - -"@mdx-js/mdx@npm:^2.0.0, @mdx-js/mdx@npm:^2.3.0": - version: 2.3.0 - resolution: "@mdx-js/mdx@npm:2.3.0" +"@mdx-js/mdx@npm:^3.1.1": + version: 3.1.1 + resolution: "@mdx-js/mdx@npm:3.1.1" dependencies: + "@types/estree": "npm:^1.0.0" "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" "@types/mdx": "npm:^2.0.0" - estree-util-build-jsx: "npm:^2.0.0" - estree-util-is-identifier-name: "npm:^2.0.0" - estree-util-to-js: "npm:^1.1.0" + acorn: "npm:^8.0.0" + collapse-white-space: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + estree-util-scope: "npm:^1.0.0" estree-walker: "npm:^3.0.0" - hast-util-to-estree: "npm:^2.0.0" - markdown-extensions: "npm:^1.0.0" - periscopic: "npm:^3.0.0" - remark-mdx: "npm:^2.0.0" - remark-parse: "npm:^10.0.0" - remark-rehype: "npm:^10.0.0" - unified: "npm:^10.0.0" - unist-util-position-from-estree: "npm:^1.0.0" - unist-util-stringify-position: "npm:^3.0.0" - unist-util-visit: "npm:^4.0.0" - vfile: "npm:^5.0.0" - checksum: 10c0/719384d8e72abd3e83aa2fd3010394636e32cc0e5e286b6414427ef03121397586ce97ec816afcc4d2b22ba65939c3801a8198e04cf921dd597c0aa9fd75dbb4 + hast-util-to-jsx-runtime: "npm:^2.0.0" + markdown-extensions: "npm:^2.0.0" + recma-build-jsx: "npm:^1.0.0" + recma-jsx: "npm:^1.0.0" + recma-stringify: "npm:^1.0.0" + rehype-recma: "npm:^1.0.0" + remark-mdx: "npm:^3.0.0" + remark-parse: "npm:^11.0.0" + remark-rehype: "npm:^11.0.0" + source-map: "npm:^0.7.0" + unified: "npm:^11.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + unist-util-stringify-position: "npm:^4.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/371ed95e2bee7731f30a7ce57db66383a0b7470e66c38139427174cb456d6a40bf7d259f3652716370c1de64acfba50a1ba27eb8c556e7a431dc7940b04cb1a1 languageName: node linkType: hard -"@mdx-js/react@npm:2.3.0, @mdx-js/react@npm:^2.3.0": - version: 2.3.0 - resolution: "@mdx-js/react@npm:2.3.0" +"@mdx-js/react@npm:^3.1.1": + version: 3.1.1 + resolution: "@mdx-js/react@npm:3.1.1" dependencies: "@types/mdx": "npm:^2.0.0" - "@types/react": "npm:>=16" peerDependencies: + "@types/react": ">=16" react: ">=16" - checksum: 10c0/6d647115703dbe258f7fe372499fa8c6fe17a053ff0f2a208111c9973a71ae738a0ed376770445d39194d217e00e1a015644b24f32c2f7cb4f57988de0649b15 + checksum: 10c0/34ca98bc2a0f969894ea144dc5c8a5294690505458cd24965cd9be854d779c193ad9192bf9143c4c18438fafd1902e100d99067e045c69319288562d497558c6 languageName: node linkType: hard @@ -139,6 +119,13 @@ __metadata: languageName: node linkType: hard +"@module-federation/error-codes@npm:0.22.0": + version: 0.22.0 + resolution: "@module-federation/error-codes@npm:0.22.0" + checksum: 10c0/a9b25e8c930971e146e6352f482f915f1b54965ce54706984e834a87be714d30caebbd3946f9eb408e7821b2cc326b90787eeb2f8306edf1d322d9931543a139 + languageName: node + linkType: hard + "@module-federation/runtime-core@npm:0.14.0": version: 0.14.0 resolution: "@module-federation/runtime-core@npm:0.14.0" @@ -149,6 +136,16 @@ __metadata: languageName: node linkType: hard +"@module-federation/runtime-core@npm:0.22.0": + version: 0.22.0 + resolution: "@module-federation/runtime-core@npm:0.22.0" + dependencies: + "@module-federation/error-codes": "npm:0.22.0" + "@module-federation/sdk": "npm:0.22.0" + checksum: 10c0/0406c26b119065dca23a8fb65872b8ab5794984d5d82984ed625c433658693050a8a800cde8c97cc1572b0bc154a7824fa9db5bb05106b7250643e799ba7091d + languageName: node + linkType: hard + "@module-federation/runtime-tools@npm:0.14.0": version: 0.14.0 resolution: "@module-federation/runtime-tools@npm:0.14.0" @@ -159,6 +156,16 @@ __metadata: languageName: node linkType: hard +"@module-federation/runtime-tools@npm:0.22.0": + version: 0.22.0 + resolution: "@module-federation/runtime-tools@npm:0.22.0" + dependencies: + "@module-federation/runtime": "npm:0.22.0" + "@module-federation/webpack-bundler-runtime": "npm:0.22.0" + checksum: 10c0/fbe76616fb176ce03550e3ce2bb43fa5d44c12d7d0939593f29dab5658accfb559b857df4180f7f681dc601aab928658cd9b49a78daad866089390b820854fbd + languageName: node + linkType: hard + "@module-federation/runtime@npm:0.14.0": version: 0.14.0 resolution: "@module-federation/runtime@npm:0.14.0" @@ -170,6 +177,17 @@ __metadata: languageName: node linkType: hard +"@module-federation/runtime@npm:0.22.0": + version: 0.22.0 + resolution: "@module-federation/runtime@npm:0.22.0" + dependencies: + "@module-federation/error-codes": "npm:0.22.0" + "@module-federation/runtime-core": "npm:0.22.0" + "@module-federation/sdk": "npm:0.22.0" + checksum: 10c0/f9cfaf7f8599a215195cb612a5d4532d4399cc8eb5a928ced60c4bdf0e7e2028849cdc384fa3f1506f9e7e0e112f74f6c30a5a76136dc56e155012d111ea075b + languageName: node + linkType: hard + "@module-federation/sdk@npm:0.14.0": version: 0.14.0 resolution: "@module-federation/sdk@npm:0.14.0" @@ -177,6 +195,13 @@ __metadata: languageName: node linkType: hard +"@module-federation/sdk@npm:0.22.0": + version: 0.22.0 + resolution: "@module-federation/sdk@npm:0.22.0" + checksum: 10c0/c09ba0147368151b67ba33b9174ef451a028e1709d2208aa811cacc1ae4efcae0f1987f02119f9b54754ee6430af3610e357c9b744147f112a25d8f7564f8041 + languageName: node + linkType: hard + "@module-federation/webpack-bundler-runtime@npm:0.14.0": version: 0.14.0 resolution: "@module-federation/webpack-bundler-runtime@npm:0.14.0" @@ -187,6 +212,27 @@ __metadata: languageName: node linkType: hard +"@module-federation/webpack-bundler-runtime@npm:0.22.0": + version: 0.22.0 + resolution: "@module-federation/webpack-bundler-runtime@npm:0.22.0" + dependencies: + "@module-federation/runtime": "npm:0.22.0" + "@module-federation/sdk": "npm:0.22.0" + checksum: 10c0/4c1354b881ffc0c1521f1d676c9301db0b0d59186c386dde4dbb6d33f00fdb16bf118e85cfc38e2ffb36084fa87df8390d415a41c0c93b33bd0e5460a9a934f5 + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:1.0.7": + version: 1.0.7 + resolution: "@napi-rs/wasm-runtime@npm:1.0.7" + dependencies: + "@emnapi/core": "npm:^1.5.0" + "@emnapi/runtime": "npm:^1.5.0" + "@tybys/wasm-util": "npm:^0.10.1" + checksum: 10c0/2d8635498136abb49d6dbf7395b78c63422292240963bf055f307b77aeafbde57ae2c0ceaaef215601531b36d6eb92a2cdd6f5ba90ed2aa8127c27aff9c4ae55 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -243,13 +289,6 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.23.0": - version: 1.23.0 - resolution: "@remix-run/router@npm:1.23.0" - checksum: 10c0/eaef5cb46a1e413f7d1019a75990808307e08e53a39d4cf69c339432ddc03143d725decef3d6b9b5071b898da07f72a4a57c4e73f787005fcf10162973d8d7d7 - languageName: node - linkType: hard - "@rsbuild/core@npm:~1.3.18": version: 1.3.22 resolution: "@rsbuild/core@npm:1.3.22" @@ -265,42 +304,30 @@ __metadata: languageName: node linkType: hard -"@rsbuild/plugin-less@npm:~1.2.4": - version: 1.2.5 - resolution: "@rsbuild/plugin-less@npm:1.2.5" - dependencies: - deepmerge: "npm:^4.3.1" - reduce-configs: "npm:^1.1.0" - peerDependencies: - "@rsbuild/core": 1.x - checksum: 10c0/3abd7a93d0aaf1f17546b4fffb3b17d2f6ee88360f6595b3129146df388c055eef5497900613432602d0fea32875116cdd59476c85c0e20485a3a1f13e5ee133 - languageName: node - linkType: hard - -"@rsbuild/plugin-react@npm:~1.3.1": - version: 1.3.4 - resolution: "@rsbuild/plugin-react@npm:1.3.4" +"@rsbuild/core@npm:~1.7.1": + version: 1.7.2 + resolution: "@rsbuild/core@npm:1.7.2" dependencies: - "@rspack/plugin-react-refresh": "npm:~1.4.3" - react-refresh: "npm:^0.17.0" - peerDependencies: - "@rsbuild/core": 1.x - checksum: 10c0/fbd7f5df275e5c4c2f0941e687333d757cbe7951074b5e801e91f528f5b14e9409c23cfb2dd1405efe5d0777f095f6670ab2cbdd8f90810980a8511eee3d8901 + "@rspack/core": "npm:~1.7.1" + "@rspack/lite-tapable": "npm:~1.1.0" + "@swc/helpers": "npm:^0.5.18" + core-js: "npm:~3.47.0" + jiti: "npm:^2.6.1" + bin: + rsbuild: bin/rsbuild.js + checksum: 10c0/fcedc7ac9aac793883484d532b8f753e7b9d11e95812ba260b8fe7ebb9517309dd472b226701b7d36805e862ed701ed02bd2b346364eaef9f7b03f3039053225 languageName: node linkType: hard -"@rsbuild/plugin-sass@npm:~1.3.0": - version: 1.3.3 - resolution: "@rsbuild/plugin-sass@npm:1.3.3" +"@rsbuild/plugin-react@npm:~1.4.2": + version: 1.4.2 + resolution: "@rsbuild/plugin-react@npm:1.4.2" dependencies: - deepmerge: "npm:^4.3.1" - loader-utils: "npm:^2.0.4" - postcss: "npm:^8.5.6" - reduce-configs: "npm:^1.1.0" - sass-embedded: "npm:^1.89.2" + "@rspack/plugin-react-refresh": "npm:^1.5.2" + react-refresh: "npm:^0.18.0" peerDependencies: "@rsbuild/core": 1.x - checksum: 10c0/3ad0905aeebc1ca50bf55334a1a38abce943aa9f913edb4d106cbec7e38516adf90be67e76be12df8ff85ba926d7c17456b86bb353e20e20998326fb54eed62e + checksum: 10c0/795de7ee04d96aa976102d7a64b3888cca1285fe58d1ec688cf8a7b577aee0334e246ddacbbc2ceff8cedf8f219338a1271a0ffec4334c146dbadfa213daf6ff languageName: node linkType: hard @@ -311,6 +338,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-darwin-arm64@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-darwin-arm64@npm:1.7.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rspack/binding-darwin-x64@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-darwin-x64@npm:1.3.12" @@ -318,6 +352,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-darwin-x64@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-darwin-x64@npm:1.7.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rspack/binding-linux-arm64-gnu@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-linux-arm64-gnu@npm:1.3.12" @@ -325,6 +366,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-linux-arm64-gnu@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-linux-arm64-gnu@npm:1.7.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rspack/binding-linux-arm64-musl@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-linux-arm64-musl@npm:1.3.12" @@ -332,6 +380,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-linux-arm64-musl@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-linux-arm64-musl@npm:1.7.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rspack/binding-linux-x64-gnu@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-linux-x64-gnu@npm:1.3.12" @@ -339,6 +394,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-linux-x64-gnu@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-linux-x64-gnu@npm:1.7.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rspack/binding-linux-x64-musl@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-linux-x64-musl@npm:1.3.12" @@ -346,6 +408,22 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-linux-x64-musl@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-linux-x64-musl@npm:1.7.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rspack/binding-wasm32-wasi@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-wasm32-wasi@npm:1.7.1" + dependencies: + "@napi-rs/wasm-runtime": "npm:1.0.7" + conditions: cpu=wasm32 + languageName: node + linkType: hard + "@rspack/binding-win32-arm64-msvc@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-win32-arm64-msvc@npm:1.3.12" @@ -353,6 +431,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-win32-arm64-msvc@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-win32-arm64-msvc@npm:1.7.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rspack/binding-win32-ia32-msvc@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-win32-ia32-msvc@npm:1.3.12" @@ -360,6 +445,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-win32-ia32-msvc@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-win32-ia32-msvc@npm:1.7.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rspack/binding-win32-x64-msvc@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding-win32-x64-msvc@npm:1.3.12" @@ -367,6 +459,13 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-win32-x64-msvc@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding-win32-x64-msvc@npm:1.7.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rspack/binding@npm:1.3.12": version: 1.3.12 resolution: "@rspack/binding@npm:1.3.12" @@ -403,6 +502,45 @@ __metadata: languageName: node linkType: hard +"@rspack/binding@npm:1.7.1": + version: 1.7.1 + resolution: "@rspack/binding@npm:1.7.1" + dependencies: + "@rspack/binding-darwin-arm64": "npm:1.7.1" + "@rspack/binding-darwin-x64": "npm:1.7.1" + "@rspack/binding-linux-arm64-gnu": "npm:1.7.1" + "@rspack/binding-linux-arm64-musl": "npm:1.7.1" + "@rspack/binding-linux-x64-gnu": "npm:1.7.1" + "@rspack/binding-linux-x64-musl": "npm:1.7.1" + "@rspack/binding-wasm32-wasi": "npm:1.7.1" + "@rspack/binding-win32-arm64-msvc": "npm:1.7.1" + "@rspack/binding-win32-ia32-msvc": "npm:1.7.1" + "@rspack/binding-win32-x64-msvc": "npm:1.7.1" + dependenciesMeta: + "@rspack/binding-darwin-arm64": + optional: true + "@rspack/binding-darwin-x64": + optional: true + "@rspack/binding-linux-arm64-gnu": + optional: true + "@rspack/binding-linux-arm64-musl": + optional: true + "@rspack/binding-linux-x64-gnu": + optional: true + "@rspack/binding-linux-x64-musl": + optional: true + "@rspack/binding-wasm32-wasi": + optional: true + "@rspack/binding-win32-arm64-msvc": + optional: true + "@rspack/binding-win32-ia32-msvc": + optional: true + "@rspack/binding-win32-x64-msvc": + optional: true + checksum: 10c0/e356aef5a9bcc97a8696cf45ca6c4e6edde53a660290e745f8cac6d2e0d9928f92d4184c38bd917654028ffc6363af5c7a141ea772a0568c49955a24a85cd75c + languageName: node + linkType: hard + "@rspack/core@npm:1.3.12": version: 1.3.12 resolution: "@rspack/core@npm:1.3.12" @@ -420,6 +558,22 @@ __metadata: languageName: node linkType: hard +"@rspack/core@npm:~1.7.1": + version: 1.7.1 + resolution: "@rspack/core@npm:1.7.1" + dependencies: + "@module-federation/runtime-tools": "npm:0.22.0" + "@rspack/binding": "npm:1.7.1" + "@rspack/lite-tapable": "npm:1.1.0" + peerDependencies: + "@swc/helpers": ">=0.5.1" + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 10c0/d5616a180751b466b6bcb4b2f9de9ce803d68341bc8c452e52a35e2ddde31d725f973167c1e1e9dabfe52c33e614dd353ff0b499896dae7f6949259e8bbb7dfc + languageName: node + linkType: hard + "@rspack/lite-tapable@npm:1.0.1, @rspack/lite-tapable@npm:~1.0.1": version: 1.0.1 resolution: "@rspack/lite-tapable@npm:1.0.1" @@ -427,9 +581,16 @@ __metadata: languageName: node linkType: hard -"@rspack/plugin-react-refresh@npm:~1.4.3": - version: 1.4.3 - resolution: "@rspack/plugin-react-refresh@npm:1.4.3" +"@rspack/lite-tapable@npm:1.1.0, @rspack/lite-tapable@npm:~1.1.0": + version: 1.1.0 + resolution: "@rspack/lite-tapable@npm:1.1.0" + checksum: 10c0/15059d1da73192b150339ceba3142a2d0073fa298dad9a497cc8c6037c597c3a982ed4c88dc50afa7b70d0757df1b47af7ae407cfe8acd31d333d524b84a7a4b + languageName: node + linkType: hard + +"@rspack/plugin-react-refresh@npm:^1.5.2": + version: 1.6.0 + resolution: "@rspack/plugin-react-refresh@npm:1.6.0" dependencies: error-stack-parser: "npm:^2.1.4" html-entities: "npm:^2.6.0" @@ -439,53 +600,59 @@ __metadata: peerDependenciesMeta: webpack-hot-middleware: optional: true - checksum: 10c0/83547920b61ac1cdad10545b60f6eee01adf7a935d46f962bc79e37ca4063256bb72137361ce63023b282b05b6c686790e5bf175c5bf8f0138d5a303d7c099ea + checksum: 10c0/21d28d463af1c9e2a76103dbeab38677d7b9154470516fa1bc02255bd97857863c031ba0401ef2cdd2f02e70221923f4851c81eb5a3f7a2ae5324cce2e48dc76 languageName: node linkType: hard -"@rspress/core@npm:1.44.0": - version: 1.44.0 - resolution: "@rspress/core@npm:1.44.0" +"@rspress/core@npm:^2.0.0-rc.5": + version: 2.0.0-rc.5 + resolution: "@rspress/core@npm:2.0.0-rc.5" dependencies: - "@mdx-js/loader": "npm:^2.3.0" - "@mdx-js/mdx": "npm:^2.3.0" - "@mdx-js/react": "npm:^2.3.0" - "@rsbuild/core": "npm:~1.3.18" - "@rsbuild/plugin-less": "npm:~1.2.4" - "@rsbuild/plugin-react": "npm:~1.3.1" - "@rsbuild/plugin-sass": "npm:~1.3.0" + "@mdx-js/mdx": "npm:^3.1.1" + "@mdx-js/react": "npm:^3.1.1" + "@rsbuild/core": "npm:~1.7.1" + "@rsbuild/plugin-react": "npm:~1.4.2" "@rspress/mdx-rs": "npm:0.6.6" - "@rspress/plugin-auto-nav-sidebar": "npm:1.44.0" - "@rspress/plugin-container-syntax": "npm:1.44.0" - "@rspress/plugin-last-updated": "npm:1.44.0" - "@rspress/plugin-medium-zoom": "npm:1.44.0" - "@rspress/runtime": "npm:1.44.0" - "@rspress/shared": "npm:1.44.0" - "@rspress/theme-default": "npm:1.44.0" - enhanced-resolve: "npm:5.18.0" + "@rspress/shared": "npm:2.0.0-rc.5" + "@shikijs/rehype": "npm:^3.20.0" + "@types/unist": "npm:^3.0.3" + "@unhead/react": "npm:^2.1.1" + body-scroll-lock: "npm:4.0.0-beta.0" + cac: "npm:^6.7.14" + chokidar: "npm:^3.6.0" + clsx: "npm:2.1.1" + copy-to-clipboard: "npm:^3.3.3" + flexsearch: "npm:0.8.212" github-slugger: "npm:^2.0.0" - hast-util-from-html: "npm:^2.0.3" - hast-util-heading-rank: "npm:^2.1.1" + hast-util-heading-rank: "npm:^3.0.0" + hast-util-to-jsx-runtime: "npm:^2.3.6" html-to-text: "npm:^9.0.5" - htmr: "npm:^1.0.2" - lodash-es: "npm:^4.17.21" - mdast-util-mdxjs-esm: "npm:^1.3.1" - memfs: "npm:^4.17.0" + lodash-es: "npm:^4.17.22" + mdast-util-mdx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.1" + medium-zoom: "npm:1.1.0" + nprogress: "npm:^0.2.0" picocolors: "npm:^1.1.1" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-helmet-async: "npm:^1.3.0" + react: "npm:^19.2.3" + react-dom: "npm:^19.2.3" react-lazy-with-preload: "npm:^2.2.1" - react-syntax-highlighter: "npm:^15.6.1" + react-reconciler: "npm:0.33.0" + react-router-dom: "npm:^7.11.0" rehype-external-links: "npm:^3.0.0" - remark: "npm:^14.0.3" - remark-gfm: "npm:3.0.1" - rspack-plugin-virtual-module: "npm:0.1.13" - tinyglobby: "npm:^0.2.10" - unified: "npm:^10.1.2" - unist-util-visit: "npm:^4.1.2" - unist-util-visit-children: "npm:^2.0.2" - checksum: 10c0/2d5d5b8870977e3c516973b6193531aeae1d42bd3518ddae6ac030dcb9a734a958597337fb21fbaed2a1d7d65348b7f32f16691697d9fac1d21e37f60102a457 + rehype-raw: "npm:^7.0.0" + remark-gfm: "npm:^4.0.1" + remark-mdx: "npm:^3.1.1" + remark-stringify: "npm:^11.0.0" + scroll-into-view-if-needed: "npm:^3.1.0" + shiki: "npm:^3.20.0" + tinyglobby: "npm:^0.2.15" + tinypool: "npm:^1.1.1" + unified: "npm:^11.0.5" + unist-util-visit: "npm:^5.0.0" + unist-util-visit-children: "npm:^3.0.0" + bin: + rspress: bin/rspress.js + checksum: 10c0/c85f9f7ac15646b9ff0021b2dc8bef9fb59e7e49aa8b49df1ecad5ec51d47719d1694fdbd6af3cf8bcef00efe9ef8ccae5d6098c933eb71c540067074766fc88 languageName: node linkType: hard @@ -578,98 +745,120 @@ __metadata: languageName: node linkType: hard -"@rspress/plugin-auto-nav-sidebar@npm:1.44.0": - version: 1.44.0 - resolution: "@rspress/plugin-auto-nav-sidebar@npm:1.44.0" +"@rspress/shared@npm:2.0.0-rc.5": + version: 2.0.0-rc.5 + resolution: "@rspress/shared@npm:2.0.0-rc.5" dependencies: - "@rspress/shared": "npm:1.44.0" - checksum: 10c0/a06561f9b541e6bbf57bda49523b4b3cc55194a4243fc5011fd34db014ae5adbad0dfc8e353303dda60bb7dd072d613980d5c37f4ce036cfba497d9efc678a97 + "@rsbuild/core": "npm:~1.7.1" + "@shikijs/rehype": "npm:^3.20.0" + gray-matter: "npm:4.0.3" + lodash-es: "npm:^4.17.22" + unified: "npm:^11.0.5" + checksum: 10c0/ca832ef7a545bfc5434efd5e73039054d5aff3e7a3a448db35af5e6e4d3ae087990cc569118a981f7dd76350edbd25d0d77b35ae42007e63519e941f9b5a49a7 languageName: node linkType: hard -"@rspress/plugin-container-syntax@npm:1.44.0": +"@rspress/shared@npm:^1.17.1": version: 1.44.0 - resolution: "@rspress/plugin-container-syntax@npm:1.44.0" + resolution: "@rspress/shared@npm:1.44.0" + dependencies: + "@rsbuild/core": "npm:~1.3.18" + gray-matter: "npm:4.0.3" + lodash-es: "npm:^4.17.21" + unified: "npm:^10.1.2" + checksum: 10c0/4be7ab13ea929213991c1ff8a428f960023265f7849f5935759aff2c32092b0c9cb47875a7dae54da3139163d8e32f34f5d53aba5e4de9c914c8fee2493d3a2f + languageName: node + linkType: hard + +"@selderee/plugin-htmlparser2@npm:^0.11.0": + version: 0.11.0 + resolution: "@selderee/plugin-htmlparser2@npm:0.11.0" dependencies: - "@rspress/shared": "npm:1.44.0" - checksum: 10c0/1da0a6a2b17034d1941aea6c58ce85083449697d34b492ab776994e19f56e338d99be723e4184e917995113b3f0e4e0ad4be0bd737ff80c8f08eab23e285e391 + domhandler: "npm:^5.0.3" + selderee: "npm:^0.11.0" + checksum: 10c0/e938ba9aeb31a9cf30dcb2977ef41685c598bf744bedc88c57aa9e8b7e71b51781695cf99c08aac50773fd7714eba670bd2a079e46db0788abe40c6d220084eb languageName: node linkType: hard -"@rspress/plugin-last-updated@npm:1.44.0": - version: 1.44.0 - resolution: "@rspress/plugin-last-updated@npm:1.44.0" +"@shikijs/core@npm:3.21.0": + version: 3.21.0 + resolution: "@shikijs/core@npm:3.21.0" dependencies: - "@rspress/shared": "npm:1.44.0" - checksum: 10c0/09688d4a362864d15de0624bd75edbcd5950ae0a47bfeb4f1ac4806fd6beeb116f32826048c59fae4fb727e3049724a7eea80db85062776980bbeec26419ac3f + "@shikijs/types": "npm:3.21.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + "@types/hast": "npm:^3.0.4" + hast-util-to-html: "npm:^9.0.5" + checksum: 10c0/749d9ff21506f2b1844735000d6324f743b5a022b4bee4eee82cb3a0786faf715fe903d32ae61a38440a3a7387a65945fd6ec4db29ba38e38f952e5bfb50a772 languageName: node linkType: hard -"@rspress/plugin-medium-zoom@npm:1.44.0": - version: 1.44.0 - resolution: "@rspress/plugin-medium-zoom@npm:1.44.0" +"@shikijs/engine-javascript@npm:3.21.0": + version: 3.21.0 + resolution: "@shikijs/engine-javascript@npm:3.21.0" dependencies: - medium-zoom: "npm:1.1.0" - peerDependencies: - "@rspress/runtime": ^1.44.0 - checksum: 10c0/378717c6a61f81ea078cba8c0988c73d8cc9b969c904f4945aeee9c92ad13221f9c66c5375e63ca73a9ddd7f07b22621ca71d4146e241e0a3870e0120952d5cb + "@shikijs/types": "npm:3.21.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + oniguruma-to-es: "npm:^4.3.4" + checksum: 10c0/8ff173ae04bb4578d9cfbd458188db71385001475bea15d8506bf00ab530d9dd5e40d787087ab240889ce768d21e45b3d4af919dc9c99f541a80d95eaefcb4aa languageName: node linkType: hard -"@rspress/runtime@npm:1.44.0": - version: 1.44.0 - resolution: "@rspress/runtime@npm:1.44.0" +"@shikijs/engine-oniguruma@npm:3.21.0": + version: 3.21.0 + resolution: "@shikijs/engine-oniguruma@npm:3.21.0" dependencies: - "@rspress/shared": "npm:1.44.0" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-helmet-async: "npm:^1.3.0" - react-router-dom: "npm:^6.29.0" - checksum: 10c0/fc9de02ce7e5a2e131095cc8da103d8a101777b202ffa6b4aae471b8e0f83789b012b95248bf0209b3d0fd42eb8ddcb725173dd98ce7158b69f2a20c281df919 + "@shikijs/types": "npm:3.21.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + checksum: 10c0/cb17c034b04e1333f90f267081b7fac0b53e56031f7d067723363a72cdbdf79e567dea216bbcae38a6d4b910570c2dd60a953ca941f4834768c0bb721131af5f languageName: node linkType: hard -"@rspress/shared@npm:1.44.0, @rspress/shared@npm:^1.17.1": - version: 1.44.0 - resolution: "@rspress/shared@npm:1.44.0" +"@shikijs/langs@npm:3.21.0": + version: 3.21.0 + resolution: "@shikijs/langs@npm:3.21.0" dependencies: - "@rsbuild/core": "npm:~1.3.18" - gray-matter: "npm:4.0.3" - lodash-es: "npm:^4.17.21" - unified: "npm:^10.1.2" - checksum: 10c0/4be7ab13ea929213991c1ff8a428f960023265f7849f5935759aff2c32092b0c9cb47875a7dae54da3139163d8e32f34f5d53aba5e4de9c914c8fee2493d3a2f + "@shikijs/types": "npm:3.21.0" + checksum: 10c0/79cfc2b8ac1f5c938bfb18db6233f86ca96948970068c2cc94559e30abac2036c35a2ae52015d07f72b6decfd6b2ae86321f9547ae0f994b6131e362781fbf1f languageName: node linkType: hard -"@rspress/theme-default@npm:1.44.0": - version: 1.44.0 - resolution: "@rspress/theme-default@npm:1.44.0" +"@shikijs/rehype@npm:^3.20.0": + version: 3.21.0 + resolution: "@shikijs/rehype@npm:3.21.0" dependencies: - "@mdx-js/react": "npm:2.3.0" - "@rspress/runtime": "npm:1.44.0" - "@rspress/shared": "npm:1.44.0" - body-scroll-lock: "npm:4.0.0-beta.0" - copy-to-clipboard: "npm:^3.3.3" - flexsearch: "npm:0.7.43" - github-slugger: "npm:^2.0.0" - htmr: "npm:^1.0.2" - lodash-es: "npm:^4.17.21" - nprogress: "npm:^0.2.0" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-helmet-async: "npm:^1.3.0" - react-syntax-highlighter: "npm:^15.6.1" - checksum: 10c0/46f0c747f5854b23bf6de44d84f81de22a8bd584315c888afce5c182b5edecd804b57f1157686ea9f2a489a05211894892edf71aa256fab448d5b873ad9dcd7c + "@shikijs/types": "npm:3.21.0" + "@types/hast": "npm:^3.0.4" + hast-util-to-string: "npm:^3.0.1" + shiki: "npm:3.21.0" + unified: "npm:^11.0.5" + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/21df86b67a7c3cafa59158a1fc84e9977e1785f11746588129e7a1fa26acd0a3f9e647c7aea0d9704ca8ce4b936e52c0e7fbb79ae97d965f6564d364678afdfb languageName: node linkType: hard -"@selderee/plugin-htmlparser2@npm:^0.11.0": - version: 0.11.0 - resolution: "@selderee/plugin-htmlparser2@npm:0.11.0" +"@shikijs/themes@npm:3.21.0": + version: 3.21.0 + resolution: "@shikijs/themes@npm:3.21.0" dependencies: - domhandler: "npm:^5.0.3" - selderee: "npm:^0.11.0" - checksum: 10c0/e938ba9aeb31a9cf30dcb2977ef41685c598bf744bedc88c57aa9e8b7e71b51781695cf99c08aac50773fd7714eba670bd2a079e46db0788abe40c6d220084eb + "@shikijs/types": "npm:3.21.0" + checksum: 10c0/f128a874231d84d93e16f347557e844c2b6493b41196b52e36a79874598abe2dbf3ee981dfe52dd09f8d7e21ed4ff41ab03c28de7a21313d9a0b691fbd3690c0 + languageName: node + linkType: hard + +"@shikijs/types@npm:3.21.0": + version: 3.21.0 + resolution: "@shikijs/types@npm:3.21.0" + dependencies: + "@shikijs/vscode-textmate": "npm:^10.0.2" + "@types/hast": "npm:^3.0.4" + checksum: 10c0/a86038c7ad10bb8104ea07cfa0dddf1e0646cf3b70a382978939c6144b21e5891395f5e705b7393476320f6196d86c6d8cd7ad6b3e1b356eb6a7e40c298c98f3 + languageName: node + linkType: hard + +"@shikijs/vscode-textmate@npm:^10.0.2": + version: 10.0.2 + resolution: "@shikijs/vscode-textmate@npm:10.0.2" + checksum: 10c0/36b682d691088ec244de292dc8f91b808f95c89466af421cf84cbab92230f03c8348649c14b3251991b10ce632b0c715e416e992dd5f28ff3221dc2693fd9462 languageName: node linkType: hard @@ -682,6 +871,15 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.5.18": + version: 0.5.18 + resolution: "@swc/helpers@npm:0.5.18" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/cb32d72e32f775c30287bffbcf61c89ea3a963608cb3a4a675a3f9af545b8b3ab0bc9930432a5520a7307daaa87538158e253584ae1cf39f3e7e6e83408a2d51 + languageName: node + linkType: hard + "@ts-morph/common@npm:~0.23.0": version: 0.23.0 resolution: "@ts-morph/common@npm:0.23.0" @@ -694,12 +892,12 @@ __metadata: languageName: node linkType: hard -"@types/acorn@npm:^4.0.0": - version: 4.0.6 - resolution: "@types/acorn@npm:4.0.6" +"@tybys/wasm-util@npm:^0.10.1": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" dependencies: - "@types/estree": "npm:*" - checksum: 10c0/5a65a1d7e91fc95703f0a717897be60fa7ccd34b17f5462056274a246e6690259fe0a1baabc86fd3260354f87245cb3dc483346d7faad2b78fc199763978ede9 + tslib: "npm:^2.4.0" + checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 languageName: node linkType: hard @@ -721,14 +919,14 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": +"@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 languageName: node linkType: hard -"@types/hast@npm:^2.0.0, @types/hast@npm:^2.3.4": +"@types/hast@npm:^2.3.4": version: 2.3.10 resolution: "@types/hast@npm:2.3.10" dependencies: @@ -737,7 +935,7 @@ __metadata: languageName: node linkType: hard -"@types/hast@npm:^3.0.0": +"@types/hast@npm:^3.0.0, @types/hast@npm:^3.0.4": version: 3.0.4 resolution: "@types/hast@npm:3.0.4" dependencies: @@ -803,15 +1001,6 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:>=16": - version: 19.1.8 - resolution: "@types/react@npm:19.1.8" - dependencies: - csstype: "npm:^3.0.2" - checksum: 10c0/4908772be6dc941df276931efeb0e781777fa76e4d5d12ff9f75eb2dcc2db3065e0100efde16fde562c5bafa310cc8f50c1ee40a22640459e066e72cd342143e - languageName: node - linkType: hard - "@types/react@npm:^18.3.23": version: 18.3.23 resolution: "@types/react@npm:18.3.23" @@ -829,7 +1018,7 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^3.0.0": +"@types/unist@npm:*, @types/unist@npm:^3.0.0, @types/unist@npm:^3.0.3": version: 3.0.3 resolution: "@types/unist@npm:3.0.3" checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60 @@ -850,6 +1039,17 @@ __metadata: languageName: node linkType: hard +"@unhead/react@npm:^2.1.1": + version: 2.1.2 + resolution: "@unhead/react@npm:2.1.2" + dependencies: + unhead: "npm:2.1.2" + peerDependencies: + react: ">=18.3.1" + checksum: 10c0/936970195c28be043cdf455b2c76ab83c0644fc9a44790efdeb5b0dddbeef7c7227d5a851e197fa8e370d53d57fdba5c6f94ffdf2f93c6eaff78c0329886df07 + languageName: node + linkType: hard + "@vercel/analytics@npm:^1.2.2": version: 1.5.0 resolution: "@vercel/analytics@npm:1.5.0" @@ -991,13 +1191,6 @@ __metadata: languageName: node linkType: hard -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f - languageName: node - linkType: hard - "binary-extensions@npm:^2.0.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" @@ -1030,13 +1223,6 @@ __metadata: languageName: node linkType: hard -"buffer-builder@npm:^0.2.0": - version: 0.2.0 - resolution: "buffer-builder@npm:0.2.0" - checksum: 10c0/e50c3a379f4acaea75ade1ee3e8c07ed6d7c5dfc3f98adbcf0159bfe1a4ce8ca1fe3689e861fcdb3fcef0012ebd4345a6112a5b8a1185295452bb66d7b6dc8a1 - languageName: node - linkType: hard - "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -1085,13 +1271,6 @@ __metadata: languageName: node linkType: hard -"character-entities-legacy@npm:^1.0.0": - version: 1.1.4 - resolution: "character-entities-legacy@npm:1.1.4" - checksum: 10c0/ea4ca9c29887335eed86d78fc67a640168342b1274da84c097abb0575a253d1265281a5052f9a863979e952bcc267b4ecaaf4fe233a7e1e0d8a47806c65b96c7 - languageName: node - linkType: hard - "character-entities-legacy@npm:^3.0.0": version: 3.0.0 resolution: "character-entities-legacy@npm:3.0.0" @@ -1099,13 +1278,6 @@ __metadata: languageName: node linkType: hard -"character-entities@npm:^1.0.0": - version: 1.2.4 - resolution: "character-entities@npm:1.2.4" - checksum: 10c0/ad015c3d7163563b8a0ee1f587fb0ef305ef344e9fd937f79ca51cccc233786a01d591d989d5bf7b2e66b528ac9efba47f3b1897358324e69932f6d4b25adfe1 - languageName: node - linkType: hard - "character-entities@npm:^2.0.0": version: 2.0.2 resolution: "character-entities@npm:2.0.2" @@ -1113,13 +1285,6 @@ __metadata: languageName: node linkType: hard -"character-reference-invalid@npm:^1.0.0": - version: 1.1.4 - resolution: "character-reference-invalid@npm:1.1.4" - checksum: 10c0/29f05081c5817bd1e975b0bf61e77b60a40f62ad371d0f0ce0fdb48ab922278bc744d1fbe33771dced751887a8403f265ff634542675c8d7375f6ff4811efd0e - languageName: node - linkType: hard - "character-reference-invalid@npm:^2.0.0": version: 2.0.1 resolution: "character-reference-invalid@npm:2.0.1" @@ -1153,7 +1318,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^2.1.0": +"clsx@npm:2.1.1, clsx@npm:^2.1.0": version: 2.1.1 resolution: "clsx@npm:2.1.1" checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 @@ -1167,6 +1332,13 @@ __metadata: languageName: node linkType: hard +"collapse-white-space@npm:^2.0.0": + version: 2.1.0 + resolution: "collapse-white-space@npm:2.1.0" + checksum: 10c0/b2e2800f4ab261e62eb27a1fbe853378296e3a726d6695117ed033e82d61fb6abeae4ffc1465d5454499e237005de9cfc52c9562dc7ca4ac759b9a222ef14453 + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -1183,24 +1355,24 @@ __metadata: languageName: node linkType: hard -"colorjs.io@npm:^0.5.0": - version: 0.5.2 - resolution: "colorjs.io@npm:0.5.2" - checksum: 10c0/2e6ea43629e325e721b92429239de3a6f42fb6d88ba6e4c2aeff0288c196d876f2f7ee82aea95bd40072d5cdc8cb87f042f4d94c134dcabf0e34a717e4caacb9 +"comma-separated-tokens@npm:^2.0.0": + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67 languageName: node linkType: hard -"comma-separated-tokens@npm:^1.0.0": - version: 1.0.8 - resolution: "comma-separated-tokens@npm:1.0.8" - checksum: 10c0/c3bcfeaa6d50313528a006a40bcc0f9576086665c9b48d4b3a76ddd63e7d6174734386c98be1881cbf6ecfc25e1db61cd775a7b896d2ea7a65de28f83a0f9b17 +"compute-scroll-into-view@npm:^3.0.2": + version: 3.1.1 + resolution: "compute-scroll-into-view@npm:3.1.1" + checksum: 10c0/59761ed62304a9599b52ad75d0d6fbf0669ee2ab7dd472fdb0ad9da36628414c014dea7b5810046560180ad30ffec52a953d19297f66a1d4f3aa0999b9d2521d languageName: node linkType: hard -"comma-separated-tokens@npm:^2.0.0": - version: 2.0.3 - resolution: "comma-separated-tokens@npm:2.0.3" - checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67 +"cookie@npm:^1.0.1": + version: 1.1.1 + resolution: "cookie@npm:1.1.1" + checksum: 10c0/79c4ddc0fcad9c4f045f826f42edf54bcc921a29586a4558b0898277fa89fb47be95bc384c2253f493af7b29500c830da28341274527328f18eba9f58afa112c languageName: node linkType: hard @@ -1220,6 +1392,13 @@ __metadata: languageName: node linkType: hard +"core-js@npm:~3.47.0": + version: 3.47.0 + resolution: "core-js@npm:3.47.0" + checksum: 10c0/9b1a7088b7c660c7b8f1d4c90bb1816a8d5352ebdcb7bc742e3a0e4eb803316b5aa17bacb8769522342196351a5430178f46914644f2bfdb94ce0ced3c7fd523 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" @@ -1289,17 +1468,6 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" - dependencies: - domelementtype: "npm:^2.0.1" - domhandler: "npm:^4.2.0" - entities: "npm:^2.0.0" - checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 - languageName: node - linkType: hard - "dom-serializer@npm:^2.0.0": version: 2.0.0 resolution: "dom-serializer@npm:2.0.0" @@ -1311,22 +1479,13 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": +"domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" - dependencies: - domelementtype: "npm:^2.2.0" - checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b - languageName: node - linkType: hard - "domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": version: 5.0.3 resolution: "domhandler@npm:5.0.3" @@ -1336,17 +1495,6 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^2.5.2": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: "npm:^1.0.1" - domelementtype: "npm:^2.2.0" - domhandler: "npm:^4.2.0" - checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db - languageName: node - linkType: hard - "domutils@npm:^3.0.1": version: 3.2.2 resolution: "domutils@npm:3.2.2" @@ -1379,13 +1527,6 @@ __metadata: languageName: node linkType: hard -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b - languageName: node - linkType: hard - "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -1395,23 +1536,6 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:5.18.0": - version: 5.18.0 - resolution: "enhanced-resolve@npm:5.18.0" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10c0/5fcc264a6040754ab5b349628cac2bb5f89cee475cbe340804e657a5b9565f70e6aafb338d5895554eb0ced9f66c50f38a255274a0591dcb64ee17c549c459ce - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 - languageName: node - linkType: hard - "entities@npm:^4.2.0, entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" @@ -1449,6 +1573,30 @@ __metadata: languageName: node linkType: hard +"esast-util-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "esast-util-from-estree@npm:2.0.0" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + devlop: "npm:^1.0.0" + estree-util-visit: "npm:^2.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + checksum: 10c0/6c619bc6963314f8f64b32e3b101b321bf121f659e62b11e70f425619c2db6f1d25f4c594a57fd00908da96c67d9bfbf876eb5172abf9e13f47a71796f6630ff + languageName: node + linkType: hard + +"esast-util-from-js@npm:^2.0.0": + version: 2.0.1 + resolution: "esast-util-from-js@npm:2.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + acorn: "npm:^8.0.0" + esast-util-from-estree: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/3a446fb0b0d7bcd7e0157aa44b3b692802a08c93edbea81cc0f7fe4437bfdfb4b72e4563fe63b4e36d390086b71185dba4ac921f4180cc6349985c263cc74421 + languageName: node + linkType: hard + "escape-string-regexp@npm:^5.0.0": version: 5.0.0 resolution: "escape-string-regexp@npm:5.0.0" @@ -1466,51 +1614,62 @@ __metadata: languageName: node linkType: hard -"estree-util-attach-comments@npm:^2.0.0": - version: 2.1.1 - resolution: "estree-util-attach-comments@npm:2.1.1" +"estree-util-attach-comments@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-attach-comments@npm:3.0.0" dependencies: "@types/estree": "npm:^1.0.0" - checksum: 10c0/cdb5fdb5809b376ca4a96afbcd916c3570b4bbf5d0115b8a9e1e8a10885d8d9fb549df0a16c077abb42ee35fa33192b69714bac25d4f3c43a36092288c9a64fd + checksum: 10c0/ee69bb5c45e2ad074725b90ed181c1c934b29d81bce4b0c7761431e83c4c6ab1b223a6a3d6a4fbeb92128bc5d5ee201d5dd36cf1770aa5e16a40b0cf36e8a1f1 languageName: node linkType: hard -"estree-util-build-jsx@npm:^2.0.0": - version: 2.2.2 - resolution: "estree-util-build-jsx@npm:2.2.2" +"estree-util-build-jsx@npm:^3.0.0": + version: 3.0.1 + resolution: "estree-util-build-jsx@npm:3.0.1" dependencies: "@types/estree-jsx": "npm:^1.0.0" - estree-util-is-identifier-name: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" estree-walker: "npm:^3.0.0" - checksum: 10c0/2cef6ad6747f51934eba0601c3477ba08c98331cfe616635e08dfc89d06b9bbd370c4d80e87fe7d42d82776fa7840868201f48491b0ef9c808039f15fe4667e1 + checksum: 10c0/274c119817b8e7caa14a9778f1e497fea56cdd2b01df1a1ed037f843178992d3afe85e0d364d485e1e2e239255763553d1b647b15e4a7ba50851bcb43dc6bf80 languageName: node linkType: hard -"estree-util-is-identifier-name@npm:^2.0.0": - version: 2.1.0 - resolution: "estree-util-is-identifier-name@npm:2.1.0" - checksum: 10c0/cc241a6998d30f4e8775ec34b042ef93e0085cd1bdf692a01f22e9b748f0866c76679475ff87935be1d8d5b1a7648be8cba366dc60866b372269f35feec756fe +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b languageName: node linkType: hard -"estree-util-to-js@npm:^1.1.0": - version: 1.2.0 - resolution: "estree-util-to-js@npm:1.2.0" +"estree-util-scope@npm:^1.0.0": + version: 1.0.0 + resolution: "estree-util-scope@npm:1.0.0" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + checksum: 10c0/ef8a573cc899277c613623a1722f630e2163abbc6e9e2f49e758c59b81b484e248b585df6df09a38c00fbfb6390117997cc80c1347b7a86bc1525d9e462b60d5 + languageName: node + linkType: hard + +"estree-util-to-js@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-to-js@npm:2.0.0" dependencies: "@types/estree-jsx": "npm:^1.0.0" astring: "npm:^1.8.0" source-map: "npm:^0.7.0" - checksum: 10c0/ad9c99dc34b0510ab813b485251acbf0abd06361c07b13c08da5d1611c279bee02ec09f2c269ae30b8d2da587115fc1fad4fa9f2f5ba69e094e758a3a4de7069 + checksum: 10c0/ac88cb831401ef99e365f92f4af903755d56ae1ce0e0f0fb8ff66e678141f3d529194f0fb15f6c78cd7554c16fda36854df851d58f9e05cfab15bddf7a97cea0 languageName: node linkType: hard -"estree-util-visit@npm:^1.0.0": - version: 1.2.1 - resolution: "estree-util-visit@npm:1.2.1" +"estree-util-visit@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-visit@npm:2.0.0" dependencies: "@types/estree-jsx": "npm:^1.0.0" - "@types/unist": "npm:^2.0.0" - checksum: 10c0/3c47086ab25947a889fca9f58a842e0d27edadcad24dc393fdd7c9ad3419fe05b3c63b6fc9d6c9d8f50d32bca615cd0a3fe8d0e6b300fb94f74c91210b55ea5d + "@types/unist": "npm:^3.0.0" + checksum: 10c0/acda8b03cc8f890d79c7c7361f6c95331ba84b7ccc0c32b49f447fc30206b20002b37ffdfc97b6ad16e6fe065c63ecbae1622492e2b6b4775c15966606217f39 languageName: node linkType: hard @@ -1568,15 +1727,6 @@ __metadata: languageName: node linkType: hard -"fault@npm:^1.0.0": - version: 1.0.4 - resolution: "fault@npm:1.0.4" - dependencies: - format: "npm:^0.2.0" - checksum: 10c0/c86c11500c1b676787296f31ade8473adcc6784f118f07c1a9429730b6288d0412f96e069ce010aa57e4f65a9cccb5abee8868bbe3c5f10de63b20482c9baebd - languageName: node - linkType: hard - "fdir@npm:^6.4.4": version: 6.4.6 resolution: "fdir@npm:6.4.6" @@ -1589,6 +1739,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -1607,10 +1769,10 @@ __metadata: languageName: node linkType: hard -"flexsearch@npm:0.7.43": - version: 0.7.43 - resolution: "flexsearch@npm:0.7.43" - checksum: 10c0/797dc474ed97750b8e85c118b1af63eb2709da5fc05defcb13e96515774f28743ccb2448b63f3b703cf1ca571928c006069503dacf7d177bc07b9ee15e1f85d0 +"flexsearch@npm:0.8.212": + version: 0.8.212 + resolution: "flexsearch@npm:0.8.212" + checksum: 10c0/557a320fe028e694579d9f3f4cacd6acab6bcfa9101a63dbacf23ddbc872310a3370586a12007cf080ed2dfe3c99e6b21dd1e83697f2b4734722fbd43285d782 languageName: node linkType: hard @@ -1624,24 +1786,6 @@ __metadata: languageName: node linkType: hard -"format@npm:^0.2.0": - version: 0.2.2 - resolution: "format@npm:0.2.2" - checksum: 10c0/6032ba747541a43abf3e37b402b2f72ee08ebcb58bf84d816443dd228959837f1cddf1e8775b29fa27ff133f4bd146d041bfca5f9cf27f048edf3d493cf8fee6 - languageName: node - linkType: hard - -"fs-extra@npm:^11.1.1": - version: 11.3.0 - resolution: "fs-extra@npm:11.3.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/5f95e996186ff45463059feb115a22fb048bdaf7e487ecee8a8646c78ed8fdca63630e3077d4c16ce677051f5e60d3355a06f3cd61f3ca43f48cc58822a44d0a - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -1702,7 +1846,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -1721,27 +1865,6 @@ __metadata: languageName: node linkType: hard -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 - languageName: node - linkType: hard - -"hast-util-from-html@npm:^2.0.3": - version: 2.0.3 - resolution: "hast-util-from-html@npm:2.0.3" - dependencies: - "@types/hast": "npm:^3.0.0" - devlop: "npm:^1.1.0" - hast-util-from-parse5: "npm:^8.0.0" - parse5: "npm:^7.0.0" - vfile: "npm:^6.0.0" - vfile-message: "npm:^4.0.0" - checksum: 10c0/993ef707c1a12474c8d4094fc9706a72826c660a7e308ea54c50ad893353d32e139b7cbc67510c2e82feac572b320e3b05aeb13d0f9c6302d61261f337b46764 - languageName: node - linkType: hard - "hast-util-from-parse5@npm:^8.0.0": version: 8.0.3 resolution: "hast-util-from-parse5@npm:8.0.3" @@ -1758,12 +1881,12 @@ __metadata: languageName: node linkType: hard -"hast-util-heading-rank@npm:^2.1.1": - version: 2.1.1 - resolution: "hast-util-heading-rank@npm:2.1.1" +"hast-util-heading-rank@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-heading-rank@npm:3.0.0" dependencies: - "@types/hast": "npm:^2.0.0" - checksum: 10c0/e1451ae71ea4b524aae1e772063dabb44c13d812de198d6a2841d5d5425c64414d0a81df745bde00f1393b4cbc6990b91b5614f4f895183120ee418fa50ed2c7 + "@types/hast": "npm:^3.0.0" + checksum: 10c0/1879c84f629e73f1f13247ab349324355cd801363b44e3d46f763aa5c0ea3b42dcd47b46e5643a0502cf01a6b1fdb9208fd12852e44ca6c671b3e4bccf9369a1 languageName: node linkType: hard @@ -1776,13 +1899,6 @@ __metadata: languageName: node linkType: hard -"hast-util-parse-selector@npm:^2.0.0": - version: 2.2.5 - resolution: "hast-util-parse-selector@npm:2.2.5" - checksum: 10c0/29b7ee77960ded6a99d30c287d922243071cc07b39f2006f203bd08ee54eb8f66bdaa86ef6527477c766e2382d520b60ee4e4087f189888c35d8bcc020173648 - languageName: node - linkType: hard - "hast-util-parse-selector@npm:^4.0.0": version: 4.0.0 resolution: "hast-util-parse-selector@npm:4.0.0" @@ -1792,46 +1908,123 @@ __metadata: languageName: node linkType: hard -"hast-util-to-estree@npm:^2.0.0": - version: 2.3.3 - resolution: "hast-util-to-estree@npm:2.3.3" +"hast-util-raw@npm:^9.0.0": + version: 9.1.0 + resolution: "hast-util-raw@npm:9.1.0" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + "@ungap/structured-clone": "npm:^1.0.0" + hast-util-from-parse5: "npm:^8.0.0" + hast-util-to-parse5: "npm:^8.0.0" + html-void-elements: "npm:^3.0.0" + mdast-util-to-hast: "npm:^13.0.0" + parse5: "npm:^7.0.0" + unist-util-position: "npm:^5.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + web-namespaces: "npm:^2.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/d0d909d2aedecef6a06f0005cfae410d6475e6e182d768bde30c3af9fcbbe4f9beb0522bdc21d0679cb3c243c0df40385797ed255148d68b3d3f12e82d12aacc + languageName: node + linkType: hard + +"hast-util-to-estree@npm:^3.0.0": + version: 3.1.3 + resolution: "hast-util-to-estree@npm:3.1.3" dependencies: "@types/estree": "npm:^1.0.0" "@types/estree-jsx": "npm:^1.0.0" - "@types/hast": "npm:^2.0.0" - "@types/unist": "npm:^2.0.0" + "@types/hast": "npm:^3.0.0" comma-separated-tokens: "npm:^2.0.0" - estree-util-attach-comments: "npm:^2.0.0" - estree-util-is-identifier-name: "npm:^2.0.0" - hast-util-whitespace: "npm:^2.0.0" - mdast-util-mdx-expression: "npm:^1.0.0" - mdast-util-mdxjs-esm: "npm:^1.0.0" - property-information: "npm:^6.0.0" + devlop: "npm:^1.0.0" + estree-util-attach-comments: "npm:^3.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + hast-util-whitespace: "npm:^3.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + property-information: "npm:^7.0.0" space-separated-tokens: "npm:^2.0.0" - style-to-object: "npm:^0.4.1" - unist-util-position: "npm:^4.0.0" + style-to-js: "npm:^1.0.0" + unist-util-position: "npm:^5.0.0" zwitch: "npm:^2.0.0" - checksum: 10c0/5947b5030a6d20c193f5ea576cc751507e0b30d00f91e40a5208ca3a7add03a3862795a83600c0fdadf19c8b051917c7904715fa7dd358f04603d67a36341c38 + checksum: 10c0/8e86c075319082c8a6304c5bcdf24ec02466074571e993f58bfa2cfd70850ef46d33b5c402208597a87fe0f02f1e620bda5958217efb1b7396c81c486373b75f languageName: node linkType: hard -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.1 - resolution: "hast-util-whitespace@npm:2.0.1" - checksum: 10c0/dcf6ebab091c802ffa7bb3112305c7631c15adb6c07a258f5528aefbddf82b4e162c8310ef426c48dc1dc623982cc33920e6dde5a50015d307f2778dcf6c2487 +"hast-util-to-html@npm:^9.0.5": + version: 9.0.5 + resolution: "hast-util-to-html@npm:9.0.5" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + ccount: "npm:^2.0.0" + comma-separated-tokens: "npm:^2.0.0" + hast-util-whitespace: "npm:^3.0.0" + html-void-elements: "npm:^3.0.0" + mdast-util-to-hast: "npm:^13.0.0" + property-information: "npm:^7.0.0" + space-separated-tokens: "npm:^2.0.0" + stringify-entities: "npm:^4.0.0" + zwitch: "npm:^2.0.4" + checksum: 10c0/b7a08c30bab4371fc9b4a620965c40b270e5ae7a8e94cf885f43b21705179e28c8e43b39c72885d1647965fb3738654e6962eb8b58b0c2a84271655b4d748836 languageName: node linkType: hard -"hastscript@npm:^6.0.0": - version: 6.0.0 - resolution: "hastscript@npm:6.0.0" +"hast-util-to-jsx-runtime@npm:^2.0.0, hast-util-to-jsx-runtime@npm:^2.3.6": + version: 2.3.6 + resolution: "hast-util-to-jsx-runtime@npm:2.3.6" + dependencies: + "@types/estree": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + comma-separated-tokens: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + hast-util-whitespace: "npm:^3.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + property-information: "npm:^7.0.0" + space-separated-tokens: "npm:^2.0.0" + style-to-js: "npm:^1.0.0" + unist-util-position: "npm:^5.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/27297e02848fe37ef219be04a26ce708d17278a175a807689e94a821dcffc88aa506d62c3a85beed1f9a8544f7211bdcbcde0528b7b456a57c2e342c3fd11056 + languageName: node + linkType: hard + +"hast-util-to-parse5@npm:^8.0.0": + version: 8.0.1 + resolution: "hast-util-to-parse5@npm:8.0.1" + dependencies: + "@types/hast": "npm:^3.0.0" + comma-separated-tokens: "npm:^2.0.0" + devlop: "npm:^1.0.0" + property-information: "npm:^7.0.0" + space-separated-tokens: "npm:^2.0.0" + web-namespaces: "npm:^2.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/8e8a1817c7ff8906ac66e7201b1b8d19d9e1b705e695a6e71620270d498d982ec1ecc0e227bd517f723e91e7fdfb90ef75f9ae64d14b3b65239a7d5e1194d7dd + languageName: node + linkType: hard + +"hast-util-to-string@npm:^3.0.1": + version: 3.0.1 + resolution: "hast-util-to-string@npm:3.0.1" + dependencies: + "@types/hast": "npm:^3.0.0" + checksum: 10c0/b5fa1912a6ba6131affae52a0f4394406c4c0d23c2b0307f1d69988f1030c7bb830289303e67c5ad8f674f5f23a454c1dcd492c39e45a22c1f46d3c9bce5bd0c + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-whitespace@npm:3.0.0" dependencies: - "@types/hast": "npm:^2.0.0" - comma-separated-tokens: "npm:^1.0.0" - hast-util-parse-selector: "npm:^2.0.0" - property-information: "npm:^5.0.0" - space-separated-tokens: "npm:^1.0.0" - checksum: 10c0/f76d9cf373cb075c8523c8ad52709f09f7e02b7c9d3152b8d35c65c265b9f1878bed6023f215a7d16523921036d40a7da292cb6f4399af9b5eccac2a5a5eb330 + "@types/hast": "npm:^3.0.0" + checksum: 10c0/b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8 languageName: node linkType: hard @@ -1848,21 +2041,14 @@ __metadata: languageName: node linkType: hard -"highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0": - version: 10.7.3 - resolution: "highlight.js@npm:10.7.3" - checksum: 10c0/073837eaf816922427a9005c56c42ad8786473dc042332dfe7901aa065e92bc3d94ebf704975257526482066abb2c8677cc0326559bb8621e046c21c5991c434 - languageName: node - linkType: hard - -"highlightjs-vue@npm:^1.0.0": - version: 1.0.0 - resolution: "highlightjs-vue@npm:1.0.0" - checksum: 10c0/9be378c70b864ca5eee87b07859222e31c946a8ad176227e54f7006a498223974ebe19fcce6e38ad5eb3c1ed0e16a580c4edefdf2cb882b6dfab1c3866cc047a +"hookable@npm:^6.0.1": + version: 6.0.1 + resolution: "hookable@npm:6.0.1" + checksum: 10c0/a53592937c1aa74a650b3b92a9d8cf8bd58eee48422124a90299344f81e90cd2ee2f3d9f3686c45c0bc87edbc9fede4de709edf6b987dd6837bdcfa502447fa0 languageName: node linkType: hard -"html-entities@npm:^2.1.0, html-entities@npm:^2.6.0": +"html-entities@npm:^2.6.0": version: 2.6.0 resolution: "html-entities@npm:2.6.0" checksum: 10c0/7c8b15d9ea0cd00dc9279f61bab002ba6ca8a7a0f3c36ed2db3530a67a9621c017830d1d2c1c65beb9b8e3436ea663e9cf8b230472e0e413359399413b27c8b7 @@ -1882,15 +2068,10 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^6.0.0": - version: 6.1.0 - resolution: "htmlparser2@npm:6.1.0" - dependencies: - domelementtype: "npm:^2.0.1" - domhandler: "npm:^4.0.0" - domutils: "npm:^2.5.2" - entities: "npm:^2.0.0" - checksum: 10c0/3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 +"html-void-elements@npm:^3.0.0": + version: 3.0.0 + resolution: "html-void-elements@npm:3.0.0" + checksum: 10c0/a8b9ec5db23b7c8053876dad73a0336183e6162bf6d2677376d8b38d654fdc59ba74fdd12f8812688f7db6fad451210c91b300e472afc0909224e0a44c8610d2 languageName: node linkType: hard @@ -1906,18 +2087,6 @@ __metadata: languageName: node linkType: hard -"htmr@npm:^1.0.2": - version: 1.0.2 - resolution: "htmr@npm:1.0.2" - dependencies: - html-entities: "npm:^2.1.0" - htmlparser2: "npm:^6.0.0" - peerDependencies: - react: ">=15.6.1" - checksum: 10c0/cebb895c019ec56ae29e120b76f9111a72e20aede8a3dbfc1f250d93861c5b0d03a0268e71dff272ba3f9b81a21fc859bfe93af126b28f49e683cd5f971d43f2 - languageName: node - linkType: hard - "http-cache-semantics@npm:^4.1.1": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" @@ -1945,13 +2114,6 @@ __metadata: languageName: node linkType: hard -"hyperdyperid@npm:^1.2.0": - version: 1.2.0 - resolution: "hyperdyperid@npm:1.2.0" - checksum: 10c0/885ba3177c7181d315a856ee9c0005ff8eb5dcb1ce9e9d61be70987895d934d84686c37c981cceeb53216d4c9c15c1cc25f1804e84cc6a74a16993c5d7fd0893 - languageName: node - linkType: hard - "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -1961,13 +2123,6 @@ __metadata: languageName: node linkType: hard -"immutable@npm:^5.0.2": - version: 5.1.3 - resolution: "immutable@npm:5.1.3" - checksum: 10c0/f094891dcefb9488a84598376c9218ebff3a130c8b807bda3f6b703c45fe7ef238b8bf9a1eb9961db0523c8d7eb116ab6f47166702e4bbb1927ff5884157cd97 - languageName: node - linkType: hard - "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -1975,19 +2130,10 @@ __metadata: languageName: node linkType: hard -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 10c0/08832a533f51a1e17619f2eabf2f5ec5e956d6dcba1896351285c65df022c9420de61d73256e1dca8015a52abf96cc84ddc3b73b898b22de6589d3962b5e501b - languageName: node - linkType: hard - -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc +"inline-style-parser@npm:0.2.7": + version: 0.2.7 + resolution: "inline-style-parser@npm:0.2.7" + checksum: 10c0/d884d76f84959517430ae6c22f0bda59bb3f58f539f99aac75a8d786199ec594ed648c6ab4640531f9fc244b0ed5cd8c458078e592d016ef06de793beb1debff languageName: node linkType: hard @@ -2008,13 +2154,6 @@ __metadata: languageName: node linkType: hard -"is-alphabetical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphabetical@npm:1.0.4" - checksum: 10c0/1505b1de5a1fd74022c05fb21b0e683a8f5229366bac8dc4d34cf6935bcfd104d1125a5e6b083fb778847629f76e5bdac538de5367bdf2b927a1356164e23985 - languageName: node - linkType: hard - "is-alphabetical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphabetical@npm:2.0.1" @@ -2022,16 +2161,6 @@ __metadata: languageName: node linkType: hard -"is-alphanumerical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphanumerical@npm:1.0.4" - dependencies: - is-alphabetical: "npm:^1.0.0" - is-decimal: "npm:^1.0.0" - checksum: 10c0/d623abae7130a7015c6bf33d99151d4e7005572fd170b86568ff4de5ae86ac7096608b87dd4a1d4dbbd497e392b6396930ba76c9297a69455909cebb68005905 - languageName: node - linkType: hard - "is-alphanumerical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphanumerical@npm:2.0.1" @@ -2058,13 +2187,6 @@ __metadata: languageName: node linkType: hard -"is-decimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-decimal@npm:1.0.4" - checksum: 10c0/a4ad53c4c5c4f5a12214e7053b10326711f6a71f0c63ba1314a77bd71df566b778e4ebd29f9fb6815f07a4dc50c3767fb19bd6fc9fa05e601410f1d64ffeac48 - languageName: node - linkType: hard - "is-decimal@npm:^2.0.0": version: 2.0.1 resolution: "is-decimal@npm:2.0.1" @@ -2102,13 +2224,6 @@ __metadata: languageName: node linkType: hard -"is-hexadecimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-hexadecimal@npm:1.0.4" - checksum: 10c0/ec4c64e5624c0f240922324bc697e166554f09d3ddc7633fc526084502626445d0a871fbd8cae52a9844e83bd0bb414193cc5a66806d7b2867907003fc70c5ea - languageName: node - linkType: hard - "is-hexadecimal@npm:^2.0.0": version: 2.0.1 resolution: "is-hexadecimal@npm:2.0.1" @@ -2130,15 +2245,6 @@ __metadata: languageName: node linkType: hard -"is-reference@npm:^3.0.0": - version: 3.0.3 - resolution: "is-reference@npm:3.0.3" - dependencies: - "@types/estree": "npm:^1.0.6" - checksum: 10c0/35edd284cfb4cd9e9f08973f20e276ec517eaca31f5f049598e97dbb2d05544973dde212dac30fddee5b420930bff365e2e67dcd1293d0866c6720377382e3e5 - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -2175,10 +2281,12 @@ __metadata: languageName: node linkType: hard -"js-tokens@npm:^3.0.0 || ^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed +"jiti@npm:^2.6.1": + version: 2.6.1 + resolution: "jiti@npm:2.6.1" + bin: + jiti: lib/jiti-cli.mjs + checksum: 10c0/79b2e96a8e623f66c1b703b98ec1b8be4500e1d217e09b09e343471bbb9c105381b83edbb979d01cef18318cc45ce6e153571b6c83122170eefa531c64b6789b languageName: node linkType: hard @@ -2212,28 +2320,6 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: "npm:^4.1.6" - universalify: "npm:^2.0.0" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 - languageName: node - linkType: hard - "kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -2255,17 +2341,6 @@ __metadata: languageName: node linkType: hard -"loader-utils@npm:^2.0.4": - version: 2.0.4 - resolution: "loader-utils@npm:2.0.4" - dependencies: - big.js: "npm:^5.2.2" - emojis-list: "npm:^3.0.0" - json5: "npm:^2.1.2" - checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 - languageName: node - linkType: hard - "lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" @@ -2273,6 +2348,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.22": + version: 4.17.22 + resolution: "lodash-es@npm:4.17.22" + checksum: 10c0/5f28a262183cca43e08c580622557f393cb889386df2d8adf7c852bfdff7a84c5e629df5aa6c5c6274e83b38172f239d3e4e72e1ad27352d9ae9766627338089 + languageName: node + linkType: hard + "longest-streak@npm:^3.0.0": version: 3.1.0 resolution: "longest-streak@npm:3.1.0" @@ -2280,27 +2362,6 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: "npm:^3.0.0 || ^4.0.0" - bin: - loose-envify: cli.js - checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e - languageName: node - linkType: hard - -"lowlight@npm:^1.17.0": - version: 1.20.0 - resolution: "lowlight@npm:1.20.0" - dependencies: - fault: "npm:^1.0.0" - highlight.js: "npm:~10.7.0" - checksum: 10c0/728bce6f6fe8b157f48d3324e597f452ce0eed2ccff1c0f41a9047380f944e971eb45bceb31f08fbb64d8f338dabb166f10049b35b92c7ec5cf0241d6adb3dea - languageName: node - linkType: hard - "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -2327,10 +2388,10 @@ __metadata: languageName: node linkType: hard -"markdown-extensions@npm:^1.0.0": - version: 1.1.1 - resolution: "markdown-extensions@npm:1.1.1" - checksum: 10c0/eb9154016502ad1fb4477683ddb5cae8ba3ca06451b381b04dc4c34e91d8d168129d50d404b717d6bf7d458e13088c109303fc72d57cee7151a6082b0e7bba71 +"markdown-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "markdown-extensions@npm:2.0.0" + checksum: 10c0/406139da2aa0d5ebad86195c8e8c02412f873c452b4c087ae7bc767af37956141be449998223bb379eea179b5fd38dfa610602b6f29c22ddab5d51e627a7e41d languageName: node linkType: hard @@ -2341,30 +2402,19 @@ __metadata: languageName: node linkType: hard -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.2 - resolution: "mdast-util-definitions@npm:5.1.2" - dependencies: - "@types/mdast": "npm:^3.0.0" - "@types/unist": "npm:^2.0.0" - unist-util-visit: "npm:^4.0.0" - checksum: 10c0/da9049c15562e44ee4ea4a36113d98c6c9eaa3d8a17d6da2aef6a0626376dcd01d9ec007d77a8dfcad6d0cbd5c32a4abbad72a3f48c3172a55934c7d9a916480 - languageName: node - linkType: hard - -"mdast-util-find-and-replace@npm:^2.0.0": - version: 2.2.2 - resolution: "mdast-util-find-and-replace@npm:2.2.2" +"mdast-util-find-and-replace@npm:^3.0.0": + version: 3.0.2 + resolution: "mdast-util-find-and-replace@npm:3.0.2" dependencies: - "@types/mdast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" escape-string-regexp: "npm:^5.0.0" - unist-util-is: "npm:^5.0.0" - unist-util-visit-parents: "npm:^5.0.0" - checksum: 10c0/ce935f4bd4aeab47f91531a7f09dfab89aaeea62ad31029b43185c5b626921357703d8e5093c13073c097fdabfc57cb2f884d7dfad83dbe7239e351375d6797c + unist-util-is: "npm:^6.0.0" + unist-util-visit-parents: "npm:^6.0.0" + checksum: 10c0/c8417a35605d567772ff5c1aa08363ff3010b0d60c8ea68c53cba09bf25492e3dd261560425c1756535f3b7107f62e7ff3857cdd8fb1e62d1b2cc2ea6e074ca2 languageName: node linkType: hard -"mdast-util-from-markdown@npm:^1.0.0, mdast-util-from-markdown@npm:^1.1.0, mdast-util-from-markdown@npm:^1.3.1": +"mdast-util-from-markdown@npm:^1.3.1": version: 1.3.1 resolution: "mdast-util-from-markdown@npm:1.3.1" dependencies: @@ -2404,110 +2454,98 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm-autolink-literal@npm:^1.0.0": - version: 1.0.3 - resolution: "mdast-util-gfm-autolink-literal@npm:1.0.3" +"mdast-util-gfm-autolink-literal@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1" dependencies: - "@types/mdast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" ccount: "npm:^2.0.0" - mdast-util-find-and-replace: "npm:^2.0.0" - micromark-util-character: "npm:^1.0.0" - checksum: 10c0/750e312eae73c3f2e8aa0e8c5232cb1b905357ff37ac236927f1af50cdbee7c2cfe2379b148ac32fa4137eeb3b24601e1bb6135084af926c7cd808867804193f - languageName: node - linkType: hard - -"mdast-util-gfm-footnote@npm:^1.0.0": - version: 1.0.2 - resolution: "mdast-util-gfm-footnote@npm:1.0.2" - dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - micromark-util-normalize-identifier: "npm:^1.0.0" - checksum: 10c0/767973e46b9e2ae44e80e51a5e38ad0b032fc7f06a1a3095aa96c2886ba333941c764474a56b82e7db05efc56242a4789bc7fbbcc753d61512750e86a4192fe8 + devlop: "npm:^1.0.0" + mdast-util-find-and-replace: "npm:^3.0.0" + micromark-util-character: "npm:^2.0.0" + checksum: 10c0/963cd22bd42aebdec7bdd0a527c9494d024d1ad0739c43dc040fee35bdfb5e29c22564330a7418a72b5eab51d47a6eff32bc0255ef3ccb5cebfe8970e91b81b6 languageName: node linkType: hard -"mdast-util-gfm-strikethrough@npm:^1.0.0": - version: 1.0.3 - resolution: "mdast-util-gfm-strikethrough@npm:1.0.3" +"mdast-util-gfm-footnote@npm:^2.0.0": + version: 2.1.0 + resolution: "mdast-util-gfm-footnote@npm:2.1.0" dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - checksum: 10c0/29616b3dfdd33d3cd13f9b3181a8562fa2fbacfcb04a37dba3c690ba6829f0231b145444de984726d9277b2bc90dd7d96fb9df9f6292d5e77d65a8659ee2f52b + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.1.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + checksum: 10c0/8ab965ee6be3670d76ec0e95b2ba3101fc7444eec47564943ab483d96ac17d29da2a4e6146a2a288be30c21b48c4f3938a1e54b9a46fbdd321d49a5bc0077ed0 languageName: node linkType: hard -"mdast-util-gfm-table@npm:^1.0.0": - version: 1.0.7 - resolution: "mdast-util-gfm-table@npm:1.0.7" +"mdast-util-gfm-strikethrough@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-strikethrough@npm:2.0.0" dependencies: - "@types/mdast": "npm:^3.0.0" - markdown-table: "npm:^3.0.0" - mdast-util-from-markdown: "npm:^1.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - checksum: 10c0/a37a05a936292c4f48394123332d3c034a6e1b15bb3e7f3b94e6bce3260c9184fd388abbc4100827edd5485a6563098306994d15a729bde3c96de7a62ed5720b + "@types/mdast": "npm:^4.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/b053e93d62c7545019bd914271ea9e5667ad3b3b57d16dbf68e56fea39a7e19b4a345e781312714eb3d43fdd069ff7ee22a3ca7f6149dfa774554f19ce3ac056 languageName: node linkType: hard -"mdast-util-gfm-task-list-item@npm:^1.0.0": - version: 1.0.2 - resolution: "mdast-util-gfm-task-list-item@npm:1.0.2" +"mdast-util-gfm-table@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-table@npm:2.0.0" dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - checksum: 10c0/91fa91f7d1a8797bf129008dab12d23917015ad12df00044e275b4459e8b383fbec6234338953a0089ef9c3a114d0a360c3e652eb0ebf6ece7e7a8fd3b5977c6 + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + markdown-table: "npm:^3.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/128af47c503a53bd1c79f20642561e54a510ad5e2db1e418d28fefaf1294ab839e6c838e341aef5d7e404f9170b9ca3d1d89605f234efafde93ee51174a6e31e languageName: node linkType: hard -"mdast-util-gfm@npm:^2.0.0": - version: 2.0.2 - resolution: "mdast-util-gfm@npm:2.0.2" +"mdast-util-gfm-task-list-item@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-task-list-item@npm:2.0.0" dependencies: - mdast-util-from-markdown: "npm:^1.0.0" - mdast-util-gfm-autolink-literal: "npm:^1.0.0" - mdast-util-gfm-footnote: "npm:^1.0.0" - mdast-util-gfm-strikethrough: "npm:^1.0.0" - mdast-util-gfm-table: "npm:^1.0.0" - mdast-util-gfm-task-list-item: "npm:^1.0.0" - mdast-util-to-markdown: "npm:^1.0.0" - checksum: 10c0/5b7f7f98a90a2962d7e0787e080c4e55b70119100c7685bbdb772d8d7865524aeffd1757edba5afba434250e0246b987c0617c2c635baaf51c26dbbb3b72dbec + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/258d725288482b636c0a376c296431390c14b4f29588675297cb6580a8598ed311fc73ebc312acfca12cc8546f07a3a285a53a3b082712e2cbf5c190d677d834 languageName: node linkType: hard -"mdast-util-mdx-expression@npm:^1.0.0": - version: 1.3.2 - resolution: "mdast-util-mdx-expression@npm:1.3.2" +"mdast-util-gfm@npm:^3.0.0": + version: 3.1.0 + resolution: "mdast-util-gfm@npm:3.1.0" dependencies: - "@types/estree-jsx": "npm:^1.0.0" - "@types/hast": "npm:^2.0.0" - "@types/mdast": "npm:^3.0.0" - mdast-util-from-markdown: "npm:^1.0.0" - mdast-util-to-markdown: "npm:^1.0.0" - checksum: 10c0/01f306ee809d28825cbec23b3c80376a0fbe69601b6b2843d23beb5662a31ec7560995f52b96b13093cc03de1130404a47f139d16f58c3f54e91e88f4bdd82d2 + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-gfm-autolink-literal: "npm:^2.0.0" + mdast-util-gfm-footnote: "npm:^2.0.0" + mdast-util-gfm-strikethrough: "npm:^2.0.0" + mdast-util-gfm-table: "npm:^2.0.0" + mdast-util-gfm-task-list-item: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/4bedcfb6a20e39901c8772f0d2bb2d7a64ae87a54c13cbd92eec062cf470fbb68c2ad754e149af5b30794e2de61c978ab1de1ace03c0c40f443ca9b9b8044f81 languageName: node linkType: hard -"mdast-util-mdx-jsx@npm:^2.0.0": - version: 2.1.4 - resolution: "mdast-util-mdx-jsx@npm:2.1.4" +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdx-expression@npm:2.0.1" dependencies: "@types/estree-jsx": "npm:^1.0.0" - "@types/hast": "npm:^2.0.0" - "@types/mdast": "npm:^3.0.0" - "@types/unist": "npm:^2.0.0" - ccount: "npm:^2.0.0" - mdast-util-from-markdown: "npm:^1.1.0" - mdast-util-to-markdown: "npm:^1.3.0" - parse-entities: "npm:^4.0.0" - stringify-entities: "npm:^4.0.0" - unist-util-remove-position: "npm:^4.0.0" - unist-util-stringify-position: "npm:^3.0.0" - vfile-message: "npm:^3.0.0" - checksum: 10c0/b0c16e56a99c5167e60c98dbdbe82645549630fb529688642c4664ca5557ff0b3029c75146f5657cadb7908d5fa99810eacc5dcc51676d0877c8b4dcebb11cbe + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/9a1e57940f66431f10312fa239096efa7627f375e7933b5d3162c0b5c1712a72ac87447aff2b6838d2bbd5c1311b188718cc90b33b67dc67a88550e0a6ef6183 languageName: node linkType: hard -"mdast-util-mdx-jsx@npm:^3.1.2": +"mdast-util-mdx-jsx@npm:^3.0.0, mdast-util-mdx-jsx@npm:^3.1.2": version: 3.2.0 resolution: "mdast-util-mdx-jsx@npm:3.2.0" dependencies: @@ -2527,33 +2565,20 @@ __metadata: languageName: node linkType: hard -"mdast-util-mdx@npm:^2.0.0": - version: 2.0.1 - resolution: "mdast-util-mdx@npm:2.0.1" - dependencies: - mdast-util-from-markdown: "npm:^1.0.0" - mdast-util-mdx-expression: "npm:^1.0.0" - mdast-util-mdx-jsx: "npm:^2.0.0" - mdast-util-mdxjs-esm: "npm:^1.0.0" - mdast-util-to-markdown: "npm:^1.0.0" - checksum: 10c0/3b5e55781a7b7b4b7e71728a84afbec63516f251b3556efec52dbb4824c0733f5ebaa907d21211d008e5cb1a8265e6704bc062ee605f4c09e90fbfa2c6fbba3b - languageName: node - linkType: hard - -"mdast-util-mdxjs-esm@npm:^1.0.0, mdast-util-mdxjs-esm@npm:^1.3.1": - version: 1.3.1 - resolution: "mdast-util-mdxjs-esm@npm:1.3.1" +"mdast-util-mdx@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-mdx@npm:3.0.0" dependencies: - "@types/estree-jsx": "npm:^1.0.0" - "@types/hast": "npm:^2.0.0" - "@types/mdast": "npm:^3.0.0" - mdast-util-from-markdown: "npm:^1.0.0" - mdast-util-to-markdown: "npm:^1.0.0" - checksum: 10c0/2ff0af34ea62004d39f15bd45b79e3008e68cae7e2510c9281e24a17e2c3f55d004524796166ef5aa3378798ca7f6c5f88883238f413577619bbaf41026b7e62 + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/4faea13f77d6bc9aa64ee41a5e4779110b73444a17fda363df6ebe880ecfa58b321155b71f8801c3faa6d70d6222a32a00cbd6dbf5fad8db417f4688bc9c74e1 languageName: node linkType: hard -"mdast-util-mdxjs-esm@npm:^2.0.1": +"mdast-util-mdxjs-esm@npm:^2.0.0, mdast-util-mdxjs-esm@npm:^2.0.1": version: 2.0.1 resolution: "mdast-util-mdxjs-esm@npm:2.0.1" dependencies: @@ -2587,23 +2612,24 @@ __metadata: languageName: node linkType: hard -"mdast-util-to-hast@npm:^12.1.0": - version: 12.3.0 - resolution: "mdast-util-to-hast@npm:12.3.0" +"mdast-util-to-hast@npm:^13.0.0": + version: 13.2.1 + resolution: "mdast-util-to-hast@npm:13.2.1" dependencies: - "@types/hast": "npm:^2.0.0" - "@types/mdast": "npm:^3.0.0" - mdast-util-definitions: "npm:^5.0.0" - micromark-util-sanitize-uri: "npm:^1.1.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + "@ungap/structured-clone": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" trim-lines: "npm:^3.0.0" - unist-util-generated: "npm:^2.0.0" - unist-util-position: "npm:^4.0.0" - unist-util-visit: "npm:^4.0.0" - checksum: 10c0/0753e45bfcce423f7a13979ac720a23ed8d6bafed174c387f43bbe8baf3838f3a043cd8006975b71e5c4068b7948f83f1348acea79801101af31eaec4e7a499a + unist-util-position: "npm:^5.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/3eeaf28a5e84e1e08e6d54a1a8a06c0fca88cb5d36f4cf8086f0177248d1ce6e4e751f4ad0da19a3dea1c6ea61bd80784acc3ae021e44ceeb21aa5413a375e43 languageName: node linkType: hard -"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0, mdast-util-to-markdown@npm:^1.5.0": +"mdast-util-to-markdown@npm:^1.5.0": version: 1.5.0 resolution: "mdast-util-to-markdown@npm:1.5.0" dependencies: @@ -2661,18 +2687,6 @@ __metadata: languageName: node linkType: hard -"memfs@npm:^4.17.0": - version: 4.17.2 - resolution: "memfs@npm:4.17.2" - dependencies: - "@jsonjoy.com/json-pack": "npm:^1.0.3" - "@jsonjoy.com/util": "npm:^1.3.0" - tree-dump: "npm:^1.0.1" - tslib: "npm:^2.0.0" - checksum: 10c0/9cce5886a10e590887cd63271ba6198f037e537a8ee84048cfe27f851adfc9b7fd3e5b49ac5d31fe8d9c753ffa57ac4d1f8eb4a27a3927047945bd420a4cc38a - languageName: node - linkType: hard - "merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" @@ -2680,7 +2694,7 @@ __metadata: languageName: node linkType: hard -"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": +"micromark-core-commonmark@npm:^1.0.1": version: 1.1.0 resolution: "micromark-core-commonmark@npm:1.1.0" dependencies: @@ -2728,172 +2742,172 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-autolink-literal@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-autolink-literal@npm:1.0.5" +"micromark-extension-gfm-autolink-literal@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0" dependencies: - micromark-util-character: "npm:^1.0.0" - micromark-util-sanitize-uri: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/4964a52605ac36d24501d427e2d173fa39b5e0402275cb45068eba4898f4cb9cc57f7007b21b7514f0ab5f7b371b1701a5156a10b6ac8e77a7f36e830cf481d4 + micromark-util-character: "npm:^2.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/84e6fbb84ea7c161dfa179665dc90d51116de4c28f3e958260c0423e5a745372b7dcbc87d3cde98213b532e6812f847eef5ae561c9397d7f7da1e59872ef3efe languageName: node linkType: hard -"micromark-extension-gfm-footnote@npm:^1.0.0": - version: 1.1.2 - resolution: "micromark-extension-gfm-footnote@npm:1.1.2" +"micromark-extension-gfm-footnote@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-footnote@npm:2.1.0" dependencies: - micromark-core-commonmark: "npm:^1.0.0" - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-normalize-identifier: "npm:^1.0.0" - micromark-util-sanitize-uri: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/b8090876cc3da5436c6253b0b40e39ceaa470c2429f699c19ee4163cef3102c4cd16c4ac2ec8caf916037fad310cfb52a9ef182c75d50fca7419ba08faad9b39 + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/d172e4218968b7371b9321af5cde8c77423f73b233b2b0fcf3ff6fd6f61d2e0d52c49123a9b7910612478bf1f0d5e88c75a3990dd68f70f3933fe812b9f77edc languageName: node linkType: hard -"micromark-extension-gfm-strikethrough@npm:^1.0.0": - version: 1.0.7 - resolution: "micromark-extension-gfm-strikethrough@npm:1.0.7" +"micromark-extension-gfm-strikethrough@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0" dependencies: - micromark-util-chunked: "npm:^1.0.0" - micromark-util-classify-character: "npm:^1.0.0" - micromark-util-resolve-all: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/b45fe93a7a412fc44bae7a183b92a988e17b49ed9d683bd80ee4dde96d462e1ca6b316dd64bda7759e4086d6d8686790a711e53c244f1f4d2b37e1cfe852884d + devlop: "npm:^1.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-classify-character: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/ef4f248b865bdda71303b494671b7487808a340b25552b11ca6814dff3fcfaab9be8d294643060bbdb50f79313e4a686ab18b99cbe4d3ee8a4170fcd134234fb languageName: node linkType: hard -"micromark-extension-gfm-table@npm:^1.0.0": - version: 1.0.7 - resolution: "micromark-extension-gfm-table@npm:1.0.7" +"micromark-extension-gfm-table@npm:^2.0.0": + version: 2.1.1 + resolution: "micromark-extension-gfm-table@npm:2.1.1" dependencies: - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/38b5af80ecab8206845a057338235bee6f47fb6cb904208be4b76e87906765821683e25bef85dfa485809f931eaf8cd55f16cd2f4d6e33b84f56edfaf1dfb129 + devlop: "npm:^1.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/04bc00e19b435fa0add62cd029d8b7eb6137522f77832186b1d5ef34544a9bd030c9cf85e92ddfcc5c31f6f0a58a43d4b96dba4fc21316037c734630ee12c912 languageName: node linkType: hard -"micromark-extension-gfm-tagfilter@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-extension-gfm-tagfilter@npm:1.0.2" +"micromark-extension-gfm-tagfilter@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" dependencies: - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/7e1bf278255cf2a8d2dda9de84bc238b39c53100e25ba8d7168220d5b00dc74869a6cb038fbf2e76b8ae89efc66906762311797a906d7d9cdd71e07bfe1ed505 + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/995558843fff137ae4e46aecb878d8a4691cdf23527dcf1e2f0157d66786be9f7bea0109c52a8ef70e68e3f930af811828ba912239438e31a9cfb9981f44d34d languageName: node linkType: hard -"micromark-extension-gfm-task-list-item@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-task-list-item@npm:1.0.5" +"micromark-extension-gfm-task-list-item@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0" dependencies: - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/2179742fa2cbb243cc06bd9e43fbb94cd98e4814c9d368ddf8b4b5afa0348023f335626ae955e89d679e2c2662a7f82c315117a3b060c87bdb4420fee5a219d1 + devlop: "npm:^1.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/78aa537d929e9309f076ba41e5edc99f78d6decd754b6734519ccbbfca8abd52e1c62df68d41a6ae64d2a3fc1646cea955893c79680b0b4385ced4c52296181f languageName: node linkType: hard -"micromark-extension-gfm@npm:^2.0.0": - version: 2.0.3 - resolution: "micromark-extension-gfm@npm:2.0.3" - dependencies: - micromark-extension-gfm-autolink-literal: "npm:^1.0.0" - micromark-extension-gfm-footnote: "npm:^1.0.0" - micromark-extension-gfm-strikethrough: "npm:^1.0.0" - micromark-extension-gfm-table: "npm:^1.0.0" - micromark-extension-gfm-tagfilter: "npm:^1.0.0" - micromark-extension-gfm-task-list-item: "npm:^1.0.0" - micromark-util-combine-extensions: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/53056376d14caf3fab2cc44881c1ad49d975776cc2267bca74abda2cb31f2a77ec0fb2bdb2dd97565f0d9943ad915ff192b89c1cee5d9d727569a5e38505799b +"micromark-extension-gfm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-gfm@npm:3.0.0" + dependencies: + micromark-extension-gfm-autolink-literal: "npm:^2.0.0" + micromark-extension-gfm-footnote: "npm:^2.0.0" + micromark-extension-gfm-strikethrough: "npm:^2.0.0" + micromark-extension-gfm-table: "npm:^2.0.0" + micromark-extension-gfm-tagfilter: "npm:^2.0.0" + micromark-extension-gfm-task-list-item: "npm:^2.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/970e28df6ebdd7c7249f52a0dda56e0566fbfa9ae56c8eeeb2445d77b6b89d44096880cd57a1c01e7821b1f4e31009109fbaca4e89731bff7b83b8519690e5d9 languageName: node linkType: hard -"micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.8 - resolution: "micromark-extension-mdx-expression@npm:1.0.8" +"micromark-extension-mdx-expression@npm:^3.0.0": + version: 3.0.1 + resolution: "micromark-extension-mdx-expression@npm:3.0.1" dependencies: "@types/estree": "npm:^1.0.0" - micromark-factory-mdx-expression: "npm:^1.0.0" - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-events-to-acorn: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/99e2997a54caafc4258979c0591b3fe8e31018079df833d559768092fec41e57a71225d423f4179cea4e8bc1af2f52f5c9ae640673619d8fe142ded875240da3 + devlop: "npm:^1.0.0" + micromark-factory-mdx-expression: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/4d8cc5353b083b06bd51c98389de9c198261a5b2b440b75e85000a18d10511f21ba77538d6dfde0e0589df9de3fba9a1d14c2448d30c92d6b461c26d86e397f4 languageName: node linkType: hard -"micromark-extension-mdx-jsx@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-mdx-jsx@npm:1.0.5" +"micromark-extension-mdx-jsx@npm:^3.0.0": + version: 3.0.2 + resolution: "micromark-extension-mdx-jsx@npm:3.0.2" dependencies: - "@types/acorn": "npm:^4.0.0" "@types/estree": "npm:^1.0.0" - estree-util-is-identifier-name: "npm:^2.0.0" - micromark-factory-mdx-expression: "npm:^1.0.0" - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - vfile-message: "npm:^3.0.0" - checksum: 10c0/1b4bfbe60b9cabfabfb870f70ded8da0caacbaa3be6bdf07f6db25cc5a14c6bc970c34c60e5c80da1e97766064a117feb8160b6d661d69e530a4cc7ec97305de + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + micromark-factory-mdx-expression: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/5693b2e51934ac29a6aab521eaa2151f891d1fe092550bbd4ce24e4dd7567c1421a54f5e585a57dfa1769a79570f6df57ddd7a98bf0889dd11d495847a266dd7 languageName: node linkType: hard -"micromark-extension-mdx-md@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-extension-mdx-md@npm:1.0.1" +"micromark-extension-mdx-md@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-mdx-md@npm:2.0.0" dependencies: - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/9ad70b3a5e842fd7ebd93c8c48a32fd3d05fe77be06a08ef32462ea53e97d8f297e2c1c4b30a6929dbd05125279fe98bb04e9cc0bb686c691bdcf7d36c6e51b0 + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/bae91c61273de0e5ba80a980c03470e6cd9d7924aa936f46fbda15d780704d9386e945b99eda200e087b96254fbb4271a9545d5ce02676cd6ae67886a8bf82df languageName: node linkType: hard -"micromark-extension-mdxjs-esm@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-mdxjs-esm@npm:1.0.5" +"micromark-extension-mdxjs-esm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs-esm@npm:3.0.0" dependencies: "@types/estree": "npm:^1.0.0" - micromark-core-commonmark: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-events-to-acorn: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - unist-util-position-from-estree: "npm:^1.1.0" - uvu: "npm:^0.5.0" - vfile-message: "npm:^3.0.0" - checksum: 10c0/612028bced78e882641a43c78fc4813a573b383dc0a7b90db75ed88b37bf5b5997dc7ead4a1011315b34f17bc76b7f4419de6ad9532a088102ab1eea0245d380 + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/13e3f726495a960650cdedcba39198ace5bdc953ccb12c14d71fc9ed9bb88e40cc3ba9231e973f6984da3b3573e7ddb23ce409f7c16f52a8d57b608bf46c748d languageName: node linkType: hard -"micromark-extension-mdxjs@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-extension-mdxjs@npm:1.0.1" +"micromark-extension-mdxjs@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs@npm:3.0.0" dependencies: acorn: "npm:^8.0.0" acorn-jsx: "npm:^5.0.0" - micromark-extension-mdx-expression: "npm:^1.0.0" - micromark-extension-mdx-jsx: "npm:^1.0.0" - micromark-extension-mdx-md: "npm:^1.0.0" - micromark-extension-mdxjs-esm: "npm:^1.0.0" - micromark-util-combine-extensions: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/3f123e4afea9674c96934c9ea6a057ec9e5584992c50c36c173a2e331d272b1f4e2a8552364a0e2cb50703d0218831fdae1a17b563f0009aac6a35350e6a7b77 + micromark-extension-mdx-expression: "npm:^3.0.0" + micromark-extension-mdx-jsx: "npm:^3.0.0" + micromark-extension-mdx-md: "npm:^2.0.0" + micromark-extension-mdxjs-esm: "npm:^3.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/fd84f036ddad0aabbc12e7f1b3e9dcfe31573bbc413c5ae903779ef0366d7a4c08193547e7ba75718c9f45654e45f52e575cfc2f23a5f89205a8a70d9a506aea languageName: node linkType: hard @@ -2943,19 +2957,20 @@ __metadata: languageName: node linkType: hard -"micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.9 - resolution: "micromark-factory-mdx-expression@npm:1.0.9" +"micromark-factory-mdx-expression@npm:^2.0.0": + version: 2.0.3 + resolution: "micromark-factory-mdx-expression@npm:2.0.3" dependencies: "@types/estree": "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-events-to-acorn: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - unist-util-position-from-estree: "npm:^1.0.0" - uvu: "npm:^0.5.0" - vfile-message: "npm:^3.0.0" - checksum: 10c0/b28bd8e072f37ca91446fe8d113e4ae64baaef013b0cde4aa224add0ee40963ce3584b9709f7662d30491f875ae7104b897d37efa26cdaecf25082ed5bac7b8c + devlop: "npm:^1.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/a6004ef6272dd01a5d718f2affd7bfb5e08f0849340f5fd96ac823fbc5e9d3b3343acedda50805873ccda5e3b8af4d5fbb302abc874544044ac90c217345cf97 languageName: node linkType: hard @@ -3163,19 +3178,18 @@ __metadata: languageName: node linkType: hard -"micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.3 - resolution: "micromark-util-events-to-acorn@npm:1.2.3" +"micromark-util-events-to-acorn@npm:^2.0.0": + version: 2.0.3 + resolution: "micromark-util-events-to-acorn@npm:2.0.3" dependencies: - "@types/acorn": "npm:^4.0.0" "@types/estree": "npm:^1.0.0" - "@types/unist": "npm:^2.0.0" - estree-util-visit: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - vfile-message: "npm:^3.0.0" - checksum: 10c0/cd3af7365806a0b22efb83cb7726cb835725c0bc22e04f7ea83f2f38a09e7132413eff6ab6d53652b969a7ec30e442731c3abbbe8a74dc2081c51fd10223c269 + "@types/unist": "npm:^3.0.0" + devlop: "npm:^1.0.0" + estree-util-visit: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/a4e0716e943ffdd16a918edf51d4f8291ec2692f5c4d04693dbef3358716fba891f288197afd102c14f4d98dac09d52351046ab7aad1d50b74677bdd5fa683c0 languageName: node linkType: hard @@ -3229,7 +3243,7 @@ __metadata: languageName: node linkType: hard -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": +"micromark-util-sanitize-uri@npm:^1.0.0": version: 1.2.0 resolution: "micromark-util-sanitize-uri@npm:1.2.0" dependencies: @@ -3471,15 +3485,6 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.11": - version: 3.3.11 - resolution: "nanoid@npm:3.3.11" - bin: - nanoid: bin/nanoid.cjs - checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b - languageName: node - linkType: hard - "negotiator@npm:^1.0.0": version: 1.0.0 resolution: "negotiator@npm:1.0.0" @@ -3532,10 +3537,21 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 +"oniguruma-parser@npm:^0.12.1": + version: 0.12.1 + resolution: "oniguruma-parser@npm:0.12.1" + checksum: 10c0/b843ea54cda833efb19f856314afcbd43e903ece3de489ab78c527ddec84859208052557daa9fad4bdba89ebdd15b0cc250de86b3daf8c7cbe37bac5a6a185d3 + languageName: node + linkType: hard + +"oniguruma-to-es@npm:^4.3.4": + version: 4.3.4 + resolution: "oniguruma-to-es@npm:4.3.4" + dependencies: + oniguruma-parser: "npm:^0.12.1" + regex: "npm:^6.0.1" + regex-recursion: "npm:^6.0.2" + checksum: 10c0/fb58459f50db71c2c4785205636186bfbb125b094c4275512a8f41f123ed3fbf61f37c455f4360ef14a56c693981aecd7da3ae2c05614a222e872c4643b463fc languageName: node linkType: hard @@ -3553,20 +3569,6 @@ __metadata: languageName: node linkType: hard -"parse-entities@npm:^2.0.0": - version: 2.0.0 - resolution: "parse-entities@npm:2.0.0" - dependencies: - character-entities: "npm:^1.0.0" - character-entities-legacy: "npm:^1.0.0" - character-reference-invalid: "npm:^1.0.0" - is-alphanumerical: "npm:^1.0.0" - is-decimal: "npm:^1.0.0" - is-hexadecimal: "npm:^1.0.0" - checksum: 10c0/f85a22c0ea406ff26b53fdc28641f01cc36fa49eb2e3135f02693286c89ef0bcefc2262d99b3688e20aac2a14fd10b75c518583e875c1b9fe3d1f937795e0854 - languageName: node - linkType: hard - "parse-entities@npm:^4.0.0, parse-entities@npm:^4.0.1": version: 4.0.2 resolution: "parse-entities@npm:4.0.2" @@ -3632,17 +3634,6 @@ __metadata: languageName: node linkType: hard -"periscopic@npm:^3.0.0": - version: 3.1.0 - resolution: "periscopic@npm:3.1.0" - dependencies: - "@types/estree": "npm:^1.0.0" - estree-walker: "npm:^3.0.0" - is-reference: "npm:^3.0.0" - checksum: 10c0/fb5ce7cd810c49254cdf1cd3892811e6dd1a1dfbdf5f10a0a33fb7141baac36443c4cad4f0e2b30abd4eac613f6ab845c2bc1b7ce66ae9694c7321e6ada5bd96 - languageName: node - linkType: hard - "picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" @@ -3664,28 +3655,10 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.5.6": - version: 8.5.6 - resolution: "postcss@npm:8.5.6" - dependencies: - nanoid: "npm:^3.3.11" - picocolors: "npm:^1.1.1" - source-map-js: "npm:^1.2.1" - checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 - languageName: node - linkType: hard - -"prismjs@npm:^1.27.0": - version: 1.30.0 - resolution: "prismjs@npm:1.30.0" - checksum: 10c0/f56205bfd58ef71ccfcbcb691fd0eb84adc96c6ff21b0b69fc6fdcf02be42d6ef972ba4aed60466310de3d67733f6a746f89f2fb79c00bf217406d465b3e8f23 - languageName: node - linkType: hard - -"prismjs@npm:~1.27.0": - version: 1.27.0 - resolution: "prismjs@npm:1.27.0" - checksum: 10c0/841cbf53e837a42df9155c5ce1be52c4a0a8967ac916b52a27d066181a3578186c634e52d06d0547fb62b65c486b99b95f826dd54966619f9721b884f486b498 +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 languageName: node linkType: hard @@ -3706,33 +3679,6 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.7.2": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.13.1" - checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 - languageName: node - linkType: hard - -"property-information@npm:^5.0.0": - version: 5.6.0 - resolution: "property-information@npm:5.6.0" - dependencies: - xtend: "npm:^4.0.0" - checksum: 10c0/d54b77c31dc13bb6819559080b2c67d37d94be7dc271f404f139a16a57aa96fcc0b3ad806d4a5baef9e031744853e4afe3df2e37275aacb1f78079bbb652c5af - languageName: node - linkType: hard - -"property-information@npm:^6.0.0": - version: 6.5.0 - resolution: "property-information@npm:6.5.0" - checksum: 10c0/981e0f9cc2e5acdb414a6fd48a99dd0fd3a4079e7a91ab41cf97a8534cf43e0e0bc1ffada6602a1b3d047a33db8b5fc2ef46d863507eda712d5ceedac443f0ef - languageName: node - linkType: hard - "property-information@npm:^7.0.0": version: 7.1.0 resolution: "property-information@npm:7.1.0" @@ -3747,135 +3693,158 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^18.3.1": - version: 18.3.1 - resolution: "react-dom@npm:18.3.1" +"react-dom@npm:^19.2.0, react-dom@npm:^19.2.3": + version: 19.2.3 + resolution: "react-dom@npm:19.2.3" + dependencies: + scheduler: "npm:^0.27.0" + peerDependencies: + react: ^19.2.3 + checksum: 10c0/dc43f7ede06f46f3acc16ee83107c925530de9b91d1d0b3824583814746ff4c498ea64fd65cd83aba363205268adff52e2827c582634ae7b15069deaeabc4892 + languageName: node + linkType: hard + +"react-lazy-with-preload@npm:^2.2.1": + version: 2.2.1 + resolution: "react-lazy-with-preload@npm:2.2.1" + checksum: 10c0/57c36baedc24a2c8fa148681dc7c5123ac183542964063b4a0433856a06d4edead27deb893012a43f75905af51a479b4409e688b97be3ef70cffff926954f6d2 + languageName: node + linkType: hard + +"react-reconciler@npm:0.33.0": + version: 0.33.0 + resolution: "react-reconciler@npm:0.33.0" dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.2" + scheduler: "npm:^0.27.0" peerDependencies: - react: ^18.3.1 - checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 + react: ^19.2.0 + checksum: 10c0/3f7b27ea8d0ff4c8bf0e402a285e1af9b7d0e6f4c1a70a28f4384938bc1130bc82a90a31df0b79ef5e380e2e55e2598bd90b4dbf802b1203d735ba0355817d3a languageName: node linkType: hard -"react-fast-compare@npm:^3.2.0": - version: 3.2.2 - resolution: "react-fast-compare@npm:3.2.2" - checksum: 10c0/0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 +"react-refresh@npm:^0.18.0": + version: 0.18.0 + resolution: "react-refresh@npm:0.18.0" + checksum: 10c0/34a262f7fd803433a534f50deb27a148112a81adcae440c7d1cbae7ef14d21ea8f2b3d783e858cb7698968183b77755a38b4d4b5b1d79b4f4689c2f6d358fff2 languageName: node linkType: hard -"react-helmet-async@npm:^1.3.0": - version: 1.3.0 - resolution: "react-helmet-async@npm:1.3.0" +"react-router-dom@npm:^7.11.0": + version: 7.12.0 + resolution: "react-router-dom@npm:7.12.0" dependencies: - "@babel/runtime": "npm:^7.12.5" - invariant: "npm:^2.2.4" - prop-types: "npm:^15.7.2" - react-fast-compare: "npm:^3.2.0" - shallowequal: "npm:^1.1.0" + react-router: "npm:7.12.0" peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/8f3e6d26beff61d2ed18f7b41561df3e4d83a7582914c7196aa65158c7f3cce939276547d7a0b8987952d9d44131406df74efba02d1f8fa8a3940b49e6ced70b + react: ">=18" + react-dom: ">=18" + checksum: 10c0/48cb6e5d47e9aa91dd3982555bb84512d7048a7d1fc676a182c444d470f00b3cf9bef311c1c0f8fbc711c95cc5b3dde39b26cf8ec7feb3ebaf21a00e4cef6816 languageName: node linkType: hard -"react-is@npm:^16.13.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 +"react-router@npm:7.12.0": + version: 7.12.0 + resolution: "react-router@npm:7.12.0" + dependencies: + cookie: "npm:^1.0.1" + set-cookie-parser: "npm:^2.6.0" + peerDependencies: + react: ">=18" + react-dom: ">=18" + peerDependenciesMeta: + react-dom: + optional: true + checksum: 10c0/abde366f716cb3961a5a390c278375c0591bace5773e1b4420001f0a913b4dd53d490e7dea866acebcac2c0fa07378aa83702769d449449027406ed517a8ea00 languageName: node linkType: hard -"react-lazy-with-preload@npm:^2.2.1": - version: 2.2.1 - resolution: "react-lazy-with-preload@npm:2.2.1" - checksum: 10c0/57c36baedc24a2c8fa148681dc7c5123ac183542964063b4a0433856a06d4edead27deb893012a43f75905af51a479b4409e688b97be3ef70cffff926954f6d2 +"react@npm:^19.2.0, react@npm:^19.2.3": + version: 19.2.3 + resolution: "react@npm:19.2.3" + checksum: 10c0/094220b3ba3a76c1b668f972ace1dd15509b157aead1b40391d1c8e657e720c201d9719537375eff08f5e0514748c0319063392a6f000e31303aafc4471f1436 languageName: node linkType: hard -"react-refresh@npm:^0.17.0": - version: 0.17.0 - resolution: "react-refresh@npm:0.17.0" - checksum: 10c0/002cba940384c9930008c0bce26cac97a9d5682bc623112c2268ba0c155127d9c178a9a5cc2212d560088d60dfd503edd808669a25f9b377f316a32361d0b23c +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b languageName: node linkType: hard -"react-router-dom@npm:^6.29.0": - version: 6.30.1 - resolution: "react-router-dom@npm:6.30.1" +"recma-build-jsx@npm:^1.0.0": + version: 1.0.0 + resolution: "recma-build-jsx@npm:1.0.0" dependencies: - "@remix-run/router": "npm:1.23.0" - react-router: "npm:6.30.1" - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 10c0/e9e1297236b0faa864424ad7d51c392fc6e118595d4dad4cd542fd217c479a81601a81c6266d5801f04f9e154de02d3b094fc22ccb544e755c2eb448fab4ec6b + "@types/estree": "npm:^1.0.0" + estree-util-build-jsx: "npm:^3.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/ca30f5163887b44c74682355da2625f7b49f33267699d22247913e513e043650cbdd6a7497cf13c60f09ad9e7bc2bd35bd20853672773c19188569814b56bb04 languageName: node linkType: hard -"react-router@npm:6.30.1": - version: 6.30.1 - resolution: "react-router@npm:6.30.1" +"recma-jsx@npm:^1.0.0": + version: 1.0.1 + resolution: "recma-jsx@npm:1.0.1" dependencies: - "@remix-run/router": "npm:1.23.0" + acorn-jsx: "npm:^5.0.0" + estree-util-to-js: "npm:^2.0.0" + recma-parse: "npm:^1.0.0" + recma-stringify: "npm:^1.0.0" + unified: "npm:^11.0.0" peerDependencies: - react: ">=16.8" - checksum: 10c0/0414326f2d8e0c107fb4603cf4066dacba6a1f6f025c6e273f003e177b2f18888aca3de06d9b5522908f0e41de93be1754c37e82aa97b3a269c4742c08e82539 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/9921b1270581ff133b94678868e665ba0fb6285ee60a6936106bac4899196c2ffb02dde894d9bc088fbf3deacb3e2426a3452e72066bf1203cbefebd7809d93f languageName: node linkType: hard -"react-syntax-highlighter@npm:^15.6.1": - version: 15.6.1 - resolution: "react-syntax-highlighter@npm:15.6.1" +"recma-parse@npm:^1.0.0": + version: 1.0.0 + resolution: "recma-parse@npm:1.0.0" dependencies: - "@babel/runtime": "npm:^7.3.1" - highlight.js: "npm:^10.4.1" - highlightjs-vue: "npm:^1.0.0" - lowlight: "npm:^1.17.0" - prismjs: "npm:^1.27.0" - refractor: "npm:^3.6.0" - peerDependencies: - react: ">= 0.14.0" - checksum: 10c0/4a4cf4695c45d7a6b25078970fb79ae5a85edeba5be0a2508766ee18e8aee1c0c4cdd97bf54f5055e4af671fe7e5e71348e81cafe09a0eb07a763ae876b7f073 + "@types/estree": "npm:^1.0.0" + esast-util-from-js: "npm:^2.0.0" + unified: "npm:^11.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/37c0990859a562d082e02d475ca5f4c8ef0840d285270f6699fe888cbb06260f97eb098585eda4aae416182c207fd19cf05e4f0b2dcf55cbf81dde4406d95545 languageName: node linkType: hard -"react@npm:^18.3.1": - version: 18.3.1 - resolution: "react@npm:18.3.1" +"recma-stringify@npm:^1.0.0": + version: 1.0.0 + resolution: "recma-stringify@npm:1.0.0" dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 + "@types/estree": "npm:^1.0.0" + estree-util-to-js: "npm:^2.0.0" + unified: "npm:^11.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/c2ed4c0e8cf8a09aedcd47c5d016d47f6e1ff6c2d4b220e2abaf1b77713bf404756af2ea3ea7999aec5862e8825aff035edceb370c7fd8603a7e9da03bd6987e languageName: node linkType: hard -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" +"regex-recursion@npm:^6.0.2": + version: 6.0.2 + resolution: "regex-recursion@npm:6.0.2" dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + regex-utilities: "npm:^2.3.0" + checksum: 10c0/68e8b6889680e904b75d7f26edaf70a1a4dc1087406bff53face4c2929d918fd77c72223843fe816ac8ed9964f96b4160650e8d5909e26a998c6e9de324dadb1 languageName: node linkType: hard -"reduce-configs@npm:^1.1.0": - version: 1.1.0 - resolution: "reduce-configs@npm:1.1.0" - checksum: 10c0/23c7a7c5f75f70f5b8afd23a042e8ce58a953acab4c581d91d4f6efaaf8c43e4e7ab09478601b42f624e92ebf9c7e433d06005d90599dc069833942813852e10 +"regex-utilities@npm:^2.3.0": + version: 2.3.0 + resolution: "regex-utilities@npm:2.3.0" + checksum: 10c0/78c550a80a0af75223244fff006743922591bd8f61d91fef7c86b9b56cf9bbf8ee5d7adb6d8991b5e304c57c90103fc4818cf1e357b11c6c669b782839bd7893 languageName: node linkType: hard -"refractor@npm:^3.6.0": - version: 3.6.0 - resolution: "refractor@npm:3.6.0" +"regex@npm:^6.0.1": + version: 6.1.0 + resolution: "regex@npm:6.1.0" dependencies: - hastscript: "npm:^6.0.0" - parse-entities: "npm:^2.0.0" - prismjs: "npm:~1.27.0" - checksum: 10c0/63ab62393c8c2fd7108c2ea1eff721c0ad2a1a6eee60fdd1b47f4bb25cf298667dc97d041405b3e718b0817da12b37a86ed07ebee5bd2ca6405611f1bae456db + regex-utilities: "npm:^2.3.0" + checksum: 10c0/6e0ee2a1c17d5a66dc1120dfc51899dedf6677857e83a0df4d5a822ebb8645a54a079772efc1ade382b67aad35e4e22b5bd2d33c05ed28b0e000f8f57eb0aec1 languageName: node linkType: hard @@ -3893,15 +3862,39 @@ __metadata: languageName: node linkType: hard -"remark-gfm@npm:3.0.1": - version: 3.0.1 - resolution: "remark-gfm@npm:3.0.1" +"rehype-raw@npm:^7.0.0": + version: 7.0.0 + resolution: "rehype-raw@npm:7.0.0" dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-gfm: "npm:^2.0.0" - micromark-extension-gfm: "npm:^2.0.0" - unified: "npm:^10.0.0" - checksum: 10c0/53c4e82204f82f81949a170efdeb49d3c45137b7bca06a7ff857a483aac1a44b55ef0de8fb1bbe4f1292f2a378058e2e42e644f2c61f3e0cdc3e56afa4ec2a2c + "@types/hast": "npm:^3.0.0" + hast-util-raw: "npm:^9.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/1435b4b6640a5bc3abe3b2133885c4dbff5ef2190ef9cfe09d6a63f74dd7d7ffd0cede70603278560ccf1acbfb9da9faae4b68065a28bc5aa88ad18e40f32d52 + languageName: node + linkType: hard + +"rehype-recma@npm:^1.0.0": + version: 1.0.0 + resolution: "rehype-recma@npm:1.0.0" + dependencies: + "@types/estree": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + hast-util-to-estree: "npm:^3.0.0" + checksum: 10c0/be60d7433a7f788a14f41da3e93ba9d9272c908ddef47757026cc4bbcc912f6301d56810349adf876d294a8d048626a0dbf6988aaa574afbfc29eac1ddc1eb74 + languageName: node + linkType: hard + +"remark-gfm@npm:^4.0.1": + version: 4.0.1 + resolution: "remark-gfm@npm:4.0.1" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-gfm: "npm:^3.0.0" + micromark-extension-gfm: "npm:^3.0.0" + remark-parse: "npm:^11.0.0" + remark-stringify: "npm:^11.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/427ecc6af3e76222662061a5f670a3e4e33ec5fffe2cabf04034da6a3f9a1bda1fc023e838a636385ba314e66e2bebbf017ca61ebea357eb0f5200fe0625a4b7 languageName: node linkType: hard @@ -3931,59 +3924,49 @@ __metadata: languageName: node linkType: hard -"remark-mdx@npm:^2.0.0": - version: 2.3.0 - resolution: "remark-mdx@npm:2.3.0" - dependencies: - mdast-util-mdx: "npm:^2.0.0" - micromark-extension-mdxjs: "npm:^1.0.0" - checksum: 10c0/2688bbf03094a9cd17cc86afb6cf0270e86ffc696a2fe25ccb1befb84eb0864d281388dc560b585e05e20f94a994c9fa88492430d2ba703a2fef6918bca4c36b - languageName: node - linkType: hard - -"remark-parse@npm:^10.0.0": - version: 10.0.2 - resolution: "remark-parse@npm:10.0.2" +"remark-mdx@npm:^3.0.0, remark-mdx@npm:^3.1.1": + version: 3.1.1 + resolution: "remark-mdx@npm:3.1.1" dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-from-markdown: "npm:^1.0.0" - unified: "npm:^10.0.0" - checksum: 10c0/30cb8f2790380b1c7370a1c66cda41f33a7dc196b9e440a00e2675037bca55aea868165a8204e0cdbacc27ef4a3bdb7d45879826bd6efa07d9fdf328cb67a332 + mdast-util-mdx: "npm:^3.0.0" + micromark-extension-mdxjs: "npm:^3.0.0" + checksum: 10c0/3e5585d4c2448d8ac7548b1d148f04b89251ff47fbfc80be1428cecec2fc2530abe30a5da53bb031283f8a78933259df6120c1cd4cc7cc1d43978d508798ba88 languageName: node linkType: hard -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" +"remark-parse@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-parse@npm:11.0.0" dependencies: - "@types/hast": "npm:^2.0.0" - "@types/mdast": "npm:^3.0.0" - mdast-util-to-hast: "npm:^12.1.0" - unified: "npm:^10.0.0" - checksum: 10c0/803e658c9b51a9b53ee2ada42ff82e8e570444bb97c873e0d602c2d8dcb69a774fd22bd6f26643dfd5ab4c181059ea6c9fb9a99a2d7f9665f3f11bef1a1489bd + "@types/mdast": "npm:^4.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38 languageName: node linkType: hard -"remark-stringify@npm:^10.0.0": - version: 10.0.3 - resolution: "remark-stringify@npm:10.0.3" +"remark-rehype@npm:^11.0.0": + version: 11.1.2 + resolution: "remark-rehype@npm:11.1.2" dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-to-markdown: "npm:^1.0.0" - unified: "npm:^10.0.0" - checksum: 10c0/682f26c66ce72e97a00bff75774b68f8008184dc1e4407039e186de896b5cd5d336aa65842bf131f4826a7415acdcd01d14ba59ff41b421a250c23fb187cda85 + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + mdast-util-to-hast: "npm:^13.0.0" + unified: "npm:^11.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/f9eccacfb596d9605581dc05bfad28635d6ded5dd0a18e88af5fd4df0d3fcf9612e1501d4513bc2164d833cfe9636dab20400080b09e53f155c6e1442a1231fb languageName: node linkType: hard -"remark@npm:^14.0.3": - version: 14.0.3 - resolution: "remark@npm:14.0.3" +"remark-stringify@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-stringify@npm:11.0.0" dependencies: - "@types/mdast": "npm:^3.0.0" - remark-parse: "npm:^10.0.0" - remark-stringify: "npm:^10.0.0" - unified: "npm:^10.0.0" - checksum: 10c0/d4dbef29abdb62b01ae632d787bf0038af819df3e4308e037754ece8cb9c4d8ea52e8629174a47b5c46a7448cd22feba5dfea09b3ffdaa8c745b4c9bdd01b41d + "@types/mdast": "npm:^4.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f languageName: node linkType: hard @@ -4013,15 +3996,6 @@ __metadata: languageName: node linkType: hard -"rspack-plugin-virtual-module@npm:0.1.13": - version: 0.1.13 - resolution: "rspack-plugin-virtual-module@npm:0.1.13" - dependencies: - fs-extra: "npm:^11.1.1" - checksum: 10c0/2d5633ed167332b38d401aecccfc9e142158e85599fde4ddf12058d5be53a06f80e05c1270c3ccc60e183c4b718779f2cbbd0d32eec4bd8bfb21c9462749df3d - languageName: node - linkType: hard - "rspress-plugin-devkit@npm:^0.3.0": version: 0.3.0 resolution: "rspress-plugin-devkit@npm:0.3.0" @@ -4052,13 +4026,6 @@ __metadata: languageName: node linkType: hard -"rspress-plugin-font-open-sans@npm:^1.0.0": - version: 1.0.0 - resolution: "rspress-plugin-font-open-sans@npm:1.0.0" - checksum: 10c0/1ca338f348e01c1e568c28c85d7eace10d6f90ee25cd042e6e8ce5a93ec3ffdeff94000ccc0622d9e0d1d92222c3ff4714d9e491506343cdd89a969cb0d1899e - languageName: node - linkType: hard - "rspress-plugin-vercel-analytics@npm:^0.3.0": version: 0.3.0 resolution: "rspress-plugin-vercel-analytics@npm:0.3.0" @@ -4072,22 +4039,6 @@ __metadata: languageName: node linkType: hard -"rspress@npm:1.44.0": - version: 1.44.0 - resolution: "rspress@npm:1.44.0" - dependencies: - "@rsbuild/core": "npm:~1.3.18" - "@rspress/core": "npm:1.44.0" - "@rspress/shared": "npm:1.44.0" - cac: "npm:^6.7.14" - chokidar: "npm:^3.6.0" - picocolors: "npm:^1.1.1" - bin: - rspress: bin/rspress.js - checksum: 10c0/0bae62f212c3c3c9568650d4b41e43b2ff930518486f735d1f9dc47271e53aaa5ac5f68a279c3355e6cc22acf3c2a219d3dd965b80a489a7ad0e1aaa6cb1f6a1 - languageName: node - linkType: hard - "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -4097,15 +4048,6 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.4.0": - version: 7.8.2 - resolution: "rxjs@npm:7.8.2" - dependencies: - tslib: "npm:^2.1.0" - checksum: 10c0/1fcd33d2066ada98ba8f21fcbbcaee9f0b271de1d38dc7f4e256bfbc6ffcdde68c8bfb69093de7eeb46f24b1fb820620bf0223706cff26b4ab99a7ff7b2e2c45 - languageName: node - linkType: hard - "sade@npm:^1.7.3": version: 1.8.1 resolution: "sade@npm:1.8.1" @@ -4122,191 +4064,19 @@ __metadata: languageName: node linkType: hard -"sass-embedded-android-arm64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-android-arm64@npm:1.89.2" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"sass-embedded-android-arm@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-android-arm@npm:1.89.2" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"sass-embedded-android-riscv64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-android-riscv64@npm:1.89.2" - conditions: os=android & cpu=riscv64 - languageName: node - linkType: hard - -"sass-embedded-android-x64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-android-x64@npm:1.89.2" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"sass-embedded-darwin-arm64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-darwin-arm64@npm:1.89.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"sass-embedded-darwin-x64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-darwin-x64@npm:1.89.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"sass-embedded-linux-arm64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-arm64@npm:1.89.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"sass-embedded-linux-arm@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-arm@npm:1.89.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"sass-embedded-linux-musl-arm64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-musl-arm64@npm:1.89.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"sass-embedded-linux-musl-arm@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-musl-arm@npm:1.89.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"sass-embedded-linux-musl-riscv64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-musl-riscv64@npm:1.89.2" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"sass-embedded-linux-musl-x64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-musl-x64@npm:1.89.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"sass-embedded-linux-riscv64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-riscv64@npm:1.89.2" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"sass-embedded-linux-x64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-linux-x64@npm:1.89.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"sass-embedded-win32-arm64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-win32-arm64@npm:1.89.2" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"sass-embedded-win32-x64@npm:1.89.2": - version: 1.89.2 - resolution: "sass-embedded-win32-x64@npm:1.89.2" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"sass-embedded@npm:^1.89.2": - version: 1.89.2 - resolution: "sass-embedded@npm:1.89.2" - dependencies: - "@bufbuild/protobuf": "npm:^2.5.0" - buffer-builder: "npm:^0.2.0" - colorjs.io: "npm:^0.5.0" - immutable: "npm:^5.0.2" - rxjs: "npm:^7.4.0" - sass-embedded-android-arm: "npm:1.89.2" - sass-embedded-android-arm64: "npm:1.89.2" - sass-embedded-android-riscv64: "npm:1.89.2" - sass-embedded-android-x64: "npm:1.89.2" - sass-embedded-darwin-arm64: "npm:1.89.2" - sass-embedded-darwin-x64: "npm:1.89.2" - sass-embedded-linux-arm: "npm:1.89.2" - sass-embedded-linux-arm64: "npm:1.89.2" - sass-embedded-linux-musl-arm: "npm:1.89.2" - sass-embedded-linux-musl-arm64: "npm:1.89.2" - sass-embedded-linux-musl-riscv64: "npm:1.89.2" - sass-embedded-linux-musl-x64: "npm:1.89.2" - sass-embedded-linux-riscv64: "npm:1.89.2" - sass-embedded-linux-x64: "npm:1.89.2" - sass-embedded-win32-arm64: "npm:1.89.2" - sass-embedded-win32-x64: "npm:1.89.2" - supports-color: "npm:^8.1.1" - sync-child-process: "npm:^1.0.2" - varint: "npm:^6.0.0" - dependenciesMeta: - sass-embedded-android-arm: - optional: true - sass-embedded-android-arm64: - optional: true - sass-embedded-android-riscv64: - optional: true - sass-embedded-android-x64: - optional: true - sass-embedded-darwin-arm64: - optional: true - sass-embedded-darwin-x64: - optional: true - sass-embedded-linux-arm: - optional: true - sass-embedded-linux-arm64: - optional: true - sass-embedded-linux-musl-arm: - optional: true - sass-embedded-linux-musl-arm64: - optional: true - sass-embedded-linux-musl-riscv64: - optional: true - sass-embedded-linux-musl-x64: - optional: true - sass-embedded-linux-riscv64: - optional: true - sass-embedded-linux-x64: - optional: true - sass-embedded-win32-arm64: - optional: true - sass-embedded-win32-x64: - optional: true - bin: - sass: dist/bin/sass.js - checksum: 10c0/01cbfc9f88f1f60e1e049160204a7e0d84e7c1222346aec4cd94d52fb11f09e7c351a21e33d18dbe712259b210aaf0e1c9215e46d256700d1f42ef1c1a6196d1 +"scheduler@npm:^0.27.0": + version: 0.27.0 + resolution: "scheduler@npm:0.27.0" + checksum: 10c0/4f03048cb05a3c8fddc45813052251eca00688f413a3cee236d984a161da28db28ba71bd11e7a3dd02f7af84ab28d39fb311431d3b3772fed557945beb00c452 languageName: node linkType: hard -"scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" +"scroll-into-view-if-needed@npm:^3.1.0": + version: 3.1.0 + resolution: "scroll-into-view-if-needed@npm:3.1.0" dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 + compute-scroll-into-view: "npm:^3.0.2" + checksum: 10c0/1f46b090e1e04fcfdef1e384f6d7e615f9f84d4176faf4dbba7347cc0a6e491e5d578eaf4dbe9618dd3d8d38efafde58535b3e00f2a21ce4178c14be364850ff languageName: node linkType: hard @@ -4345,10 +4115,10 @@ __metadata: languageName: node linkType: hard -"shallowequal@npm:^1.1.0": - version: 1.1.0 - resolution: "shallowequal@npm:1.1.0" - checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c +"set-cookie-parser@npm:^2.6.0": + version: 2.7.2 + resolution: "set-cookie-parser@npm:2.7.2" + checksum: 10c0/4381a9eb7ee951dfe393fe7aacf76b9a3b4e93a684d2162ab35594fa4053cc82a4d7d7582bf397718012c9adcf839b8cd8f57c6c42901ea9effe33c752da4a45 languageName: node linkType: hard @@ -4368,6 +4138,22 @@ __metadata: languageName: node linkType: hard +"shiki@npm:3.21.0, shiki@npm:^3.20.0": + version: 3.21.0 + resolution: "shiki@npm:3.21.0" + dependencies: + "@shikijs/core": "npm:3.21.0" + "@shikijs/engine-javascript": "npm:3.21.0" + "@shikijs/engine-oniguruma": "npm:3.21.0" + "@shikijs/langs": "npm:3.21.0" + "@shikijs/themes": "npm:3.21.0" + "@shikijs/types": "npm:3.21.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + "@types/hast": "npm:^3.0.4" + checksum: 10c0/4e24ffe21c5dda060045e9c054b5c5656f14cf8174c8b7ca90fe11ca9ed5a5303d2049349adf695a4c42cf808bc8c3c52017d475fd960685958cb33628f0bb96 + languageName: node + linkType: hard + "signal-exit@npm:^4.0.1": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" @@ -4403,13 +4189,6 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.2.1": - version: 1.2.1 - resolution: "source-map-js@npm:1.2.1" - checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf - languageName: node - linkType: hard - "source-map@npm:^0.7.0": version: 0.7.4 resolution: "source-map@npm:0.7.4" @@ -4417,13 +4196,6 @@ __metadata: languageName: node linkType: hard -"space-separated-tokens@npm:^1.0.0": - version: 1.1.5 - resolution: "space-separated-tokens@npm:1.1.5" - checksum: 10c0/3ee0a6905f89e1ffdfe474124b1ade9fe97276a377a0b01350bc079b6ec566eb5b219e26064cc5b7f3899c05bde51ffbc9154290b96eaf82916a1e2c2c13ead9 - languageName: node - linkType: hard - "space-separated-tokens@npm:^2.0.0": version: 2.0.2 resolution: "space-separated-tokens@npm:2.0.2" @@ -4518,21 +4290,21 @@ __metadata: languageName: node linkType: hard -"style-to-object@npm:^0.4.1": - version: 0.4.4 - resolution: "style-to-object@npm:0.4.4" +"style-to-js@npm:^1.0.0": + version: 1.1.21 + resolution: "style-to-js@npm:1.1.21" dependencies: - inline-style-parser: "npm:0.1.1" - checksum: 10c0/3a733080da66952881175b17d65f92985cf94c1ca358a92cf21b114b1260d49b94a404ed79476047fb95698d64c7e366ca7443f0225939e2fb34c38bbc9c7639 + style-to-object: "npm:1.0.14" + checksum: 10c0/94231aa80f58f442c3a5ae01a21d10701e5d62f96b4b3e52eab3499077ee52df203cc0df4a1a870707f5e99470859136ea8657b782a5f4ca7934e0ffe662a588 languageName: node linkType: hard -"supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" +"style-to-object@npm:1.0.14": + version: 1.0.14 + resolution: "style-to-object@npm:1.0.14" dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + inline-style-parser: "npm:0.2.7" + checksum: 10c0/854d9e9b77afc336e6d7b09348e7939f2617b34eb0895824b066d8cd1790284cb6d8b2ba36be88025b2595d715dba14b299ae76e4628a366541106f639e13679 languageName: node linkType: hard @@ -4543,29 +4315,6 @@ __metadata: languageName: node linkType: hard -"sync-child-process@npm:^1.0.2": - version: 1.0.2 - resolution: "sync-child-process@npm:1.0.2" - dependencies: - sync-message-port: "npm:^1.0.0" - checksum: 10c0/f73c87251346fba28da8ac5bc8ed4c9474504a5250ab4bd44582beae8e25c230e0a5b7b16076488fee1aed39a1865de5ed4cec19c6fa4efdbb1081c514615170 - languageName: node - linkType: hard - -"sync-message-port@npm:^1.0.0": - version: 1.1.3 - resolution: "sync-message-port@npm:1.1.3" - checksum: 10c0/d259b08ab6da284135ba45bc13724268688b469371259f5978b2905e2c79342032b9240093b2483e83cfeccfd3a5e8300978e67090385f9b6b38941fcce1aec4 - languageName: node - linkType: hard - -"tapable@npm:^2.2.0": - version: 2.2.2 - resolution: "tapable@npm:2.2.2" - checksum: 10c0/8ad130aa705cab6486ad89e42233569a1fb1ff21af115f59cebe9f2b45e9e7995efceaa9cc5062510cdb4ec673b527924b2ab812e3579c55ad659ae92117011e - languageName: node - linkType: hard - "tar@npm:^7.4.3": version: 7.4.3 resolution: "tar@npm:7.4.3" @@ -4580,16 +4329,7 @@ __metadata: languageName: node linkType: hard -"thingies@npm:^1.20.0": - version: 1.21.0 - resolution: "thingies@npm:1.21.0" - peerDependencies: - tslib: ^2 - checksum: 10c0/7570ee855aecb73185a672ecf3eb1c287a6512bf5476449388433b2d4debcf78100bc8bfd439b0edd38d2bc3bfb8341de5ce85b8557dec66d0f27b962c9a8bc1 - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.10, tinyglobby@npm:^0.2.12": +"tinyglobby@npm:^0.2.12": version: 0.2.14 resolution: "tinyglobby@npm:0.2.14" dependencies: @@ -4599,6 +4339,23 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 + languageName: node + linkType: hard + +"tinypool@npm:^1.1.1": + version: 1.1.1 + resolution: "tinypool@npm:1.1.1" + checksum: 10c0/bf26727d01443061b04fa863f571016950888ea994ba0cd8cba3a1c51e2458d84574341ab8dbc3664f1c3ab20885c8cf9ff1cc4b18201f04c2cde7d317fff69b + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -4615,15 +4372,6 @@ __metadata: languageName: node linkType: hard -"tree-dump@npm:^1.0.1": - version: 1.0.3 - resolution: "tree-dump@npm:1.0.3" - peerDependencies: - tslib: 2 - checksum: 10c0/05d8138f43c48589475f1cac516dcc93b1b6123474a9e1c2ddcaefe0c75105aa5fabee5874a2458c4ab78bde9f01a8d54ff560c4e04089b5325de5ff7f57b2ee - languageName: node - linkType: hard - "trim-lines@npm:^3.0.0": version: 3.0.1 resolution: "trim-lines@npm:3.0.1" @@ -4648,7 +4396,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.8.0": +"tslib@npm:^2.4.0, tslib@npm:^2.8.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -4689,7 +4437,16 @@ __metadata: languageName: node linkType: hard -"unified@npm:^10.0.0, unified@npm:^10.1.2": +"unhead@npm:2.1.2": + version: 2.1.2 + resolution: "unhead@npm:2.1.2" + dependencies: + hookable: "npm:^6.0.1" + checksum: 10c0/3aa9aa1ca980428d78ecd098ed0522d0edc4967c9928df3749d338ca1a4f2121feea4ab3a3ade351b79ea1a453b298f7881ffd27ad7caa6f52dba03e8a14df8d + languageName: node + linkType: hard + +"unified@npm:^10.1.2": version: 10.1.2 resolution: "unified@npm:10.1.2" dependencies: @@ -4704,7 +4461,7 @@ __metadata: languageName: node linkType: hard -"unified@npm:^11.0.2": +"unified@npm:^11.0.0, unified@npm:^11.0.2, unified@npm:^11.0.5": version: 11.0.5 resolution: "unified@npm:11.0.5" dependencies: @@ -4737,13 +4494,6 @@ __metadata: languageName: node linkType: hard -"unist-util-generated@npm:^2.0.0": - version: 2.0.1 - resolution: "unist-util-generated@npm:2.0.1" - checksum: 10c0/6f052dd47a7280785f3787f52cdfe8819e1de50317a1bcf7c9346c63268cf2cebc61a5980e7ca734a54735e27dbb73091aa0361a98504ab7f9409fb75f1b16bb - languageName: node - linkType: hard - "unist-util-is@npm:^5.0.0": version: 5.2.1 resolution: "unist-util-is@npm:5.2.1" @@ -4762,31 +4512,21 @@ __metadata: languageName: node linkType: hard -"unist-util-position-from-estree@npm:^1.0.0, unist-util-position-from-estree@npm:^1.1.0": - version: 1.1.2 - resolution: "unist-util-position-from-estree@npm:1.1.2" - dependencies: - "@types/unist": "npm:^2.0.0" - checksum: 10c0/1d95d0b2b05efcec07a4e6745a6950cd498f6100fb900615b252937baed5140df1c6319b9a67364c8a6bd891c58b3c9a52a22e8e1d3422c50bb785d7e3ad7484 - languageName: node - linkType: hard - -"unist-util-position@npm:^4.0.0": - version: 4.0.4 - resolution: "unist-util-position@npm:4.0.4" +"unist-util-position-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "unist-util-position-from-estree@npm:2.0.0" dependencies: - "@types/unist": "npm:^2.0.0" - checksum: 10c0/e506d702e25a0fb47a64502054f709a6ff5db98993bf139eec868cd11eb7de34392b781c6c2002e2c24d97aa398c14b32a47076129f36e4b894a2c1351200888 + "@types/unist": "npm:^3.0.0" + checksum: 10c0/39127bf5f0594e0a76d9241dec4f7aa26323517120ce1edd5ed91c8c1b9df7d6fb18af556e4b6250f1c7368825720ed892e2b6923be5cdc08a9bb16536dc37b3 languageName: node linkType: hard -"unist-util-remove-position@npm:^4.0.0": - version: 4.0.2 - resolution: "unist-util-remove-position@npm:4.0.2" +"unist-util-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-position@npm:5.0.0" dependencies: - "@types/unist": "npm:^2.0.0" - unist-util-visit: "npm:^4.0.0" - checksum: 10c0/17371b1e53c52d1b00656c9c6fe1bb044846e7067022195823ed3d1a8d8b965d4f9a79b286b8a841e68731b4ec93afd563b81ae92151f80c28534ba51e9dc18f + "@types/unist": "npm:^3.0.0" + checksum: 10c0/dde3b31e314c98f12b4dc6402f9722b2bf35e96a4f2d463233dd90d7cde2d4928074a7a11eff0a5eb1f4e200f27fc1557e0a64a7e8e4da6558542f251b1b7400 languageName: node linkType: hard @@ -4808,16 +4548,16 @@ __metadata: languageName: node linkType: hard -"unist-util-visit-children@npm:^2.0.2": - version: 2.0.2 - resolution: "unist-util-visit-children@npm:2.0.2" +"unist-util-visit-children@npm:^3.0.0": + version: 3.0.0 + resolution: "unist-util-visit-children@npm:3.0.0" dependencies: - "@types/unist": "npm:^2.0.0" - checksum: 10c0/d43d80f35b6845a37d6a52ff8b9065401e779c30ba7323e83fb54b980007483027db955ae6a34904754b8b1b5e7d764d921546251b85096203ca5116c1b05596 + "@types/unist": "npm:^3.0.0" + checksum: 10c0/51e95f54fbf11d414952c011c761c3960864948ad3fd2abe3989eb18b18d96b8f48e7ea5ab6f23264d1a3f4f5a1ff76312dd8f2196c78b762098403505c3abb9 languageName: node linkType: hard -"unist-util-visit-parents@npm:^5.0.0, unist-util-visit-parents@npm:^5.1.1": +"unist-util-visit-parents@npm:^5.1.1": version: 5.1.3 resolution: "unist-util-visit-parents@npm:5.1.3" dependencies: @@ -4837,7 +4577,7 @@ __metadata: languageName: node linkType: hard -"unist-util-visit@npm:^4.0.0, unist-util-visit@npm:^4.1.2": +"unist-util-visit@npm:^4.0.0": version: 4.1.2 resolution: "unist-util-visit@npm:4.1.2" dependencies: @@ -4859,13 +4599,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a - languageName: node - linkType: hard - "util-ts-types@npm:^1.0.0": version: 1.0.0 resolution: "util-ts-types@npm:1.0.0" @@ -4887,13 +4620,6 @@ __metadata: languageName: node linkType: hard -"varint@npm:^6.0.0": - version: 6.0.0 - resolution: "varint@npm:6.0.0" - checksum: 10c0/737fc37088a62ed3bd21466e318d21ca7ac4991d0f25546f518f017703be4ed0f9df1c5559f1dd533dddba4435a1b758fd9230e4772c1a930ef72b42f5c750fd - languageName: node - linkType: hard - "vfile-location@npm:^5.0.0": version: 5.0.3 resolution: "vfile-location@npm:5.0.3" @@ -4993,12 +4719,13 @@ __metadata: version: 0.0.0-use.local resolution: "website@workspace:." dependencies: - "@callstack/rspress-theme": "npm:^0.0.3" + "@callstack/rspress-theme": "npm:^0.5.1" + "@rspress/core": "npm:^2.0.0-rc.5" "@types/node": "npm:^24.0.13" "@types/react": "npm:^18.3.23" + react: "npm:^19.2.0" + react-dom: "npm:^19.2.0" rsbuild-plugin-open-graph: "npm:^1.0.2" - rspress: "npm:1.44.0" - rspress-plugin-font-open-sans: "npm:^1.0.0" rspress-plugin-vercel-analytics: "npm:^0.3.0" typescript: "npm:^5.8.3" languageName: unknown @@ -5048,13 +4775,6 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e - languageName: node - linkType: hard - "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" @@ -5069,7 +4789,7 @@ __metadata: languageName: node linkType: hard -"zwitch@npm:^2.0.0": +"zwitch@npm:^2.0.0, zwitch@npm:^2.0.4": version: 2.0.4 resolution: "zwitch@npm:2.0.4" checksum: 10c0/3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e