diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml
index b0448b0..454c890 100644
--- a/.github/workflows/android-build.yml
+++ b/.github/workflows/android-build.yml
@@ -14,7 +14,7 @@ on:
- 'nitrogen/generated/android/**'
- 'cpp/**'
- 'android/**'
- - '**/bun.lock'
+ - '**/yarn.lock'
- '**/react-native.config.js'
- '**/nitro.json'
pull_request:
@@ -25,7 +25,7 @@ on:
- '**/nitrogen/generated/android/**'
- 'cpp/**'
- 'android/**'
- - '**/bun.lock'
+ - '**/yarn.lock'
- '**/react-native.config.js'
- '**/nitro.json'
workflow_dispatch:
@@ -39,10 +39,15 @@ jobs:
name: Build Android Example App
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-node@v4
+ - uses: actions/checkout@v5
+
+ - name: Enable Corepack
+ run: corepack enable
+
+ - uses: actions/setup-node@v5
with:
- node-version: '20'
+ node-version: '24'
+ cache: 'yarn'
- name: Install dependencies (yarn)
run: yarn install --immutable
@@ -50,11 +55,11 @@ jobs:
- name: Generate Nitro bindings
run: yarn codegen
- - name: Setup JDK 17
+ - name: Setup JDK 21
uses: actions/setup-java@v5
with:
distribution: 'zulu'
- java-version: '17'
+ java-version: '21'
cache: 'gradle'
- name: Cache Gradle
diff --git a/.github/workflows/ios-build.yml b/.github/workflows/ios-build.yml
index 33ce6ee..72d5a43 100644
--- a/.github/workflows/ios-build.yml
+++ b/.github/workflows/ios-build.yml
@@ -17,7 +17,7 @@ on:
- 'cpp/**'
- 'ios/**'
- '**/Podfile.lock'
- - '**/bun.lock'
+ - '**/yarn.lock'
- '**/*.podspec'
- '**/react-native.config.js'
- '**/nitro.json'
@@ -32,7 +32,7 @@ on:
- 'cpp/**'
- 'ios/**'
- '**/Podfile.lock'
- - '**/bun.lock'
+ - '**/yarn.lock'
- '**/*.podspec'
- '**/react-native.config.js'
- '**/nitro.json'
@@ -48,16 +48,21 @@ concurrency:
jobs:
build:
name: Build iOS Example App
- runs-on: macOS-15
+ runs-on: macos-26
steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-node@v4
+ - uses: actions/checkout@v5
+
+ - name: Enable Corepack
+ run: corepack enable
+
+ - uses: actions/setup-node@v5
with:
- node-version: '20'
+ node-version: '24'
+ cache: 'yarn'
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
- xcode-version: 16.4
+ xcode-version: '26.2'
- name: Install dependencies (yarn)
run: yarn install --immutable
@@ -68,7 +73,7 @@ jobs:
- name: Setup Ruby (bundle)
uses: ruby/setup-ruby@v1
with:
- ruby-version: '3.2'
+ ruby-version: '3.4'
bundler-cache: true
working-directory: example/ios
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d081834..a619ec8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -21,27 +21,25 @@ jobs:
id-token: write
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
- - name: Setup Bun.js
- uses: oven-sh/setup-bun@v2
- with:
- bun-version: latest
- - name: Cache bun dependencies
- id: bun-cache
- uses: actions/cache@v4
+
+ - name: Enable Corepack
+ run: corepack enable
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v5
with:
- path: ~/.bun/install/cache
- key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }}
- restore-keys: |
- ${{ runner.os }}-bun-
+ node-version: '24'
+ cache: 'yarn'
+ registry-url: 'https://registry.npmjs.org'
- - name: Install npm dependencies (bun)
- run: bun install
+ - name: Install dependencies (yarn)
+ run: yarn install --immutable
- name: Build lib
- run: bun run build
+ run: yarn build
- name: Release
env:
@@ -52,4 +50,4 @@ jobs:
GIT_AUTHOR_EMAIL: '${{ github.actor }}@users.noreply.github.com'
GIT_COMMITTER_NAME: ${{ github.actor }}
GIT_COMMITTER_EMAIL: '${{ github.actor }}@users.noreply.github.com'
- run: bun release
+ run: yarn release
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100755
index 0000000..9841c7a
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,2 @@
+#!/usr/bin/env sh
+yarn lint-staged
diff --git a/README.md b/README.md
index 947f22b..a5e7aa1 100644
--- a/README.md
+++ b/README.md
@@ -1,324 +1,371 @@
-# react-native-inappbrowser-nitro
-
-[](https://www.npmjs.com/package/react-native-inappbrowser-nitro)
-[](https://www.npmjs.com/package/react-native-inappbrowser-nitro)
-[](LICENSE)
+
-Lightning-fast, modern in-app browser for React Native powered by Nitro Modules. Enjoy direct JSI bindings, zero bridge overhead, and polished native browser UX on both iOS and Android.
+# react-native-inappbrowser-nitro
-
-
-
+**A modern, native in-app browser for React Native — built on [Nitro Modules](https://nitro.margelo.com/).**
-## Contents
+[](https://www.npmjs.com/package/react-native-inappbrowser-nitro)
+[](https://www.npmjs.com/package/react-native-inappbrowser-nitro)
+[](https://bundlephobia.com/package/react-native-inappbrowser-nitro)
+[](./LICENSE)
+[](https://github.com/mCodex/react-native-inappbrowser-nitro/actions/workflows/ios-build.yml)
+[](https://github.com/mCodex/react-native-inappbrowser-nitro/actions/workflows/android-build.yml)
-- [Highlights](#highlights)
-- [Platform Support](#platform-support)
-- [Installation](#installation)
-- [Usage](#usage)
-- [Migration Guide (pre-Nitro → latest)](#migration-guide-pre-nitro--latest)
-- [API Surface](#api-surface)
-- [Options Reference](#options-reference)
-- [Dynamic Color Palettes](#dynamic-color-palettes)
-- [Security & Emulator Notes](#security--emulator-notes)
-- [Troubleshooting](#troubleshooting)
-- [Contributing](#contributing)
-- [License](#license)
+[**Installation**](#installation) ·
+[**Quick start**](#quick-start) ·
+[**API**](#api) ·
+[**Options**](#options) ·
+[**Migration**](#migrating-from-react-native-inappbrowser-reborn) ·
+[**FAQ**](#faq)
-## Highlights
+
-- TurboModule-first implementation with native-speed execution and zero bridge overhead.
-- Fully typed TypeScript API plus ergonomic React hook helpers.
-- ✅ **iOS 26 ready**: high-contrast dynamic colors, edge-dismiss control, and UI style overrides.
-- ✅ **Android 16 ready**: partial custom tabs, referrer controls, and per-theme palettes.
-- Authentication-first design with ephemeral sessions and graceful fallbacks.
-- Works great with Hermes, Fabric, and the React Native New Architecture.
+
-## Platform Support
+---
-| Platform | Minimum | Targeted | Highlights |
-|----------|---------|----------|------------|
-| iOS | 11.0 | 17 / 26* | SafariViewController + ASWebAuthentication support. |
-| Android | API 23 | API 34 / 16* | Chrome Custom Tabs with dynamic theming. |
-| React Native | 0.70.0 | Latest | Nitro Modules + TypeScript bindings. |
+## Why this library?
-\* iOS 26 and Android 16 features are automatically gated behind runtime checks.
+| | |
+|---|---|
+| ⚡ **Native speed** | Direct JSI bindings via Nitro Modules — no JSON bridge, no scheduler hops. |
+| 🎯 **Right primitive on each platform** | `SFSafariViewController` on iOS, Chrome **Custom Tabs** on Android — not a `WKWebView` reimplementation. |
+| 🔐 **OAuth-ready** | First-class `openAuth` flow with ephemeral sessions and redirect interception. |
+| 🪝 **Hook + imperative APIs** | `useInAppBrowser()` for component state, named exports for everything else. |
+| 🧩 **Strict TypeScript** | Discriminated result types, dual `as const` + literal-type enums, full JSDoc with examples. |
+| 📦 **Small footprint** | `"sideEffects": false`, ESM-first build, lazy-initialized native module. |
-> **Expo** is not supported because Nitro modules require native compilation.
+---
-## Android Browser Fallback
+## Requirements
-
-Browser selection logic on Android
+| | Minimum | Tested up to |
+|---|---|---|
+| React Native | `0.75` (New Architecture) | `0.85` |
+| iOS | `15.1` | `26.2` |
+| Android | API `23` (Android 6) | API `36` (Android 16) |
+| `react-native-nitro-modules` | `0.35` | `0.35.4` |
-On Android, the library prioritizes Chrome Custom Tabs for the best user experience when Chrome is installed. If Chrome is not available (e.g., on Samsung devices), it falls back to opening the URL in the device's default web browser using the standard `Intent.ACTION_VIEW` mechanism.
+> [!IMPORTANT]
+> This library requires the **React Native New Architecture** and is **not compatible with Expo Go**. It works in [Expo prebuild / dev clients](https://docs.expo.dev/develop/development-builds/introduction/).
-This ensures compatibility across devices while maintaining optimal performance with Chrome when possible.
-
+---
## Installation
```sh
-npm install react-native-inappbrowser-nitro react-native-nitro-modules
+yarn add react-native-inappbrowser-nitro react-native-nitro-modules
```
-or
+
+npm / pnpm / bun
```sh
-yarn add react-native-inappbrowser-nitro react-native-nitro-modules
+npm install react-native-inappbrowser-nitro react-native-nitro-modules
+pnpm add react-native-inappbrowser-nitro react-native-nitro-modules
+bun add react-native-inappbrowser-nitro react-native-nitro-modules
```
+
+
### iOS
```sh
-cd ios
-pod install
+cd ios && pod install
```
### Android
-No additional steps—Gradle autolinking handles everything.
+Autolinking handles everything. No manual `MainApplication` edits required.
+
+---
-## Usage
+## Quick start
### Imperative API
```tsx
import { isAvailable, open } from 'react-native-inappbrowser-nitro'
-async function openDocs() {
- if (!(await isAvailable())) {
- console.warn('No compatible browser found')
- return
- }
-
- const result = await open('https://nitro.margelo.com', {
- preferredBarTintColor: { base: '#111827', light: '#1F2933', highContrast: '#000000' },
- preferredControlTintColor: { base: '#F9FAFB', highContrast: '#FFD700' }, // iOS 26+
- toolbarColor: { base: '#2563EB', dark: '#1E3A8A' },
- enablePartialCustomTab: true, // Android 16+
+if (await isAvailable()) {
+ const result = await open('https://github.com', {
+ preferredBarTintColor: { light: '#FFFFFF', dark: '#000000' }, // iOS
+ toolbarColor: { light: '#FFFFFF', dark: '#000000' }, // Android
+ readerMode: true,
})
- console.log(result)
+ if (result.type === 'success') {
+ console.log('Opened', result.url)
+ }
}
```
-### React Hook
+### React hook
```tsx
-import { useInAppBrowser } from 'react-native-inappbrowser-nitro'
+import { useInAppBrowser } from 'react-native-inappbrowser-nitro/hooks'
-export function LaunchButton() {
+function DocsButton() {
const { open, isLoading, error } = useInAppBrowser()
return (
- open('https://github.com/mCodex/react-native-inappbrowser-nitro')}
+
+ onPress={() => open('https://nitro.margelo.com')}
+ >
+ {isLoading ? 'Opening…' : 'Open docs'}
+ {error && {error.message} }
+
)
}
```
-### Authentication Flow (OAuth / SSO)
+The hook handles `isLoading` / `error` state, is **safe to call after unmount** (state updates are guarded), and returns stable `open`/`openAuth` references via `useCallback` so it's safe to put them in effect dependency arrays.
+
+### OAuth / SSO with `openAuth`
```tsx
import { openAuth } from 'react-native-inappbrowser-nitro'
const result = await openAuth(
- 'https://provider.com/oauth/authorize?client_id=abc',
- 'myapp://oauth/callback',
+ 'https://example.com/oauth/authorize?client_id=…&redirect_uri=myapp%3A%2F%2Fcb',
+ 'myapp://cb',
{
- ephemeralWebSession: true,
- enableEdgeDismiss: false, // iOS 26+: lock swipe-to-dismiss during auth
- showTitle: false,
+ ephemeralWebSession: true, // iOS: don't share cookies with Safari
+ enableEdgeDismiss: false, // iOS: disable swipe-to-dismiss while authing
+ forceCloseOnRedirection: true, // Android: close tab once redirect is hit
}
)
if (result.type === 'success' && result.url) {
- // handle redirect
+ const code = new URL(result.url).searchParams.get('code')
+ // …exchange the code for a token
}
```
-## Migration Guide (pre-Nitro → latest)
+---
-Migrating from earlier `react-native-inappbrowser-nitro` versions? Note these key changes when adopting the Nitro rewrite:
+## API
-### Migrating to v3 (named exports)
+All exports come from the package root unless noted. Every function returns a `Promise`.
-The `InAppBrowser` static class has been replaced with individual named exports for better tree shaking. Update your imports:
+| Export | Signature | Description |
+|---|---|---|
+| `isAvailable` | `() => Promise` | `true` when a compliant Safari/Custom Tabs runtime is reachable. Always `true` on iOS; on Android requires a Custom Tabs–capable browser. |
+| `open` | `(url, options?) => Promise` | Present an in-app browser. Resolves when the user dismisses or the system closes it. |
+| `openAuth` | `(url, redirectUrl, options?) => Promise` | Run an authentication session that resolves the moment the native runtime intercepts a navigation matching `redirectUrl`. |
+| `close` | `() => Promise` | Dismiss the current browser. No-op when none is presented. |
+| `closeAuth` | `() => Promise` | Cancel an in-flight `openAuth` session. |
+| `useInAppBrowser` | `() => UseInAppBrowserReturn` | Hook wrapping `open`/`openAuth` with `isLoading` + `error` state. Exported from `react-native-inappbrowser-nitro/hooks`. |
-```diff
--import { InAppBrowser } from 'react-native-inappbrowser-nitro'
-+import { open, openAuth, close, closeAuth, isAvailable } from 'react-native-inappbrowser-nitro'
+### Result shape
--InAppBrowser.open(url, options)
-+open(url, options)
+```ts
+type BrowserResultType = 'cancel' | 'dismiss' | 'success'
--InAppBrowser.openAuth(url, redirectUrl, options)
-+openAuth(url, redirectUrl, options)
+interface InAppBrowserResult {
+ type: BrowserResultType
+ url?: string // final URL captured by the browser session
+ message?: string // human-readable reason on `dismiss`
+}
+```
--InAppBrowser.close()
-+close()
+### Errors
--InAppBrowser.closeAuth()
-+closeAuth()
+`open` and `openAuth` reject with an `Error` when:
--InAppBrowser.isAvailable()
-+isAvailable()
-```
+- the URL is empty, missing a scheme, or
+- the URL uses a denied scheme (`javascript:`, `data:`, `vbscript:`).
-The hook import is unchanged: `import { useInAppBrowser } from 'react-native-inappbrowser-nitro'`
+These are sanity checks performed in JS before the call ever crosses JSI.
---
-### 1. `open()` resolves on presentation
+## Options
-Older releases resolved the promise when the browser closed. The new implementation resolves as soon as Safari/Custom Tabs is shown (mirroring Android behavior), and dismissal status is delivered asynchronously.
+`open` and `openAuth` accept a single options object that aggregates every iOS and Android knob. **Cross-platform fields** apply everywhere; **`@platform` fields** are silently ignored on the other platform.
-```diff
--const result = await InAppBrowser.open(url, options)
--// resolved after the tab closes
--console.log(result.type)
-+const result = await InAppBrowser.open(url, options)
-+console.log('Browser visible', result.type)
-+// move teardown logic to listeners triggered on dismiss
-```
+### iOS
-If you depended on awaiting dismissal, refactor to handle completion via deep links, event listeners, or the returned result object.
+| Option | Type | Default | Notes |
+|---|---|---|---|
+| `dismissButtonStyle` | `'done' \| 'close' \| 'cancel'` | `'done'` | Toolbar dismiss button label. |
+| `preferredBarTintColor` | `DynamicColor` | system | Toolbar background. **iOS 26 limitation:** see [iOS 26 Liquid Glass](#ios-26-liquid-glass). |
+| `preferredControlTintColor` | `DynamicColor` | system | Toolbar button tint. **iOS 26 limitation:** see below. |
+| `preferredStatusBarStyle` | `'default' \| 'lightContent' \| 'darkContent'` | system | Status bar appearance while presented. |
+| `readerMode` | `boolean` | `false` | Open in Safari Reader Mode if the page supports it. |
+| `animated` | `boolean` | `true` | Animate present/dismiss. |
+| `modalPresentationStyle` | `ModalPresentationStyle` | `'automatic'` | UIKit modal style. |
+| `modalTransitionStyle` | `ModalTransitionStyle` | `'coverVertical'` | UIKit transition (use `'partialCurl'` only with `'fullScreen'`). |
+| `modalEnabled` | `boolean` | `true` | Present modally vs. push onto navigation stack. |
+| `enableBarCollapsing` | `boolean` | `false` | Collapse toolbar on scroll. |
+| `ephemeralWebSession` | `boolean` | `false` | `openAuth` only: don't persist cookies/credentials. |
+| `enableEdgeDismiss` | `boolean` | `true` | Allow swipe-from-edge to dismiss. |
+| `overrideUserInterfaceStyle` | `'unspecified' \| 'light' \| 'dark'` | `'unspecified'` | Force light/dark regardless of system theme. |
+| `formSheetPreferredContentSize` | `{ width, height }` | UIKit | Size when `modalPresentationStyle: 'formSheet'` (iPad). |
-### 2. Options now use structured colors and new flags
+### Android
-- Color props accept `DynamicColor` objects to describe light/dark/high-contrast palettes.
-- Added platform guards such as `enableEdgeDismiss` (iOS 26), `enablePartialCustomTab`, `includeReferrer`, and `shareState`.
-- TypeScript enums/constants are exported from the root for stronger typing.
+| Option | Type | Default | Notes |
+|---|---|---|---|
+| `showTitle` | `boolean` | `false` | Show page title beneath URL bar. |
+| `toolbarColor` | `DynamicColor` | browser default | Top toolbar background. |
+| `secondaryToolbarColor` | `DynamicColor` | browser default | Bottom toolbar background. |
+| `navigationBarColor` | `DynamicColor` | system | API 27+. |
+| `navigationBarDividerColor` | `DynamicColor` | system | API 28+. |
+| `enableUrlBarHiding` | `boolean` | `false` | Hide URL bar on scroll. |
+| `enableDefaultShare` | `boolean` | `false` | Show share menu item. Use `shareState` for finer control. |
+| `shareState` | `'default' \| 'on' \| 'off'` | `'default'` | Override share menu visibility. |
+| `colorScheme` | `'system' \| 'light' \| 'dark'` | `'system'` | Custom Tab theme hint. |
+| `headers` | `Record` | `{}` | HTTP headers on the initial request. |
+| `forceCloseOnRedirection` | `boolean` | `false` | Auto-close tab when redirect URL matches (auth flows). |
+| `hasBackButton` | `boolean` | `false` | Show back arrow instead of "X". |
+| `browserPackage` | `string` | auto | Pin to a specific browser (e.g. `'com.android.chrome'`). |
+| `showInRecents` | `boolean` | `true` | Keep tab in Android Recents after closing. |
+| `includeReferrer` | `boolean` | `false` | Send host app's package as `Referrer`. |
+| `instantAppsEnabled` | `boolean` | `true` | Allow Instant Apps to handle the URL. |
+| `enablePullToRefresh` | `boolean` | `false` | Enable swipe-to-refresh. |
+| `enablePartialCustomTab` | `boolean` | `false` | Show as resizable bottom-sheet (Android 13+). |
+| `animations` | `BrowserAnimations` | system | Custom enter/exit animation resource names. |
+
+### Dynamic colors
+
+Color options accept a `DynamicColor` object that adapts to system appearance:
-```diff
--InAppBrowser.open(url, { toolbarColor: '#6200EE' })
-+InAppBrowser.open(url, { toolbarColor: { base: '#6200EE', dark: '#3700B3' } })
+```ts
+interface DynamicColor {
+ base?: string // fallback for any mode
+ light?: string // light mode override
+ dark?: string // dark mode override
+ highContrast?: string // applied when "Increase Contrast" is enabled (iOS 26+, Android 16+)
+}
```
-### 3. Prefer the hook for loading/error handling
+Each value is a `#RRGGBB` or `#AARRGGBB` hex string. If a mode-specific value is missing, the platform falls back to `base`, then to the system default.
+
+---
+
+## Platform notes
+
+### iOS 26 Liquid Glass
+
+iOS 26 redesigned `SFSafariViewController` around the system **Liquid Glass** material. The toolbar is now a translucent surface that samples content beneath it, so:
-`useInAppBrowser` wraps the imperative API with loading state and error capture, aligning with the new async semantics.
+- `preferredBarTintColor` has **little to no visible effect** on iOS 26.
+- `preferredControlTintColor` is partially overridden by the system's adaptive monochrome treatment — custom tints may render with lower contrast.
+
+This is a platform behavior change that affects every wrapper around `SFSafariViewController`. There is no public API to opt out of the glass material. The properties are still forwarded for iOS ≤ 18 compatibility.
+
+If pixel-exact branding of the chrome is critical, consider a `WKWebView`-based component for non-auth flows. **Do not** use `WKWebView` for OAuth — it does not share Safari's process isolation, cookies, or autofill, and many providers explicitly forbid it.
+
+### Android browser fallback
+
+Android prefers Chrome Custom Tabs when available. On devices without a Custom Tabs–capable browser the system surfaces a chooser via `Intent.ACTION_VIEW`, and option fields like `toolbarColor` are silently ignored.
+
+---
+
+## Migrating from `react-native-inappbrowser-reborn`
```diff
--const handleOpen = () => InAppBrowser.open(url)
-+const { open, isLoading, error } = useInAppBrowser()
-+const handleOpen = () => open(url)
+- import InAppBrowser from 'react-native-inappbrowser-reborn'
++ import { open, openAuth, close, isAvailable } from 'react-native-inappbrowser-nitro'
+
+- await InAppBrowser.open(url, { toolbarColor: '#6200EE' })
++ await open(url, { toolbarColor: { base: '#6200EE', dark: '#3700B3' } })
+
+- await InAppBrowser.openAuth(url, redirectUrl, { ephemeralWebSession: true })
++ await openAuth(url, redirectUrl, { ephemeralWebSession: true })
```
-### 4. Regenerate bindings after upgrading
+Key differences:
-Run `yarn codegen && yarn build` (or your project script) to regenerate Nitro bindings so the new enums and options are available on both platforms.
+- **Named exports** instead of a default class — better tree-shaking.
+- **`DynamicColor` objects** instead of single hex strings, so the same call adapts to light/dark/high-contrast.
+- **String-literal enums** (`'success'`, `'cancel'`, `'dismiss'`) for `result.type` — fully type-narrowable.
+- **Hook-based state**: `useInAppBrowser()` exposes `isLoading` and `error` without manual wrappers.
+- **No bridge**: every call goes through Nitro's JSI hybrid object.
-## API Surface
+---
-| Method | Description |
-|--------|-------------|
-| `isAvailable()` | Resolve to `true` when a compliant custom tab / Safari controller is available. |
-| `open(url, options?)` | Launch an in-app browser session with rich customization. |
-| `openAuth(url, redirectUrl, options?)` | Open an OAuth/SSO flow that resolves once the redirect URL is reached. |
-| `close()` | Programmatically dismiss an open browser session. |
-| `closeAuth()` | Abort an authentication session. |
+## FAQ
-All functions return Promises and are fully typed. See `src/core/native.ts` for the native module wrapper implementation.
+
+Why not just use WKWebView / react-native-webview?
-## Options Reference
+`SFSafariViewController` and Chrome Custom Tabs share the system Safari/Chrome session — including cookies, autofill, content blockers, and (critically) password autofill from iCloud Keychain / Google Password Manager. They also run in a separate process from your app, so the host app cannot read page content. This is exactly what most OAuth providers require. A `WKWebView` cannot offer any of that.
-### Cross-platform (`InAppBrowserOptions`)
+
-| Option | Type | Notes |
-|--------|------|-------|
-| `headers` | `Record` | Additional request headers applied to the first navigation. |
+
+Does it work with Expo?
-### iOS (`InAppBrowserIOSOptions`)
+Yes — in [Expo prebuild / dev client](https://docs.expo.dev/develop/development-builds/introduction/) projects. It does **not** work in Expo Go (managed workflow) because Nitro requires native compilation.
-| Option | Type | Default | Notes |
-|--------|------|---------|-------|
-| `dismissButtonStyle` | `'done' \| 'close' \| 'cancel'` | `'done'` | Choose a Safari dismiss button style. |
-| `preferredBarTintColor` | `DynamicColor` | System | Navigation bar background; honors `highContrast` on iOS 26+. |
-| `preferredControlTintColor` | `DynamicColor` | System | Bar button tint; supports `highContrast` on iOS 26+. |
-| `preferredStatusBarStyle` | `'default' \| 'lightContent' \| 'darkContent'` | System | Override status bar text color when available. |
-| `readerMode` | `boolean` | `false` | Attempt Safari Reader mode. |
-| `animated` | `boolean` | `true` | Toggle presentation animations. |
-| `modalPresentationStyle` | `ModalPresentationStyle` | `'automatic'` | UIKit modal presentation style. |
-| `modalTransitionStyle` | `ModalTransitionStyle` | `'coverVertical'` | Use `'partialCurl'` only with `'fullScreen'`. |
-| `modalEnabled` | `boolean` | `true` | Present modally instead of pushing. |
-| `enableBarCollapsing` | `boolean` | `false` | Allow Safari toolbar to collapse on scroll. |
-| `ephemeralWebSession` | `boolean` | `false` | Use ASWebAuthenticationSession ephemeral mode. |
-| `enableEdgeDismiss` | `boolean` | `true` | iOS 26+: enable or block interactive swipe-to-dismiss. |
-| `overrideUserInterfaceStyle` | `'unspecified' \| 'light' \| 'dark'` | `'unspecified'` | Force Safari appearance regardless of system theme. |
-| `formSheetPreferredContentSize` | `{ width: number; height: number }` | UIKit | Preferred size for form-sheet presentations (iPad). |
-
-### Android (`InAppBrowserAndroidOptions`)
+
-| Option | Type | Default | Notes |
-|--------|------|---------|-------|
-| `showTitle` | `boolean` | `true` | Toggle title text. |
-| `toolbarColor` | `DynamicColor` | Browser default | Supports per-scheme colors & `highContrast` (Android 16+). |
-| `secondaryToolbarColor` | `DynamicColor` | Browser default | Secondary toolbar background. |
-| `navigationBarColor` | `DynamicColor` | OS default | API 27+. |
-| `navigationBarDividerColor` | `DynamicColor` | OS default | API 28+. |
-| `enableUrlBarHiding` | `boolean` | `false` | Hide URL bar on scroll. |
-| `enableDefaultShare` | `boolean` | `false` | Deprecated alias for `shareState`. |
-| `shareState` | `'default' \| 'on' \| 'off'` | `'default'` | Control the share sheet button. |
-| `colorScheme` | `'system' \| 'light' \| 'dark'` | `'system'` | Hint to Custom Tabs theme. |
-| `headers` | `Record` | `{}` | Additional request headers. |
-| `forceCloseOnRedirection` | `boolean` | `false` | Close once the URL changes. |
-| `hasBackButton` | `boolean` | `false` | Replace close `X` with a back arrow. |
-| `browserPackage` | `string` | Auto | Force a Custom Tabs provider package. |
-| `showInRecents` | `boolean` | `true` | Hide or show the tab in Android recents. |
-| `includeReferrer` | `boolean` | `false` | Attach `Intent.EXTRA_REFERRER`; may be ignored on emulators. |
-| `instantAppsEnabled` | `boolean` | `true` | Allow Instant Apps fallback. |
-| `enablePullToRefresh` | `boolean` | `false` | Enable built-in swipe-to-refresh. |
-| `enablePartialCustomTab` | `boolean` | `false` | Android 16+: open in resizable bottom-sheet style tab. |
-| `animations` | `{ startEnter?: string; startExit?: string; endEnter?: string; endExit?: string }` | System | Animation resource names from your app. |
-
-## Dynamic Color Palettes
-
-Provide adaptive color schemes without branching per platform by supplying a `DynamicColor` object:
+
+Can I use this with the Old Architecture?
-```ts
-type DynamicColor = {
- base?: string
- light?: string
- dark?: string
- highContrast?: string // iOS 26 & Android 16 accessibility override
-}
-```
+No. Nitro Modules require the New Architecture (`newArchEnabled=true` on Android, Fabric/TurboModule autolinking on iOS).
+
+
-When `highContrast` is given, the native layer only applies it when the OS signals increased contrast; earlier versions gracefully fall back to `base`/`light`/`dark`.
+
+"InAppBrowser is not available" on Android emulator
+
+The default Android emulator image often ships without a Custom Tabs–capable browser. Install Chrome from the Play Store image, or use a Pixel system image with Play Services preinstalled.
+
+
-## Security & Emulator Notes
+
+Why does my OAuth flow open in Safari on iOS instead of in-app?
-- **Auth hardening**: combine `ephemeralWebSession` with `enableEdgeDismiss: false` to keep OAuth flows contained on iOS 26+.
-- **Referrer propagation**: `includeReferrer` improves attribution on Android but some emulator images lack Play Services and ignore it.
-- **Partial tabs**: on emulators without gesture navigation the resize handle might be hidden; use the hardware back button to exit.
-- **Device parity**: verify flows on real hardware—emulators often skip hardened browser checks present on production devices.
+You're probably calling `open` instead of `openAuth`. `openAuth` uses `ASWebAuthenticationSession`, which is the only iOS API allowed to intercept a redirect URL programmatically. `open` uses `SFSafariViewController`, which can't do that.
-## Troubleshooting
+
-### Android emulator says "InAppBrowser is not available"
+
+Result type is 'dismiss' right after I call open. Why?
-- Install Chrome or another Custom Tabs capable browser via the Play Store.
-- If none is available, the library falls back to the system chooser and surfaces the underlying error.
+Most often this means the URL was rejected by the JS-side validator (empty / missing scheme / denied scheme). Check `result.message` for the reason. Logs from the native side are also visible in Xcode / Logcat.
-### iOS simulator quirks
+
-- Safari View Controller has reduced capabilities (no Apple Pay, limited Reader mode).
-- Use a device to validate privacy indicators, dynamic color, and high-contrast modes.
+---
## Contributing
-Pull requests and bug reports are welcome! Please read our [contributing guide](CONTRIBUTING.md) and run `yarn codegen && yarn lint` before submitting changes.
+Contributions are very welcome. The library is small and well-tested — a great place to land your first React Native PR.
-## License
+```sh
+git clone https://github.com/mCodex/react-native-inappbrowser-nitro
+cd react-native-inappbrowser-nitro
+yarn install
+yarn codegen # regenerate Nitro bindings + build
+yarn typecheck
+yarn lint
+```
-MIT © [mCodex](LICENSE)
+Run the example app:
+
+```sh
+cd example
+yarn ios # or: yarn android
+```
+
+A `pre-commit` hook (Husky + lint-staged + Biome) auto-formats staged files. CI runs on iOS (`macos-26`, Xcode 26.2) and Android (`ubuntu-latest`, JDK 21).
+
+We follow [Conventional Commits](https://www.conventionalcommits.org/). Releases are automated via [semantic-release](https://github.com/semantic-release/semantic-release).
---
-Built with ❤️ using [Nitro Modules](https://nitro.margelo.com/) for the React Native community.
+## Acknowledgements
+
+- [Marc Rousavy](https://github.com/mrousavy) and the Margelo team for [Nitro Modules](https://nitro.margelo.com/).
+- [`react-native-inappbrowser-reborn`](https://github.com/proyecto26/react-native-inappbrowser) — the original API inspiration.
+
+---
+
+## License
+
+[MIT](./LICENSE) © [Mateus Andrade](https://github.com/mCodex)
diff --git a/babel.config.js b/babel.config.js
index 3e0218e..bd14a99 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,3 +1,18 @@
+/**
+ * Babel config used both by the example app (which loads
+ * `module:@react-native/babel-preset` via Metro) and by `react-native-builder-bob`
+ * when compiling the library output to `lib/`.
+ *
+ * Bob calls babel directly and sets `caller.supportsStaticESM = true` for the
+ * `module` target so we use bob's bundled preset (which honors that caller flag
+ * to preserve ESM in `lib/module/`). The example app's Metro pipeline uses the
+ * RN preset via its own `babel.config.js`, so this config does NOT need to
+ * include the RN preset.
+ *
+ * `babel-plugin-react-compiler` runs first so subsequent transforms (preset-env,
+ * etc.) operate on the compiler-emitted output.
+ */
module.exports = {
- presets: ['module:@react-native/babel-preset'],
+ presets: ['react-native-builder-bob/babel-preset'],
+ plugins: [['babel-plugin-react-compiler', { target: '19' }]],
}
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index d95a461..e1d10b5 100644
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -3,7 +3,7 @@ PODS:
- hermes-engine (250829098.0.10):
- hermes-engine/Pre-built (= 250829098.0.10)
- hermes-engine/Pre-built (250829098.0.10)
- - InappbrowserNitro (2.1.2):
+ - InappbrowserNitro (3.0.0):
- hermes-engine
- NitroModules
- RCTRequired
@@ -27,7 +27,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - NitroModules (0.35.4):
+ - NitroModules (0.35.6):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2102,8 +2102,8 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
FBLazyVector: 26fd21c75314e101f280d401e97f27d54f3f7064
hermes-engine: 633515686db390f4a4cb002ae52a1e1f3ade1923
- InappbrowserNitro: 1dbbf69d4feab79baaff583cfd30150f98026ae5
- NitroModules: bb964bd9a9e7e845569915d5cd2daafcc71bf8c4
+ InappbrowserNitro: bb0595d41139b4d9ab7d422a85b78397a14318d6
+ NitroModules: c41b7b778d6557f1e517a80ec681a670321fa001
RCTDeprecation: c7a2768f905d76ca6d2cfefb26e4349eacbdfca3
RCTRequired: 5e502c3553cfbed090a991c444448da452fb752e
RCTSwiftUI: 5ce3ccbdc58b78cc4ebbaace01709ec22d58e131
diff --git a/example/package.json b/example/package.json
index 027786d..532675f 100644
--- a/example/package.json
+++ b/example/package.json
@@ -14,7 +14,7 @@
"@react-native/new-app-screen": "0.85.2",
"react": "19.2.3",
"react-native": "0.85.2",
- "react-native-nitro-modules": "0.35.4",
+ "react-native-nitro-modules": "0.35.6",
"react-native-safe-area-context": "^5.7.0"
},
"devDependencies": {
@@ -25,7 +25,6 @@
"@react-native-community/cli-platform-android": "20.1.3",
"@react-native-community/cli-platform-ios": "20.1.3",
"@react-native/babel-preset": "0.85.2",
- "@react-native/eslint-config": "0.85.2",
"@react-native/metro-config": "0.85.2",
"@react-native/typescript-config": "0.85.2",
"@types/jest": "^30.0.0",
diff --git a/package.json b/package.json
index 753b564..88192d3 100644
--- a/package.json
+++ b/package.json
@@ -54,9 +54,10 @@
"format": "biome format --write",
"clean": "git clean -dfX",
"release": "semantic-release",
- "build": "npm run typecheck && bob build && node ./scripts/remove-source-maps.cjs",
+ "build": "npm run typecheck && bob build",
"codegen": "nitrogen --logLevel=\"debug\" && npm run build && node post-script.js",
- "prepublish": "yarn codegen"
+ "prepare": "husky",
+ "prepublishOnly": "yarn lint && yarn codegen"
},
"keywords": [
"react-native",
@@ -109,18 +110,20 @@
"registry": "https://registry.npmjs.org/"
},
"devDependencies": {
- "@biomejs/biome": "^2.4.12",
- "@jamesacarr/eslint-formatter-github-actions": "^0.2.0",
+ "@biomejs/biome": "^2.4.13",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"@types/jest": "^30.0.0",
"@types/react": "19.2.14",
+ "babel-plugin-react-compiler": "^19.1.0-rc.3",
"conventional-changelog-conventionalcommits": "^9.3.1",
- "nitrogen": "0.35.4",
+ "husky": "^9.1.7",
+ "lint-staged": "^16.4.0",
+ "nitrogen": "0.35.6",
"react": "19.2.3",
"react-native": "0.85",
"react-native-builder-bob": "^0.41.0",
- "react-native-nitro-modules": "0.35.4",
+ "react-native-nitro-modules": "0.35.6",
"semantic-release": "^25.0.3",
"typescript": "^6.0.3"
},
@@ -136,13 +139,17 @@
[
"commonjs",
{
- "esm": true
+ "esm": true,
+ "sourceMaps": false,
+ "configFile": true
}
],
[
"module",
{
- "esm": true
+ "esm": true,
+ "sourceMaps": false,
+ "configFile": true
}
],
[
@@ -153,5 +160,10 @@
]
]
},
- "packageManager": "yarn@4.11.0"
+ "packageManager": "yarn@4.11.0",
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx,cjs,mjs,json}": [
+ "biome check --write --no-errors-on-unmatched"
+ ]
+ }
}
diff --git a/scripts/remove-source-maps.cjs b/scripts/remove-source-maps.cjs
deleted file mode 100644
index 0e7dd50..0000000
--- a/scripts/remove-source-maps.cjs
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env node
-
-const path = require('node:path')
-const { promises: fs } = require('node:fs')
-
-async function removeMaps(directory) {
- const entries = await fs.readdir(directory, { withFileTypes: true })
-
- await Promise.all(
- entries.map(async (entry) => {
- const entryPath = path.join(directory, entry.name)
-
- if (entry.isDirectory()) {
- await removeMaps(entryPath)
- return
- }
-
- if (entry.isFile() && entry.name.endsWith('.map')) {
- await fs.unlink(entryPath)
- }
- })
- )
-}
-
-async function main() {
- const libPath = path.join(__dirname, '..', 'lib')
-
- try {
- await fs.access(libPath)
- } catch {
- return
- }
-
- await removeMaps(libPath)
-}
-
-main().catch((error) => {
- console.error('Failed to remove source maps from lib directory:', error)
- process.exitCode = 1
-})
diff --git a/src/core/native.ts b/src/core/native.ts
index d876b92..53b0043 100644
--- a/src/core/native.ts
+++ b/src/core/native.ts
@@ -9,10 +9,14 @@ import type {
import { normalizeOptions } from '../utils/options'
import { validateUrl } from '../utils/url'
-// Lazy-initialized JSI hybrid object. Keeping it behind a getter avoids any
-// native allocation at module import time, so consumers that only import
-// types (or tree-shake the runtime API) pay no startup cost.
+/** @internal Lazy-initialized JSI hybrid object cache. */
let _native: InappbrowserNitro | null = null
+
+/**
+ * Lazily resolve the Nitro hybrid object. Keeping construction behind a
+ * getter avoids any native allocation at module import time, so consumers
+ * that only import types pay no startup cost.
+ */
const getNative = (): InappbrowserNitro => {
if (_native !== null) return _native
const Ctor =
@@ -27,17 +31,34 @@ const getNative = (): InappbrowserNitro => {
* - On iOS this is always `true`.
* - On Android it depends on whether a Custom Tabs compatible browser is
* installed (Chrome, Samsung Internet, etc.).
+ *
+ * @example
+ * ```ts
+ * if (await isAvailable()) {
+ * await open('https://example.com')
+ * }
+ * ```
+ * @see {@link InappbrowserNitro.isAvailable}
*/
export const isAvailable = (): Promise => getNative().isAvailable()
/**
* Present an in-app browser for `url` with optional platform configuration.
*
- * Resolves with the final `InAppBrowserResult` once the user dismisses the
- * browser or the system closes it.
+ * Resolves with the final {@link InAppBrowserResult} once the user dismisses
+ * the browser or the system closes it.
*
- * @throws if `url` is empty, missing a scheme, or uses a denied scheme
- * (`javascript:`, `data:`, `vbscript:`).
+ * @throws {Error} if `url` is empty, missing a scheme, or uses a denied
+ * scheme (`javascript:`, `data:`, `vbscript:`).
+ *
+ * @example
+ * ```ts
+ * const result = await open('https://example.com', {
+ * preferredBarTintColor: { light: '#FFFFFF', dark: '#000000' },
+ * })
+ * if (result.type === 'success') { … }
+ * ```
+ * @see {@link InappbrowserNitro.open}
*/
export const open = (
url: string,
@@ -49,8 +70,17 @@ export const open = (
* Launch an authentication session for `url` and resolve when the native
* runtime intercepts a navigation matching `redirectUrl`.
*
- * @throws if either `url` or `redirectUrl` is empty, missing a scheme,
- * or uses a denied scheme.
+ * @throws {Error} if either `url` or `redirectUrl` is empty, missing a
+ * scheme, or uses a denied scheme.
+ *
+ * @example
+ * ```ts
+ * const result = await openAuth(
+ * 'https://example.com/oauth/authorize?…',
+ * 'myapp://callback'
+ * )
+ * ```
+ * @see {@link InappbrowserNitro.openAuth}
*/
export const openAuth = (
url: string,
@@ -66,11 +96,15 @@ export const openAuth = (
/**
* Dismiss any currently visible in-app browser opened via {@link open}.
* No-op when no browser is presented.
+ *
+ * @see {@link InappbrowserNitro.close}
*/
export const close = (): Promise => getNative().close()
/**
* Dismiss any currently running authentication session opened via
* {@link openAuth}. No-op when no session is active.
+ *
+ * @see {@link InappbrowserNitro.closeAuth}
*/
export const closeAuth = (): Promise => getNative().closeAuth()
diff --git a/src/hooks/useInAppBrowser.ts b/src/hooks/useInAppBrowser.ts
index 28a7e7c..ee60073 100644
--- a/src/hooks/useInAppBrowser.ts
+++ b/src/hooks/useInAppBrowser.ts
@@ -13,17 +13,27 @@ import type {
InAppBrowserResult,
} from '../types'
+/**
+ * Stateful surface returned by {@link useInAppBrowser}.
+ *
+ * @example
+ * ```tsx
+ * const { open, isLoading, error } = useInAppBrowser()
+ *
+ * const onPress = () => {
+ * open('https://example.com').catch(() => {
+ * // `error` is also populated automatically.
+ * })
+ * }
+ * ```
+ */
export interface UseInAppBrowserReturn {
- /**
- * Present the in-app browser, tracking `isLoading` / `error` on this hook.
- */
+ /** Present the in-app browser, tracking `isLoading` / `error` on this hook. */
open: (
url: string,
options?: InAppBrowserOptions
) => Promise
- /**
- * Launch an auth session, tracking `isLoading` / `error` on this hook.
- */
+ /** Launch an auth session, tracking `isLoading` / `error` on this hook. */
openAuth: (
url: string,
redirectUrl: string,
@@ -45,9 +55,14 @@ const toError = (err: unknown): Error =>
err instanceof Error ? err : new Error(String(err))
/**
- * React hook that wraps {@link nativeOpen} / {@link nativeOpenAuth} with
- * loading and error state tracking. `close`, `closeAuth`, and `isAvailable`
- * are direct delegates to the stateless module API.
+ * React hook that wraps the imperative {@link nativeOpen} / {@link nativeOpenAuth}
+ * APIs with loading and error state tracking. `close`, `closeAuth`, and
+ * `isAvailable` are direct delegates to the stateless module API.
+ *
+ * `open`/`openAuth` and the returned object are memoized with `useCallback` /
+ * `useMemo` so consumers passing them to `useEffect` deps or `React.memo`
+ * children get stable identities — independent of whether the host app has
+ * `babel-plugin-react-compiler` enabled.
*/
export const useInAppBrowser = (): UseInAppBrowserReturn => {
const [isLoading, setIsLoading] = useState(false)
@@ -63,14 +78,14 @@ export const useInAppBrowser = (): UseInAppBrowserReturn => {
}
}, [])
- const open = useCallback(
- async (url: string, options?: InAppBrowserOptions) => {
+ const runTracked = useCallback(
+ async (fn: () => Promise): Promise => {
if (isMountedRef.current) {
setIsLoading(true)
setError(null)
}
try {
- return await nativeOpen(url, options)
+ return await fn()
} catch (err) {
const next = toError(err)
if (isMountedRef.current) setError(next)
@@ -82,23 +97,16 @@ export const useInAppBrowser = (): UseInAppBrowserReturn => {
[]
)
+ const open = useCallback(
+ (url: string, options?: InAppBrowserOptions) =>
+ runTracked(() => nativeOpen(url, options)),
+ [runTracked]
+ )
+
const openAuth = useCallback(
- async (url: string, redirectUrl: string, options?: InAppBrowserOptions) => {
- if (isMountedRef.current) {
- setIsLoading(true)
- setError(null)
- }
- try {
- return await nativeOpenAuth(url, redirectUrl, options)
- } catch (err) {
- const next = toError(err)
- if (isMountedRef.current) setError(next)
- throw next
- } finally {
- if (isMountedRef.current) setIsLoading(false)
- }
- },
- []
+ (url: string, redirectUrl: string, options?: InAppBrowserOptions) =>
+ runTracked(() => nativeOpenAuth(url, redirectUrl, options)),
+ [runTracked]
)
return useMemo(
diff --git a/src/specs/inappbrowser-nitro.nitro.ts b/src/specs/inappbrowser-nitro.nitro.ts
old mode 100755
new mode 100644
index a8427a5..805d4ad
--- a/src/specs/inappbrowser-nitro.nitro.ts
+++ b/src/specs/inappbrowser-nitro.nitro.ts
@@ -6,34 +6,32 @@ import type {
InAppBrowserResult,
} from '../types'
+/**
+ * Native bridge spec consumed by Nitrogen to generate the iOS (Swift) and
+ * Android (Kotlin) hybrid object scaffolding.
+ *
+ * @internal Application code should use the imperative API exported from the
+ * package root (`open`, `openAuth`, `close`, `closeAuth`, `isAvailable`) or
+ * the {@link useInAppBrowser} hook — not this interface directly.
+ */
export interface InappbrowserNitro
extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
- /**
- * Report whether the Native runtime can present an in-app browser.
- */
+ /** Report whether the native runtime can present an in-app browser. */
isAvailable(): Promise
- /**
- * Present an in-app browser with the supplied configuration.
- */
+ /** Present an in-app browser with the supplied configuration. */
open(url: string, options?: InAppBrowserOptions): Promise
- /**
- * Launch an authentication flow and resolve with the redirect payload.
- */
+ /** Launch an authentication flow and resolve with the redirect payload. */
openAuth(
url: string,
redirectUrl: string,
options?: InAppBrowserOptions
): Promise
- /**
- * Close any visible browser session.
- */
+ /** Close any visible browser session. */
close(): Promise
- /**
- * Dismiss an ongoing authentication session.
- */
+ /** Dismiss an ongoing authentication session. */
closeAuth(): Promise
}
diff --git a/src/types.ts b/src/types.ts
index ca402fe..57c737d 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,7 +1,23 @@
// src/types.ts
+//
+// All enum-like constants below are exported as both a frozen `as const` value
+// AND a matching string-literal type. Consumers using only the type
+// (`import type { BrowserResultType }`) tree-shake the runtime const out
+// thanks to `"sideEffects": false` on the package, while value-style
+// consumers (`BrowserResultType.Success`) keep working unchanged.
/**
* Discrete result types returned by the native browser implementations.
+ *
+ * @example Value form
+ * ```ts
+ * if (result.type === BrowserResultType.Success) { … }
+ * ```
+ * @example Type-only form (smaller bundle)
+ * ```ts
+ * import type { BrowserResultType } from 'react-native-inappbrowser-nitro'
+ * const t: BrowserResultType = 'success'
+ * ```
*/
export const BrowserResultType = {
/** User actively dismissed the browser (tap on Done/Close/back). */
@@ -17,6 +33,7 @@ export type BrowserResultType =
/**
* iOS dismiss button appearance options.
+ * @platform ios
*/
export const DismissButtonStyle = {
Done: 'done',
@@ -29,6 +46,7 @@ export type DismissButtonStyle =
/**
* iOS presentation styles exposed by Safari Services.
+ * @platform ios
*/
export const ModalPresentationStyle = {
Automatic: 'automatic',
@@ -48,6 +66,7 @@ export type ModalPresentationStyle =
/**
* iOS transition styles available when presenting Safari.
+ * @platform ios
*/
export const ModalTransitionStyle = {
CoverVertical: 'coverVertical',
@@ -61,6 +80,7 @@ export type ModalTransitionStyle =
/**
* Android Custom Tabs color scheme modes.
+ * @platform android
*/
export const BrowserColorScheme = {
System: 'system',
@@ -73,6 +93,7 @@ export type BrowserColorScheme =
/**
* Android Custom Tabs share state visibility.
+ * @platform android
*/
export const BrowserShareState = {
Default: 'default',
@@ -83,6 +104,10 @@ export const BrowserShareState = {
export type BrowserShareState =
(typeof BrowserShareState)[keyof typeof BrowserShareState]
+/**
+ * iOS status bar appearance applied while the browser is presented.
+ * @platform ios
+ */
export const StatusBarStyle = {
Default: 'default',
LightContent: 'lightContent',
@@ -92,6 +117,10 @@ export const StatusBarStyle = {
export type StatusBarStyle =
(typeof StatusBarStyle)[keyof typeof StatusBarStyle]
+/**
+ * iOS user interface style override (light / dark / unspecified).
+ * @platform ios
+ */
export const UserInterfaceStyle = {
Unspecified: 'unspecified',
Light: 'light',
@@ -103,6 +132,7 @@ export type UserInterfaceStyle =
/**
* Compact description of a color palette for light/dark/high-contrast modes.
+ * Each property accepts a `#RRGGBB` / `#AARRGGBB` string.
*/
export interface DynamicColor {
/** Primary color used regardless of theme (fallback). */
@@ -115,89 +145,160 @@ export interface DynamicColor {
highContrast?: string
}
-/**
- * Reader mode result sizing used when presenting as a form sheet.
- */
+/** Preferred content size when presenting Safari as a form sheet. */
export interface FormSheetContentSize {
+ /** Width in points. */
width: number
+ /** Height in points. */
height: number
}
/**
* iOS specific presentation and styling options.
+ * @platform ios
*/
export interface InAppBrowserIOSOptions {
+ /** Style used for the dismiss button in the Safari toolbar. */
dismissButtonStyle?: DismissButtonStyle
+ /**
+ * Tint color of the navigation/toolbar background.
+ *
+ * @remarks
+ * **iOS 26+:** Safari View Controller adopts the system Liquid Glass
+ * material for its toolbar, which samples the underlying content rather
+ * than rendering a flat fill. As a result this property has reduced or no
+ * visible effect on iOS 26 and later. Apple does not currently expose a
+ * public API to opt out of the glass material; the value is still
+ * forwarded to UIKit for backward compatibility.
+ */
preferredBarTintColor?: DynamicColor
+ /**
+ * Tint color of the toolbar buttons (e.g. Done, Share).
+ *
+ * @remarks
+ * **iOS 26+:** Control tinting is partially overridden by the Liquid Glass
+ * material's adaptive monochrome treatment. Custom tints may render with
+ * lower contrast than on iOS 18 and earlier.
+ */
preferredControlTintColor?: DynamicColor
+ /** Status bar style while the browser is presented. */
preferredStatusBarStyle?: StatusBarStyle
+ /** Open the URL in Safari Reader Mode if the page supports it. @default false */
readerMode?: boolean
+ /** Animate the present/dismiss transitions. @default true */
animated?: boolean
+ /** Modal presentation style. @default 'automatic' */
modalPresentationStyle?: ModalPresentationStyle
+ /** Modal transition style. @default 'coverVertical' */
modalTransitionStyle?: ModalTransitionStyle
+ /** Present the browser modally rather than pushing onto the navigation stack. @default true */
modalEnabled?: boolean
+ /** Allow the toolbar to collapse on scroll. @default true */
enableBarCollapsing?: boolean
+ /** Use an ephemeral (non-persistent) web session for `openAuth`. @default false */
ephemeralWebSession?: boolean
+ /** Allow swipe-from-edge to dismiss the browser. @default true */
enableEdgeDismiss?: boolean
+ /** Force a specific user interface style for the browser controller. */
overrideUserInterfaceStyle?: UserInterfaceStyle
+ /** Preferred content size when `modalPresentationStyle: 'formSheet'`. */
formSheetPreferredContentSize?: FormSheetContentSize
}
/**
* Declarative animation configuration for Android Custom Tabs.
+ * Each value is the resource name of an XML animation in the host app
+ * (e.g. `'slide_in_right'`).
+ * @platform android
*/
export interface BrowserAnimations {
+ /** Enter animation when the Custom Tab is launched. */
startEnter?: string
+ /** Exit animation applied to the previous activity when launching. */
startExit?: string
+ /** Enter animation applied to the previous activity on close. */
endEnter?: string
+ /** Exit animation when the Custom Tab is dismissed. */
endExit?: string
}
/**
* Android specific presentation and styling options.
+ * @platform android
*/
export interface InAppBrowserAndroidOptions {
+ /** Show the page title beneath the URL bar. @default false */
showTitle?: boolean
+ /** Color of the toolbar background. */
toolbarColor?: DynamicColor
+ /** Color of the secondary (bottom) toolbar background. */
secondaryToolbarColor?: DynamicColor
+ /** Color of the system navigation bar. */
navigationBarColor?: DynamicColor
+ /** Color of the divider between content and navigation bar. */
navigationBarDividerColor?: DynamicColor
+ /** Hide the URL bar on scroll. @default false */
enableUrlBarHiding?: boolean
+ /** Show the system Share menu item. @default false */
enableDefaultShare?: boolean
+ /** Override the default share menu visibility. */
shareState?: BrowserShareState
+ /** Color scheme applied to the Custom Tab. */
colorScheme?: BrowserColorScheme
+ /** Custom HTTP headers forwarded to the initial request. */
headers?: Record
+ /** Force-close the tab when the redirect URL is matched (auth flows). @default false */
forceCloseOnRedirection?: boolean
+ /** Show a back arrow instead of an "X" close button. @default false */
hasBackButton?: boolean
+ /** Explicit browser package name (e.g. `'com.android.chrome'`). */
browserPackage?: string
+ /** Keep the Custom Tab in Recents after closing. @default true */
showInRecents?: boolean
+ /** Send the host app's package name as Referrer. @default false */
includeReferrer?: boolean
+ /** Allow Instant Apps to handle the URL when supported. @default true */
instantAppsEnabled?: boolean
+ /** Enable swipe-down pull-to-refresh inside the tab. @default false */
enablePullToRefresh?: boolean
+ /** Show the tab as a partial bottom sheet (Android 13+). @default false */
enablePartialCustomTab?: boolean
+ /** Custom enter/exit animations. */
animations?: BrowserAnimations
}
/**
- * Aggregated cross-platform options.
+ * Aggregated cross-platform options. iOS-only fields are ignored on Android
+ * and vice versa.
+ *
+ * @example
+ * ```ts
+ * await open('https://example.com', {
+ * preferredBarTintColor: { light: '#FFFFFF', dark: '#000000' },
+ * toolbarColor: { light: '#FFFFFF', dark: '#000000' },
+ * readerMode: true,
+ * })
+ * ```
*/
export interface InAppBrowserOptions
extends InAppBrowserIOSOptions,
InAppBrowserAndroidOptions {}
-/**
- * Result payload returned by imperative API calls.
- */
+/** Result payload returned by imperative API calls. */
export interface InAppBrowserResult {
+ /** Discriminator describing how the browser was closed. */
type: BrowserResultType
+ /** Final URL captured from the browser session, when applicable. */
url?: string
+ /** Optional human-readable reason (e.g. error message on `dismiss`). */
message?: string
}
/**
* Authentication result payload.
- * Semantically identical to {@link InAppBrowserResult}; declared as a
- * distinct interface so hover/go-to-definition reads as `InAppBrowserAuthResult`
- * at call sites.
+ *
+ * Semantically identical to {@link InAppBrowserResult}, but declared as a
+ * distinct interface so Nitrogen emits a dedicated Swift/Kotlin type and
+ * call sites read as `InAppBrowserAuthResult` in IDE tooltips.
*/
export interface InAppBrowserAuthResult extends InAppBrowserResult {}
diff --git a/src/utils/options.ts b/src/utils/options.ts
index a42a63a..862e742 100644
--- a/src/utils/options.ts
+++ b/src/utils/options.ts
@@ -11,27 +11,6 @@ import type {
const compact = (obj: T): T | undefined =>
Object.keys(obj).length > 0 ? obj : undefined
-/**
- * Copy whitelisted string fields from `source` into a new object, trimming
- * each value and dropping empty or non-string entries.
- */
-const trimStringFields = (
- source: T,
- keys: readonly (keyof T)[]
-): Partial => {
- const out: Partial = {}
- for (const key of keys) {
- const value = source[key]
- if (typeof value === 'string') {
- const trimmed = value.trim()
- if (trimmed) {
- out[key] = trimmed as T[keyof T]
- }
- }
- }
- return out
-}
-
const DYNAMIC_COLOR_KEYS = [
'base',
'light',
@@ -46,41 +25,89 @@ const ANIMATION_KEYS = [
'endExit',
] as const satisfies readonly (keyof BrowserAnimations)[]
-const sanitizeColor = (value: DynamicColor): DynamicColor | undefined =>
- compact(trimStringFields(value, DYNAMIC_COLOR_KEYS))
+/**
+ * Whitelist-trim string fields. Returns `null` when the input was already
+ * bridge-safe (caller can keep its original reference); otherwise returns the
+ * new payload (or `undefined` when every entry was dropped).
+ *
+ * "Bridge-safe" means: every own property is a non-empty trimmed string AND
+ * is in the whitelist. Any explicit `undefined`, non-string value, or extra
+ * enumerable key forces a fresh object so the value crossing JSI is clean.
+ */
+const trimStringFields = (
+ source: T,
+ keys: readonly (keyof T)[]
+): T | undefined | null => {
+ const ownKeyCount = Object.keys(source).length
+ let out: Partial | null = null
+ let mutated = false
+ let kept = 0
-const sanitizeAnimations = (
- value: BrowserAnimations
-): BrowserAnimations | undefined =>
- compact(trimStringFields(value, ANIMATION_KEYS))
+ for (const key of keys) {
+ const value = source[key]
+ if (typeof value !== 'string') {
+ // Any own non-string property (including explicit `undefined`) needs
+ // to be stripped before bridging.
+ if (key in source) mutated = true
+ continue
+ }
+ const trimmed = value.trim()
+ if (!trimmed) {
+ mutated = true
+ continue
+ }
+ if (trimmed !== value) mutated = true
+ if (out === null) out = {}
+ out[key] = trimmed as T[keyof T]
+ kept++
+ }
+
+ // Extra (non-whitelisted) own keys also require sanitization.
+ if (!mutated && kept === ownKeyCount) return null
+ return out ? (compact(out) as T | undefined) : undefined
+}
+
+const sanitizeColor = (value: DynamicColor) =>
+ trimStringFields(value, DYNAMIC_COLOR_KEYS)
+
+const sanitizeAnimations = (value: BrowserAnimations) =>
+ trimStringFields(value, ANIMATION_KEYS)
const sanitizeHeaders = (
headers: Record
-): Record | undefined => {
- const out: Record = {}
+): Record | undefined | null => {
+ let out: Record | null = null
+ let mutated = false
+
for (const key of Object.keys(headers)) {
const value = headers[key]
- if (typeof value !== 'string') continue
+ if (typeof value !== 'string') {
+ mutated = true
+ continue
+ }
const normalizedKey = key.trim()
- if (!normalizedKey) continue
+ if (!normalizedKey) {
+ mutated = true
+ continue
+ }
+ if (normalizedKey !== key) mutated = true
+ if (out === null) out = {}
out[normalizedKey] = value
}
- return compact(out)
+
+ if (!mutated) return null
+ return out ? compact(out) : undefined
}
-/**
- * Per-key normalizers. Each handler receives the raw value and returns the
- * sanitized value, or `undefined` to omit the field entirely.
- */
-type Normalizer = (
- value: NonNullable
-) => InAppBrowserOptions[K]
+type Sanitizer = (value: V) => V | undefined | null
-type NormalizerMap = {
- [K in keyof InAppBrowserOptions]?: Normalizer
+type SanitizerMap = {
+ [K in keyof InAppBrowserOptions]?: Sanitizer<
+ NonNullable
+ >
}
-const NORMALIZERS: NormalizerMap = {
+const SANITIZERS: SanitizerMap = {
preferredBarTintColor: sanitizeColor,
preferredControlTintColor: sanitizeColor,
toolbarColor: sanitizeColor,
@@ -95,27 +122,55 @@ const NORMALIZERS: NormalizerMap = {
* Remove `undefined`/`null` entries and sanitize nested values before the
* options object is bridged to the native hybrid module.
*
- * Fast path: when no options are supplied, returns `undefined` without any
- * allocations.
+ * Fast paths (zero allocations):
+ * - When no options are supplied, returns `undefined`.
+ * - When every field is already clean, returns the original `options` reference
+ * so consumers passing a stable object incur no GC churn per call.
*/
export const normalizeOptions = (
options?: InAppBrowserOptions
): InAppBrowserOptions | undefined => {
if (!options) return undefined
+ // Fast first pass: detect whether anything needs to change.
+ // Sanitizers return `null` only when the input is already bridge-safe
+ // (see `trimStringFields`), so `sanitizer(value) !== null` is a sound
+ // dirty-check predicate without needing a separate traversal.
+ let dirty = false
+ const keys = Object.keys(options)
+
+ for (const key of keys) {
+ const typedKey = key as keyof InAppBrowserOptions & string
+ const value = options[typedKey]
+ if (value === undefined || value === null) {
+ dirty = true
+ break
+ }
+ const sanitizer = SANITIZERS[typedKey] as Sanitizer | undefined
+ if (sanitizer && sanitizer(value) !== null) {
+ dirty = true
+ break
+ }
+ }
+
+ if (!dirty) return options
+
+ // Slow path: build a new object with sanitized values.
const out: InAppBrowserOptions = {}
- for (const key of Object.keys(options)) {
- const typedKey = key as keyof InAppBrowserOptions
+ for (const key of keys) {
+ const typedKey = key as keyof InAppBrowserOptions & string
const value = options[typedKey]
if (value === undefined || value === null) continue
- const normalizer = NORMALIZERS[typedKey] as
- | ((v: unknown) => unknown)
- | undefined
- const next = normalizer ? normalizer(value) : value
- if (next === undefined) continue
+ const sanitizer = SANITIZERS[typedKey] as Sanitizer | undefined
+ if (!sanitizer) {
+ ;(out as Record)[typedKey] = value
+ continue
+ }
- // Per-key correctness is guaranteed by the typed `NORMALIZERS` map above.
+ const sanitized = sanitizer(value)
+ const next = sanitized === null ? value : sanitized
+ if (next === undefined) continue
;(out as Record)[typedKey] = next
}
diff --git a/tsconfig.json b/tsconfig.json
index c3cc131..79e3cf8 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -25,8 +25,6 @@
"exclude": [
"**/node_modules",
"**/lib",
- "**/.eslintrc.js",
- "**/.prettierrc.js",
"**/jest.config.js",
"**/babel.config.js",
"**/metro.config.js",
diff --git a/yarn.lock b/yarn.lock
index 9cf9f26..cde4861 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,16 +5,6 @@ __metadata:
version: 8
cacheKey: 10c0
-"@actions/core@npm:^1.10.0":
- version: 1.11.1
- resolution: "@actions/core@npm:1.11.1"
- dependencies:
- "@actions/exec": "npm:^1.1.1"
- "@actions/http-client": "npm:^2.0.1"
- checksum: 10c0/9aa30b397d8d0dbc74e69fe46b23fb105cab989beb420c57eacbfc51c6804abe8da0f46973ca9f639d532ea4c096d0f4d37da0223fbe94f304fa3c5f53537c30
- languageName: node
- linkType: hard
-
"@actions/core@npm:^3.0.0":
version: 3.0.1
resolution: "@actions/core@npm:3.0.1"
@@ -25,15 +15,6 @@ __metadata:
languageName: node
linkType: hard
-"@actions/exec@npm:^1.1.1":
- version: 1.1.1
- resolution: "@actions/exec@npm:1.1.1"
- dependencies:
- "@actions/io": "npm:^1.0.1"
- checksum: 10c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a
- languageName: node
- linkType: hard
-
"@actions/exec@npm:^3.0.0":
version: 3.0.0
resolution: "@actions/exec@npm:3.0.0"
@@ -43,16 +24,6 @@ __metadata:
languageName: node
linkType: hard
-"@actions/http-client@npm:^2.0.1":
- version: 2.2.3
- resolution: "@actions/http-client@npm:2.2.3"
- dependencies:
- tunnel: "npm:^0.0.6"
- undici: "npm:^5.25.4"
- checksum: 10c0/13141b66a42aa4afd8c50f7479e13a5cdb5084ccb3c73ec48894b8029743389a3d2bf8cdc18e23fb70cd33995740526dd308815613907571e897c3aa1e5eada6
- languageName: node
- linkType: hard
-
"@actions/http-client@npm:^4.0.0":
version: 4.0.1
resolution: "@actions/http-client@npm:4.0.1"
@@ -63,13 +34,6 @@ __metadata:
languageName: node
linkType: hard
-"@actions/io@npm:^1.0.1":
- version: 1.1.3
- resolution: "@actions/io@npm:1.1.3"
- checksum: 10c0/5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e
- languageName: node
- linkType: hard
-
"@actions/io@npm:^3.0.2":
version: 3.0.2
resolution: "@actions/io@npm:3.0.2"
@@ -111,7 +75,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/core@npm:^7.24.4, @babel/core@npm:^7.25.2, @babel/core@npm:^7.29.0":
+"@babel/core@npm:^7.25.2, @babel/core@npm:^7.29.0":
version: 7.29.0
resolution: "@babel/core@npm:7.29.0"
dependencies:
@@ -134,20 +98,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/eslint-parser@npm:^7.25.1":
- version: 7.28.6
- resolution: "@babel/eslint-parser@npm:7.28.6"
- dependencies:
- "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1"
- eslint-visitor-keys: "npm:^2.1.0"
- semver: "npm:^6.3.1"
- peerDependencies:
- "@babel/core": ^7.11.0
- eslint: ^7.5.0 || ^8.0.0 || ^9.0.0
- checksum: 10c0/58a85f67a056ba8389978c4654b690b890a6dcd19aa9655c5d7d9349a0c25f124cabad8a190b6bf7045a063aeee1b8e2ab23cfe4d8fa0e0517716a8b70e758bc
- languageName: node
- linkType: hard
-
"@babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1":
version: 7.29.1
resolution: "@babel/generator@npm:7.29.1"
@@ -362,7 +312,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0":
+"@babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0":
version: 7.29.2
resolution: "@babel/parser@npm:7.29.2"
dependencies:
@@ -1446,7 +1396,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0, @babel/types@npm:^7.4.4":
+"@babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0, @babel/types@npm:^7.4.4":
version: 7.29.0
resolution: "@babel/types@npm:7.29.0"
dependencies:
@@ -1456,18 +1406,18 @@ __metadata:
languageName: node
linkType: hard
-"@biomejs/biome@npm:^2.4.12":
- version: 2.4.12
- resolution: "@biomejs/biome@npm:2.4.12"
+"@biomejs/biome@npm:^2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/biome@npm:2.4.13"
dependencies:
- "@biomejs/cli-darwin-arm64": "npm:2.4.12"
- "@biomejs/cli-darwin-x64": "npm:2.4.12"
- "@biomejs/cli-linux-arm64": "npm:2.4.12"
- "@biomejs/cli-linux-arm64-musl": "npm:2.4.12"
- "@biomejs/cli-linux-x64": "npm:2.4.12"
- "@biomejs/cli-linux-x64-musl": "npm:2.4.12"
- "@biomejs/cli-win32-arm64": "npm:2.4.12"
- "@biomejs/cli-win32-x64": "npm:2.4.12"
+ "@biomejs/cli-darwin-arm64": "npm:2.4.13"
+ "@biomejs/cli-darwin-x64": "npm:2.4.13"
+ "@biomejs/cli-linux-arm64": "npm:2.4.13"
+ "@biomejs/cli-linux-arm64-musl": "npm:2.4.13"
+ "@biomejs/cli-linux-x64": "npm:2.4.13"
+ "@biomejs/cli-linux-x64-musl": "npm:2.4.13"
+ "@biomejs/cli-win32-arm64": "npm:2.4.13"
+ "@biomejs/cli-win32-x64": "npm:2.4.13"
dependenciesMeta:
"@biomejs/cli-darwin-arm64":
optional: true
@@ -1487,62 +1437,62 @@ __metadata:
optional: true
bin:
biome: bin/biome
- checksum: 10c0/8f03b07f33d7e1efee615945cdc907b7fdc9160d70b204a74ce1b65bdf0ca47c7bfe5e2fafd5b832927f0d4bee4ae3182d93e603e3e5ecf5d91734cff888133b
+ checksum: 10c0/a8c09d7c05d834243a76704e31bda05346d2a06a75e90e6de2ef0d4edc33bd7d382b380bad9275ddd379e9e44ceaea9907a9c0de2156859b36b057c155f20a0e
languageName: node
linkType: hard
-"@biomejs/cli-darwin-arm64@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-darwin-arm64@npm:2.4.12"
+"@biomejs/cli-darwin-arm64@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-darwin-arm64@npm:2.4.13"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@biomejs/cli-darwin-x64@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-darwin-x64@npm:2.4.12"
+"@biomejs/cli-darwin-x64@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-darwin-x64@npm:2.4.13"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@biomejs/cli-linux-arm64-musl@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-linux-arm64-musl@npm:2.4.12"
+"@biomejs/cli-linux-arm64-musl@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-linux-arm64-musl@npm:2.4.13"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@biomejs/cli-linux-arm64@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-linux-arm64@npm:2.4.12"
+"@biomejs/cli-linux-arm64@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-linux-arm64@npm:2.4.13"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@biomejs/cli-linux-x64-musl@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-linux-x64-musl@npm:2.4.12"
+"@biomejs/cli-linux-x64-musl@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-linux-x64-musl@npm:2.4.13"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@biomejs/cli-linux-x64@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-linux-x64@npm:2.4.12"
+"@biomejs/cli-linux-x64@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-linux-x64@npm:2.4.13"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@biomejs/cli-win32-arm64@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-win32-arm64@npm:2.4.12"
+"@biomejs/cli-win32-arm64@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-win32-arm64@npm:2.4.13"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@biomejs/cli-win32-x64@npm:2.4.12":
- version: 2.4.12
- resolution: "@biomejs/cli-win32-x64@npm:2.4.12"
+"@biomejs/cli-win32-x64@npm:2.4.13":
+ version: 2.4.13
+ resolution: "@biomejs/cli-win32-x64@npm:2.4.13"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -1554,31 +1504,6 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/eslint-utils@npm:^4.9.1":
- version: 4.9.1
- resolution: "@eslint-community/eslint-utils@npm:4.9.1"
- dependencies:
- eslint-visitor-keys: "npm:^3.4.3"
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02
- languageName: node
- linkType: hard
-
-"@eslint-community/regexpp@npm:^4.12.2":
- version: 4.12.2
- resolution: "@eslint-community/regexpp@npm:4.12.2"
- checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d
- languageName: node
- linkType: hard
-
-"@fastify/busboy@npm:^2.0.0":
- version: 2.1.1
- resolution: "@fastify/busboy@npm:2.1.1"
- checksum: 10c0/6f8027a8cba7f8f7b736718b013f5a38c0476eea67034c94a0d3c375e2b114366ad4419e6a6fa7ffc2ef9c6d3e0435d76dd584a7a1cbac23962fda7650b579e3
- languageName: node
- linkType: hard
-
"@gar/promise-retry@npm:^1.0.0, @gar/promise-retry@npm:^1.0.2":
version: 1.0.3
resolution: "@gar/promise-retry@npm:1.0.3"
@@ -1625,15 +1550,6 @@ __metadata:
languageName: node
linkType: hard
-"@jamesacarr/eslint-formatter-github-actions@npm:^0.2.0":
- version: 0.2.0
- resolution: "@jamesacarr/eslint-formatter-github-actions@npm:0.2.0"
- dependencies:
- "@actions/core": "npm:^1.10.0"
- checksum: 10c0/601a5b8bf86a680378de9363444e7a472b182b7a813845945d7c263ecbe086a1544abf431134307bd422da56df007cfa5c40cf5dfa2b86be07655fa8c9ec6649
- languageName: node
- linkType: hard
-
"@jest/diff-sequences@npm:30.3.0":
version: 30.3.0
resolution: "@jest/diff-sequences@npm:30.3.0"
@@ -1768,15 +1684,6 @@ __metadata:
languageName: node
linkType: hard
-"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1":
- version: 5.1.1-v1
- resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1"
- dependencies:
- eslint-scope: "npm:5.1.1"
- checksum: 10c0/75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74
- languageName: node
- linkType: hard
-
"@nodable/entities@npm:^2.1.0":
version: 2.1.0
resolution: "@nodable/entities@npm:2.1.0"
@@ -2475,36 +2382,6 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/eslint-config@npm:0.85.2":
- version: 0.85.2
- resolution: "@react-native/eslint-config@npm:0.85.2"
- dependencies:
- "@babel/core": "npm:^7.25.2"
- "@babel/eslint-parser": "npm:^7.25.1"
- "@react-native/eslint-plugin": "npm:0.85.2"
- "@typescript-eslint/eslint-plugin": "npm:^8.36.0"
- "@typescript-eslint/parser": "npm:^8.36.0"
- eslint-config-prettier: "npm:^8.5.0"
- eslint-plugin-eslint-comments: "npm:^3.2.0"
- eslint-plugin-ft-flow: "npm:^2.0.1"
- eslint-plugin-jest: "npm:^29.0.1"
- eslint-plugin-react: "npm:^7.37.5"
- eslint-plugin-react-hooks: "npm:^7.0.1"
- eslint-plugin-react-native: "npm:^5.0.0"
- peerDependencies:
- eslint: ^8.0.0 || ^9.0.0
- prettier: ">=2"
- checksum: 10c0/ad8f4e699650e81a4e8fe234aa74c5d9447747e68e83d0a635db44154e7b6ad6a7db4ffb07d2c7e0356d30cfd164f707fd5a94557f7582846de1e89e1877ae4e
- languageName: node
- linkType: hard
-
-"@react-native/eslint-plugin@npm:0.85.2":
- version: 0.85.2
- resolution: "@react-native/eslint-plugin@npm:0.85.2"
- checksum: 10c0/86b7e5e5cd948f31312a0949979e8f6a0188ef42ca038c4e6949d0896e728c4fcf4469cce84d74384345ac5f911a5d6cf59849e2a1ab0c1d63849ab78633d3ef
- languageName: node
- linkType: hard
-
"@react-native/gradle-plugin@npm:0.85.2":
version: 0.85.2
resolution: "@react-native/gradle-plugin@npm:0.85.2"
@@ -2967,141 +2844,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/eslint-plugin@npm:^8.36.0":
- version: 8.59.0
- resolution: "@typescript-eslint/eslint-plugin@npm:8.59.0"
- dependencies:
- "@eslint-community/regexpp": "npm:^4.12.2"
- "@typescript-eslint/scope-manager": "npm:8.59.0"
- "@typescript-eslint/type-utils": "npm:8.59.0"
- "@typescript-eslint/utils": "npm:8.59.0"
- "@typescript-eslint/visitor-keys": "npm:8.59.0"
- ignore: "npm:^7.0.5"
- natural-compare: "npm:^1.4.0"
- ts-api-utils: "npm:^2.5.0"
- peerDependencies:
- "@typescript-eslint/parser": ^8.59.0
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: ">=4.8.4 <6.1.0"
- checksum: 10c0/f98171ecad6a5106fe978df155f4b65a72dfdadfcd663651b633b61480b543e74796baa224a1393e323f9514901604fe6302323c4b80b79f7a98512a01bc6461
- languageName: node
- linkType: hard
-
-"@typescript-eslint/parser@npm:^8.36.0":
- version: 8.59.0
- resolution: "@typescript-eslint/parser@npm:8.59.0"
- dependencies:
- "@typescript-eslint/scope-manager": "npm:8.59.0"
- "@typescript-eslint/types": "npm:8.59.0"
- "@typescript-eslint/typescript-estree": "npm:8.59.0"
- "@typescript-eslint/visitor-keys": "npm:8.59.0"
- debug: "npm:^4.4.3"
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: ">=4.8.4 <6.1.0"
- checksum: 10c0/996a7b43f8a515ebbd06455c9f53065c561c8519bc4f634d6783b92832aa69e47945478d1601a87582f9f7b303becc172d5d7f776e201b2a2d375bc762ad4015
- languageName: node
- linkType: hard
-
-"@typescript-eslint/project-service@npm:8.59.0":
- version: 8.59.0
- resolution: "@typescript-eslint/project-service@npm:8.59.0"
- dependencies:
- "@typescript-eslint/tsconfig-utils": "npm:^8.59.0"
- "@typescript-eslint/types": "npm:^8.59.0"
- debug: "npm:^4.4.3"
- peerDependencies:
- typescript: ">=4.8.4 <6.1.0"
- checksum: 10c0/ffba9595a427235bbeb0e5c7db3486f8d01dd8f8686964b4f82084e82008c49b897d01c4d331f33a9ce29edae70a9286f6fdedec4bf9037d732d9c9e86ebc7ea
- languageName: node
- linkType: hard
-
-"@typescript-eslint/scope-manager@npm:8.59.0":
- version: 8.59.0
- resolution: "@typescript-eslint/scope-manager@npm:8.59.0"
- dependencies:
- "@typescript-eslint/types": "npm:8.59.0"
- "@typescript-eslint/visitor-keys": "npm:8.59.0"
- checksum: 10c0/d372f08be190d01e6d237932dc0d77808a9dc0a34fe8f690a3eac496d6e2f93c030c6ccb5000b35e825a6cfc4d9ca69a00f2ccda334115a9865a9d02cd603e52
- languageName: node
- linkType: hard
-
-"@typescript-eslint/tsconfig-utils@npm:8.59.0, @typescript-eslint/tsconfig-utils@npm:^8.59.0":
- version: 8.59.0
- resolution: "@typescript-eslint/tsconfig-utils@npm:8.59.0"
- peerDependencies:
- typescript: ">=4.8.4 <6.1.0"
- checksum: 10c0/ab482c22f23774d24b3048c9fcdc5e0b94137064b3af901f4b0327da2270c2b2961c19165ccf8bdeaedfa83138be98c5cd8edcdc89deb6187baf6438cd8584b0
- languageName: node
- linkType: hard
-
-"@typescript-eslint/type-utils@npm:8.59.0":
- version: 8.59.0
- resolution: "@typescript-eslint/type-utils@npm:8.59.0"
- dependencies:
- "@typescript-eslint/types": "npm:8.59.0"
- "@typescript-eslint/typescript-estree": "npm:8.59.0"
- "@typescript-eslint/utils": "npm:8.59.0"
- debug: "npm:^4.4.3"
- ts-api-utils: "npm:^2.5.0"
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: ">=4.8.4 <6.1.0"
- checksum: 10c0/e2f2176a9bce81c19b53accf4e9189c60b1b84717cf129a6d003a2271019e30d410d2ccdc0fc6a37cbb8274a1b297d7d30a116189110f9d24a86391ee24a9fef
- languageName: node
- linkType: hard
-
-"@typescript-eslint/types@npm:8.59.0, @typescript-eslint/types@npm:^8.59.0":
- version: 8.59.0
- resolution: "@typescript-eslint/types@npm:8.59.0"
- checksum: 10c0/2750b1e21290dffe90a424fe05c2bab701f60a7b51b5e0921ed14bb1a5fc29ff3fe8f286817d2287e93ff78e33e6626f6ce26d0bc79a729bd608deda77a9bdde
- languageName: node
- linkType: hard
-
-"@typescript-eslint/typescript-estree@npm:8.59.0":
- version: 8.59.0
- resolution: "@typescript-eslint/typescript-estree@npm:8.59.0"
- dependencies:
- "@typescript-eslint/project-service": "npm:8.59.0"
- "@typescript-eslint/tsconfig-utils": "npm:8.59.0"
- "@typescript-eslint/types": "npm:8.59.0"
- "@typescript-eslint/visitor-keys": "npm:8.59.0"
- debug: "npm:^4.4.3"
- minimatch: "npm:^10.2.2"
- semver: "npm:^7.7.3"
- tinyglobby: "npm:^0.2.15"
- ts-api-utils: "npm:^2.5.0"
- peerDependencies:
- typescript: ">=4.8.4 <6.1.0"
- checksum: 10c0/82d3dfb4de591d9a39d2c4dafc13f14b4940f5b116fb3db311935137aa7e34c9dce3209aaeace118070847b2355df7c185ff1e0f2a36232c3aea9b5fa2652f98
- languageName: node
- linkType: hard
-
-"@typescript-eslint/utils@npm:8.59.0, @typescript-eslint/utils@npm:^8.0.0":
- version: 8.59.0
- resolution: "@typescript-eslint/utils@npm:8.59.0"
- dependencies:
- "@eslint-community/eslint-utils": "npm:^4.9.1"
- "@typescript-eslint/scope-manager": "npm:8.59.0"
- "@typescript-eslint/types": "npm:8.59.0"
- "@typescript-eslint/typescript-estree": "npm:8.59.0"
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: ">=4.8.4 <6.1.0"
- checksum: 10c0/eca4e5a18ae8e8c4360b05758fa142465daef3a9dffe4d78b15607b4680698eece96f899bce1e8d83427da74ddfbca80a95456727b8b9239816528978180b047
- languageName: node
- linkType: hard
-
-"@typescript-eslint/visitor-keys@npm:8.59.0":
- version: 8.59.0
- resolution: "@typescript-eslint/visitor-keys@npm:8.59.0"
- dependencies:
- "@typescript-eslint/types": "npm:8.59.0"
- eslint-visitor-keys: "npm:^5.0.0"
- checksum: 10c0/09ec24c9c9d0a3ccb57bb2ab3dfd8deca124339aba6621503285c22765a4dfc89bf3d31e337dd647b1cdf89bac384e3a62e0f5b8c1d5a93d16d1f417144e3226
- languageName: node
- linkType: hard
-
"@vscode/sudo-prompt@npm:^9.0.0":
version: 9.3.2
resolution: "@vscode/sudo-prompt@npm:9.3.2"
@@ -3254,7 +2996,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-styles@npm:^6.2.1":
+"ansi-styles@npm:^6.2.1, ansi-styles@npm:^6.2.3":
version: 6.2.3
resolution: "ansi-styles@npm:6.2.3"
checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868
@@ -3323,16 +3065,6 @@ __metadata:
languageName: node
linkType: hard
-"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2":
- version: 1.0.2
- resolution: "array-buffer-byte-length@npm:1.0.2"
- dependencies:
- call-bound: "npm:^1.0.3"
- is-array-buffer: "npm:^3.0.5"
- checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d
- languageName: node
- linkType: hard
-
"array-ify@npm:^1.0.0":
version: 1.0.0
resolution: "array-ify@npm:1.0.0"
@@ -3340,88 +3072,6 @@ __metadata:
languageName: node
linkType: hard
-"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8":
- version: 3.1.9
- resolution: "array-includes@npm:3.1.9"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.4"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.24.0"
- es-object-atoms: "npm:^1.1.1"
- get-intrinsic: "npm:^1.3.0"
- is-string: "npm:^1.1.1"
- math-intrinsics: "npm:^1.1.0"
- checksum: 10c0/0235fa69078abeac05ac4250699c44996bc6f774a9cbe45db48674ce6bd142f09b327d31482ff75cf03344db4ea03eae23edb862d59378b484b47ed842574856
- languageName: node
- linkType: hard
-
-"array.prototype.findlast@npm:^1.2.5":
- version: 1.2.5
- resolution: "array.prototype.findlast@npm:1.2.5"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.2"
- es-errors: "npm:^1.3.0"
- es-object-atoms: "npm:^1.0.0"
- es-shim-unscopables: "npm:^1.0.2"
- checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775
- languageName: node
- linkType: hard
-
-"array.prototype.flat@npm:^1.3.1":
- version: 1.3.3
- resolution: "array.prototype.flat@npm:1.3.3"
- dependencies:
- call-bind: "npm:^1.0.8"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.5"
- es-shim-unscopables: "npm:^1.0.2"
- checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a
- languageName: node
- linkType: hard
-
-"array.prototype.flatmap@npm:^1.3.3":
- version: 1.3.3
- resolution: "array.prototype.flatmap@npm:1.3.3"
- dependencies:
- call-bind: "npm:^1.0.8"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.5"
- es-shim-unscopables: "npm:^1.0.2"
- checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54
- languageName: node
- linkType: hard
-
-"array.prototype.tosorted@npm:^1.1.4":
- version: 1.1.4
- resolution: "array.prototype.tosorted@npm:1.1.4"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.3"
- es-errors: "npm:^1.3.0"
- es-shim-unscopables: "npm:^1.0.2"
- checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943
- languageName: node
- linkType: hard
-
-"arraybuffer.prototype.slice@npm:^1.0.4":
- version: 1.0.4
- resolution: "arraybuffer.prototype.slice@npm:1.0.4"
- dependencies:
- array-buffer-byte-length: "npm:^1.0.1"
- call-bind: "npm:^1.0.8"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.5"
- es-errors: "npm:^1.3.0"
- get-intrinsic: "npm:^1.2.6"
- is-array-buffer: "npm:^3.0.4"
- checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06
- languageName: node
- linkType: hard
-
"asap@npm:~2.0.6":
version: 2.0.6
resolution: "asap@npm:2.0.6"
@@ -3457,15 +3107,6 @@ __metadata:
languageName: node
linkType: hard
-"available-typed-arrays@npm:^1.0.7":
- version: 1.0.7
- resolution: "available-typed-arrays@npm:1.0.7"
- dependencies:
- possible-typed-array-names: "npm:^1.0.0"
- checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2
- languageName: node
- linkType: hard
-
"babel-plugin-module-resolver@npm:^5.0.3":
version: 5.0.3
resolution: "babel-plugin-module-resolver@npm:5.0.3"
@@ -3527,6 +3168,15 @@ __metadata:
languageName: node
linkType: hard
+"babel-plugin-react-compiler@npm:^19.1.0-rc.3":
+ version: 19.1.0-rc.3
+ resolution: "babel-plugin-react-compiler@npm:19.1.0-rc.3"
+ dependencies:
+ "@babel/types": "npm:^7.26.0"
+ checksum: 10c0/6811500cf81a309f104ec1de3fa9336932a1105e3c0e747b81a1d12e80c2cd4f531f7c42ec4441f96527ee20e19342af58d958241061d47a02b0d8bee66fbe35
+ languageName: node
+ linkType: hard
+
"babel-plugin-syntax-hermes-parser@npm:0.33.3":
version: 0.33.3
resolution: "babel-plugin-syntax-hermes-parser@npm:0.33.3"
@@ -3646,16 +3296,6 @@ __metadata:
languageName: node
linkType: hard
-"brace-expansion@npm:^1.1.7":
- version: 1.1.14
- resolution: "brace-expansion@npm:1.1.14"
- dependencies:
- balanced-match: "npm:^1.0.0"
- concat-map: "npm:0.0.1"
- checksum: 10c0/b6fdac832bc4e36a753658c9ed052c2e1a2be221763b002df25d1efbf7d21724334e726a6cd5eadc72a4b19ec3efb632d629cc003bc9c62f7af7a7915ffa4385
- languageName: node
- linkType: hard
-
"brace-expansion@npm:^2.0.1":
version: 2.1.0
resolution: "brace-expansion@npm:2.1.0"
@@ -3759,19 +3399,7 @@ __metadata:
languageName: node
linkType: hard
-"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8, call-bind@npm:^1.0.9":
- version: 1.0.9
- resolution: "call-bind@npm:1.0.9"
- dependencies:
- call-bind-apply-helpers: "npm:^1.0.2"
- es-define-property: "npm:^1.0.1"
- get-intrinsic: "npm:^1.3.0"
- set-function-length: "npm:^1.2.2"
- checksum: 10c0/a6621f6da1444481919ce3b4983dff725691e0754d3507ae483ce56e54985f2da7d6f1df512c56dbf28660745cf1ca52553f1fc9aef5557f3ce353ef14fab714
- languageName: node
- linkType: hard
-
-"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4":
+"call-bound@npm:^1.0.2":
version: 1.0.4
resolution: "call-bound@npm:1.0.4"
dependencies:
@@ -3931,6 +3559,15 @@ __metadata:
languageName: node
linkType: hard
+"cli-cursor@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "cli-cursor@npm:5.0.0"
+ dependencies:
+ restore-cursor: "npm:^5.0.0"
+ checksum: 10c0/7ec62f69b79f6734ab209a3e4dbdc8af7422d44d360a7cb1efa8a0887bbe466a6e625650c466fe4359aee44dbe2dc0b6994b583d40a05d0808a5cb193641d220
+ languageName: node
+ linkType: hard
+
"cli-highlight@npm:^2.1.11":
version: 2.1.11
resolution: "cli-highlight@npm:2.1.11"
@@ -3967,6 +3604,16 @@ __metadata:
languageName: node
linkType: hard
+"cli-truncate@npm:^5.0.0":
+ version: 5.2.0
+ resolution: "cli-truncate@npm:5.2.0"
+ dependencies:
+ slice-ansi: "npm:^8.0.0"
+ string-width: "npm:^8.2.0"
+ checksum: 10c0/0d4ec94702ca85b64522ac93633837fb5ea7db17b79b1322a60f6045e6ae2b8cd7bd4c1d19ac7d1f9e10e3bbda1112e172e439b68c02b785ee00da8d6a5c5471
+ languageName: node
+ linkType: hard
+
"cliui@npm:^6.0.0":
version: 6.0.0
resolution: "cliui@npm:6.0.0"
@@ -4071,6 +3718,13 @@ __metadata:
languageName: node
linkType: hard
+"colorette@npm:^2.0.20":
+ version: 2.0.20
+ resolution: "colorette@npm:2.0.20"
+ checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40
+ languageName: node
+ linkType: hard
+
"command-exists@npm:^1.2.8":
version: 1.2.9
resolution: "command-exists@npm:1.2.9"
@@ -4085,6 +3739,13 @@ __metadata:
languageName: node
linkType: hard
+"commander@npm:^14.0.3":
+ version: 14.0.3
+ resolution: "commander@npm:14.0.3"
+ checksum: 10c0/755652564bbf56ff2ff083313912b326450d3f8d8c85f4b71416539c9a05c3c67dbd206821ca72635bf6b160e2afdefcb458e86b317827d5cb333b69ce7f1a24
+ languageName: node
+ linkType: hard
+
"commander@npm:^2.20.0":
version: 2.20.3
resolution: "commander@npm:2.20.3"
@@ -4140,13 +3801,6 @@ __metadata:
languageName: node
linkType: hard
-"concat-map@npm:0.0.1":
- version: 0.0.1
- resolution: "concat-map@npm:0.0.1"
- checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
- languageName: node
- linkType: hard
-
"config-chain@npm:^1.1.11":
version: 1.1.13
resolution: "config-chain@npm:1.1.13"
@@ -4311,39 +3965,6 @@ __metadata:
languageName: node
linkType: hard
-"data-view-buffer@npm:^1.0.2":
- version: 1.0.2
- resolution: "data-view-buffer@npm:1.0.2"
- dependencies:
- call-bound: "npm:^1.0.3"
- es-errors: "npm:^1.3.0"
- is-data-view: "npm:^1.0.2"
- checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c
- languageName: node
- linkType: hard
-
-"data-view-byte-length@npm:^1.0.2":
- version: 1.0.2
- resolution: "data-view-byte-length@npm:1.0.2"
- dependencies:
- call-bound: "npm:^1.0.3"
- es-errors: "npm:^1.3.0"
- is-data-view: "npm:^1.0.2"
- checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55
- languageName: node
- linkType: hard
-
-"data-view-byte-offset@npm:^1.0.1":
- version: 1.0.1
- resolution: "data-view-byte-offset@npm:1.0.1"
- dependencies:
- call-bound: "npm:^1.0.2"
- es-errors: "npm:^1.3.0"
- is-data-view: "npm:^1.0.1"
- checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4
- languageName: node
- linkType: hard
-
"dayjs@npm:^1.8.15":
version: 1.11.20
resolution: "dayjs@npm:1.11.20"
@@ -4414,28 +4035,6 @@ __metadata:
languageName: node
linkType: hard
-"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4":
- version: 1.1.4
- resolution: "define-data-property@npm:1.1.4"
- dependencies:
- es-define-property: "npm:^1.0.0"
- es-errors: "npm:^1.3.0"
- gopd: "npm:^1.0.1"
- checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37
- languageName: node
- linkType: hard
-
-"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1":
- version: 1.2.1
- resolution: "define-properties@npm:1.2.1"
- dependencies:
- define-data-property: "npm:^1.0.1"
- has-property-descriptors: "npm:^1.0.0"
- object-keys: "npm:^1.1.1"
- checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3
- languageName: node
- linkType: hard
-
"del@npm:^8.0.1":
version: 8.0.1
resolution: "del@npm:8.0.1"
@@ -4481,15 +4080,6 @@ __metadata:
languageName: node
linkType: hard
-"doctrine@npm:^2.1.0":
- version: 2.1.0
- resolution: "doctrine@npm:2.1.0"
- dependencies:
- esutils: "npm:^2.0.2"
- checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac
- languageName: node
- linkType: hard
-
"dot-prop@npm:^5.1.0":
version: 5.3.0
resolution: "dot-prop@npm:5.3.0"
@@ -4499,7 +4089,7 @@ __metadata:
languageName: node
linkType: hard
-"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1":
+"dunder-proto@npm:^1.0.1":
version: 1.0.1
resolution: "dunder-proto@npm:1.0.1"
dependencies:
@@ -4638,69 +4228,7 @@ __metadata:
languageName: node
linkType: hard
-"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.2":
- version: 1.24.2
- resolution: "es-abstract@npm:1.24.2"
- dependencies:
- array-buffer-byte-length: "npm:^1.0.2"
- arraybuffer.prototype.slice: "npm:^1.0.4"
- available-typed-arrays: "npm:^1.0.7"
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.4"
- data-view-buffer: "npm:^1.0.2"
- data-view-byte-length: "npm:^1.0.2"
- data-view-byte-offset: "npm:^1.0.1"
- es-define-property: "npm:^1.0.1"
- es-errors: "npm:^1.3.0"
- es-object-atoms: "npm:^1.1.1"
- es-set-tostringtag: "npm:^2.1.0"
- es-to-primitive: "npm:^1.3.0"
- function.prototype.name: "npm:^1.1.8"
- get-intrinsic: "npm:^1.3.0"
- get-proto: "npm:^1.0.1"
- get-symbol-description: "npm:^1.1.0"
- globalthis: "npm:^1.0.4"
- gopd: "npm:^1.2.0"
- has-property-descriptors: "npm:^1.0.2"
- has-proto: "npm:^1.2.0"
- has-symbols: "npm:^1.1.0"
- hasown: "npm:^2.0.2"
- internal-slot: "npm:^1.1.0"
- is-array-buffer: "npm:^3.0.5"
- is-callable: "npm:^1.2.7"
- is-data-view: "npm:^1.0.2"
- is-negative-zero: "npm:^2.0.3"
- is-regex: "npm:^1.2.1"
- is-set: "npm:^2.0.3"
- is-shared-array-buffer: "npm:^1.0.4"
- is-string: "npm:^1.1.1"
- is-typed-array: "npm:^1.1.15"
- is-weakref: "npm:^1.1.1"
- math-intrinsics: "npm:^1.1.0"
- object-inspect: "npm:^1.13.4"
- object-keys: "npm:^1.1.1"
- object.assign: "npm:^4.1.7"
- own-keys: "npm:^1.0.1"
- regexp.prototype.flags: "npm:^1.5.4"
- safe-array-concat: "npm:^1.1.3"
- safe-push-apply: "npm:^1.0.0"
- safe-regex-test: "npm:^1.1.0"
- set-proto: "npm:^1.0.0"
- stop-iteration-iterator: "npm:^1.1.0"
- string.prototype.trim: "npm:^1.2.10"
- string.prototype.trimend: "npm:^1.0.9"
- string.prototype.trimstart: "npm:^1.0.8"
- typed-array-buffer: "npm:^1.0.3"
- typed-array-byte-length: "npm:^1.0.3"
- typed-array-byte-offset: "npm:^1.0.4"
- typed-array-length: "npm:^1.0.7"
- unbox-primitive: "npm:^1.1.0"
- which-typed-array: "npm:^1.1.19"
- checksum: 10c0/67a5bf21ef5c7d775e6f6131a836323900b4d87194cf544394ac68fe31c57fa53828b978af4a4f551ef307f83a2f910a16b6b982760ad3ddc3dc471f98d5fd1b
- languageName: node
- linkType: hard
-
-"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1":
+"es-define-property@npm:^1.0.1":
version: 1.0.1
resolution: "es-define-property@npm:1.0.1"
checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c
@@ -4714,30 +4242,6 @@ __metadata:
languageName: node
linkType: hard
-"es-iterator-helpers@npm:^1.2.1":
- version: 1.3.2
- resolution: "es-iterator-helpers@npm:1.3.2"
- dependencies:
- call-bind: "npm:^1.0.9"
- call-bound: "npm:^1.0.4"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.24.2"
- es-errors: "npm:^1.3.0"
- es-set-tostringtag: "npm:^2.1.0"
- function-bind: "npm:^1.1.2"
- get-intrinsic: "npm:^1.3.0"
- globalthis: "npm:^1.0.4"
- gopd: "npm:^1.2.0"
- has-property-descriptors: "npm:^1.0.2"
- has-proto: "npm:^1.2.0"
- has-symbols: "npm:^1.1.0"
- internal-slot: "npm:^1.1.0"
- iterator.prototype: "npm:^1.1.5"
- math-intrinsics: "npm:^1.1.0"
- checksum: 10c0/5ddf9e7a7c5052d02cd8eb18f75e160c628eea66862ccd22f0fee7a7b1d2d17565c7ccf183f8b52aa88470d55394d1022012bc4eb8f8ae65a22b36e0b3bef83a
- languageName: node
- linkType: hard
-
"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1":
version: 1.1.1
resolution: "es-object-atoms@npm:1.1.1"
@@ -4747,42 +4251,10 @@ __metadata:
languageName: node
linkType: hard
-"es-set-tostringtag@npm:^2.1.0":
- version: 2.1.0
- resolution: "es-set-tostringtag@npm:2.1.0"
- dependencies:
- es-errors: "npm:^1.3.0"
- get-intrinsic: "npm:^1.2.6"
- has-tostringtag: "npm:^1.0.2"
- hasown: "npm:^2.0.2"
- checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af
- languageName: node
- linkType: hard
-
-"es-shim-unscopables@npm:^1.0.2":
- version: 1.1.0
- resolution: "es-shim-unscopables@npm:1.1.0"
- dependencies:
- hasown: "npm:^2.0.2"
- checksum: 10c0/1b9702c8a1823fc3ef39035a4e958802cf294dd21e917397c561d0b3e195f383b978359816b1732d02b255ccf63e1e4815da0065b95db8d7c992037be3bbbcdb
- languageName: node
- linkType: hard
-
-"es-to-primitive@npm:^1.3.0":
- version: 1.3.0
- resolution: "es-to-primitive@npm:1.3.0"
- dependencies:
- is-callable: "npm:^1.2.7"
- is-date-object: "npm:^1.0.5"
- is-symbol: "npm:^1.0.4"
- checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b
- languageName: node
- linkType: hard
-
-"escalade@npm:^3.1.1, escalade@npm:^3.2.0":
- version: 3.2.0
- resolution: "escalade@npm:3.2.0"
- checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65
+"escalade@npm:^3.1.1, escalade@npm:^3.2.0":
+ version: 3.2.0
+ resolution: "escalade@npm:3.2.0"
+ checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65
languageName: node
linkType: hard
@@ -4821,178 +4293,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-config-prettier@npm:^8.5.0":
- version: 8.10.2
- resolution: "eslint-config-prettier@npm:8.10.2"
- peerDependencies:
- eslint: ">=7.0.0"
- bin:
- eslint-config-prettier: bin/cli.js
- checksum: 10c0/b5953cf7a86f685e1218b16707bf36643b525513d08495226a6820caccd8b7bfc6b9aa64ac7cb2415dbe2c1f7dc4995832148bdc53ad45777f75a8ded1073b29
- languageName: node
- linkType: hard
-
-"eslint-plugin-eslint-comments@npm:^3.2.0":
- version: 3.2.0
- resolution: "eslint-plugin-eslint-comments@npm:3.2.0"
- dependencies:
- escape-string-regexp: "npm:^1.0.5"
- ignore: "npm:^5.0.5"
- peerDependencies:
- eslint: ">=4.19.1"
- checksum: 10c0/c71db824592dc8ea498021572a0bd33d763ef26126bdb3b84a027ca75a1adbe0894ec95024f7de39ef12308560e62cbf8af0d06ffe472be5ba8bd9169c928e96
- languageName: node
- linkType: hard
-
-"eslint-plugin-ft-flow@npm:^2.0.1":
- version: 2.0.3
- resolution: "eslint-plugin-ft-flow@npm:2.0.3"
- dependencies:
- lodash: "npm:^4.17.21"
- string-natural-compare: "npm:^3.0.1"
- peerDependencies:
- "@babel/eslint-parser": ^7.12.0
- eslint: ^8.1.0
- checksum: 10c0/171f6862f7be3c66a415c2ebf14a6e29ade78b661a16f344b78fbefeaeed97fc7f2c710c0d3a2c2df2bbb614b282eaef830993c2aac83b13324cd8c2f9497ea6
- languageName: node
- linkType: hard
-
-"eslint-plugin-jest@npm:^29.0.1":
- version: 29.15.2
- resolution: "eslint-plugin-jest@npm:29.15.2"
- dependencies:
- "@typescript-eslint/utils": "npm:^8.0.0"
- peerDependencies:
- "@typescript-eslint/eslint-plugin": ^8.0.0
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- jest: "*"
- typescript: ">=4.8.4 <7.0.0"
- peerDependenciesMeta:
- "@typescript-eslint/eslint-plugin":
- optional: true
- jest:
- optional: true
- typescript:
- optional: true
- checksum: 10c0/be8d59b0d4c1ff1afd5294b227cdd190a3a7741fb28f8092d359eda1010cb87ef61c3db6c0a794e9612f745ae008c4d53ee78754d8faf87a22a823b71c9b14e4
- languageName: node
- linkType: hard
-
-"eslint-plugin-react-hooks@npm:^7.0.1":
- version: 7.1.1
- resolution: "eslint-plugin-react-hooks@npm:7.1.1"
- dependencies:
- "@babel/core": "npm:^7.24.4"
- "@babel/parser": "npm:^7.24.4"
- hermes-parser: "npm:^0.25.1"
- zod: "npm:^3.25.0 || ^4.0.0"
- zod-validation-error: "npm:^3.5.0 || ^4.0.0"
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0
- checksum: 10c0/cee8454915d71ac5d70a0d8f4f260e76eaf45fcd4162747dd4282b792ee5616d187351dabe6cdcff9040c79d0cec625635c4fd0777276be119efa88ebe058525
- languageName: node
- linkType: hard
-
-"eslint-plugin-react-native-globals@npm:^0.1.1":
- version: 0.1.2
- resolution: "eslint-plugin-react-native-globals@npm:0.1.2"
- checksum: 10c0/ddb4ec5e31f6e72a66d51218c8f0b558b5366d614598fbec1833ac529db2c2dc1724c7ed71c1fcf922251b8438634f704d265c9bedf51aecfe807ec4a0403c09
- languageName: node
- linkType: hard
-
-"eslint-plugin-react-native@npm:^5.0.0":
- version: 5.0.0
- resolution: "eslint-plugin-react-native@npm:5.0.0"
- dependencies:
- eslint-plugin-react-native-globals: "npm:^0.1.1"
- peerDependencies:
- eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
- checksum: 10c0/c7c927bc743abf0cb367cc64fea5b28b28ea0c58be2990cab858a050b4855e89d90513afa44d73012c9fd670810ad0da2ac72e3e4bdfedf0ce0cbb65e901af7f
- languageName: node
- linkType: hard
-
-"eslint-plugin-react@npm:^7.37.5":
- version: 7.37.5
- resolution: "eslint-plugin-react@npm:7.37.5"
- dependencies:
- array-includes: "npm:^3.1.8"
- array.prototype.findlast: "npm:^1.2.5"
- array.prototype.flatmap: "npm:^1.3.3"
- array.prototype.tosorted: "npm:^1.1.4"
- doctrine: "npm:^2.1.0"
- es-iterator-helpers: "npm:^1.2.1"
- estraverse: "npm:^5.3.0"
- hasown: "npm:^2.0.2"
- jsx-ast-utils: "npm:^2.4.1 || ^3.0.0"
- minimatch: "npm:^3.1.2"
- object.entries: "npm:^1.1.9"
- object.fromentries: "npm:^2.0.8"
- object.values: "npm:^1.2.1"
- prop-types: "npm:^15.8.1"
- resolve: "npm:^2.0.0-next.5"
- semver: "npm:^6.3.1"
- string.prototype.matchall: "npm:^4.0.12"
- string.prototype.repeat: "npm:^1.0.0"
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
- checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57
- languageName: node
- linkType: hard
-
-"eslint-scope@npm:5.1.1":
- version: 5.1.1
- resolution: "eslint-scope@npm:5.1.1"
- dependencies:
- esrecurse: "npm:^4.3.0"
- estraverse: "npm:^4.1.1"
- checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a
- languageName: node
- linkType: hard
-
-"eslint-visitor-keys@npm:^2.1.0":
- version: 2.1.0
- resolution: "eslint-visitor-keys@npm:2.1.0"
- checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787
- languageName: node
- linkType: hard
-
-"eslint-visitor-keys@npm:^3.4.3":
- version: 3.4.3
- resolution: "eslint-visitor-keys@npm:3.4.3"
- checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820
- languageName: node
- linkType: hard
-
-"eslint-visitor-keys@npm:^5.0.0":
- version: 5.0.1
- resolution: "eslint-visitor-keys@npm:5.0.1"
- checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678
- languageName: node
- linkType: hard
-
-"esrecurse@npm:^4.3.0":
- version: 4.3.0
- resolution: "esrecurse@npm:4.3.0"
- dependencies:
- estraverse: "npm:^5.2.0"
- checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5
- languageName: node
- linkType: hard
-
-"estraverse@npm:^4.1.1":
- version: 4.3.0
- resolution: "estraverse@npm:4.3.0"
- checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d
- languageName: node
- linkType: hard
-
-"estraverse@npm:^5.2.0, estraverse@npm:^5.3.0":
- version: 5.3.0
- resolution: "estraverse@npm:5.3.0"
- checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107
- languageName: node
- linkType: hard
-
"esutils@npm:^2.0.2":
version: 2.0.3
resolution: "esutils@npm:2.0.3"
@@ -5014,6 +4314,13 @@ __metadata:
languageName: node
linkType: hard
+"eventemitter3@npm:^5.0.1":
+ version: 5.0.4
+ resolution: "eventemitter3@npm:5.0.4"
+ checksum: 10c0/575b8cac8d709e1473da46f8f15ef311b57ff7609445a7c71af5cd42598583eee6f098fa7a593e30f27e94b8865642baa0689e8fa97c016f742abdb3b1bf6d9a
+ languageName: node
+ linkType: hard
+
"execa@npm:^4.0.3":
version: 4.1.0
resolution: "execa@npm:4.1.0"
@@ -5308,15 +4615,6 @@ __metadata:
languageName: node
linkType: hard
-"for-each@npm:^0.3.3, for-each@npm:^0.3.5":
- version: 0.3.5
- resolution: "for-each@npm:0.3.5"
- dependencies:
- is-callable: "npm:^1.2.7"
- checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee
- languageName: node
- linkType: hard
-
"fresh@npm:~0.5.2":
version: 0.5.2
resolution: "fresh@npm:0.5.2"
@@ -5386,27 +4684,6 @@ __metadata:
languageName: node
linkType: hard
-"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8":
- version: 1.1.8
- resolution: "function.prototype.name@npm:1.1.8"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.3"
- define-properties: "npm:^1.2.1"
- functions-have-names: "npm:^1.2.3"
- hasown: "npm:^2.0.2"
- is-callable: "npm:^1.2.7"
- checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253
- languageName: node
- linkType: hard
-
-"functions-have-names@npm:^1.2.3":
- version: 1.2.3
- resolution: "functions-have-names@npm:1.2.3"
- checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca
- languageName: node
- linkType: hard
-
"generator-function@npm:^2.0.0":
version: 2.0.1
resolution: "generator-function@npm:2.0.1"
@@ -5428,14 +4705,14 @@ __metadata:
languageName: node
linkType: hard
-"get-east-asian-width@npm:^1.0.0":
+"get-east-asian-width@npm:^1.0.0, get-east-asian-width@npm:^1.3.1, get-east-asian-width@npm:^1.5.0":
version: 1.5.0
resolution: "get-east-asian-width@npm:1.5.0"
checksum: 10c0/bff8bbc8d81790b9477f7aa55b1806b9f082a8dc1359fff7bd8b96939622c86b729685afc2bfeb22def1fc6ef1e5228e4d87dd4e6da60bc43a5edfb03c4ee167
languageName: node
linkType: hard
-"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0":
+"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.3.0":
version: 1.3.1
resolution: "get-intrinsic@npm:1.3.1"
dependencies:
@@ -5456,7 +4733,7 @@ __metadata:
languageName: node
linkType: hard
-"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1":
+"get-proto@npm:^1.0.1":
version: 1.0.1
resolution: "get-proto@npm:1.0.1"
dependencies:
@@ -5506,17 +4783,6 @@ __metadata:
languageName: node
linkType: hard
-"get-symbol-description@npm:^1.1.0":
- version: 1.1.0
- resolution: "get-symbol-description@npm:1.1.0"
- dependencies:
- call-bound: "npm:^1.0.3"
- es-errors: "npm:^1.3.0"
- get-intrinsic: "npm:^1.2.6"
- checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b
- languageName: node
- linkType: hard
-
"git-log-parser@npm:^1.2.0":
version: 1.2.1
resolution: "git-log-parser@npm:1.2.1"
@@ -5563,16 +4829,6 @@ __metadata:
languageName: node
linkType: hard
-"globalthis@npm:^1.0.4":
- version: 1.0.4
- resolution: "globalthis@npm:1.0.4"
- dependencies:
- define-properties: "npm:^1.2.1"
- gopd: "npm:^1.0.1"
- checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846
- languageName: node
- linkType: hard
-
"globby@npm:^14.0.2":
version: 14.1.0
resolution: "globby@npm:14.1.0"
@@ -5587,7 +4843,7 @@ __metadata:
languageName: node
linkType: hard
-"gopd@npm:^1.0.1, gopd@npm:^1.2.0":
+"gopd@npm:^1.2.0":
version: 1.2.0
resolution: "gopd@npm:1.2.0"
checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead
@@ -5626,13 +4882,6 @@ __metadata:
languageName: node
linkType: hard
-"has-bigints@npm:^1.0.2":
- version: 1.1.0
- resolution: "has-bigints@npm:1.1.0"
- checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788
- languageName: node
- linkType: hard
-
"has-flag@npm:^3.0.0":
version: 3.0.0
resolution: "has-flag@npm:3.0.0"
@@ -5647,40 +4896,13 @@ __metadata:
languageName: node
linkType: hard
-"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2":
- version: 1.0.2
- resolution: "has-property-descriptors@npm:1.0.2"
- dependencies:
- es-define-property: "npm:^1.0.0"
- checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236
- languageName: node
- linkType: hard
-
-"has-proto@npm:^1.2.0":
- version: 1.2.0
- resolution: "has-proto@npm:1.2.0"
- dependencies:
- dunder-proto: "npm:^1.0.0"
- checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95
- languageName: node
- linkType: hard
-
-"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0":
+"has-symbols@npm:^1.1.0":
version: 1.1.0
resolution: "has-symbols@npm:1.1.0"
checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e
languageName: node
linkType: hard
-"has-tostringtag@npm:^1.0.2":
- version: 1.0.2
- resolution: "has-tostringtag@npm:1.0.2"
- dependencies:
- has-symbols: "npm:^1.0.3"
- checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c
- languageName: node
- linkType: hard
-
"hasown@npm:^2.0.2":
version: 2.0.3
resolution: "hasown@npm:2.0.3"
@@ -5697,13 +4919,6 @@ __metadata:
languageName: node
linkType: hard
-"hermes-estree@npm:0.25.1":
- version: 0.25.1
- resolution: "hermes-estree@npm:0.25.1"
- checksum: 10c0/48be3b2fa37a0cbc77a112a89096fa212f25d06de92781b163d67853d210a8a5c3784fac23d7d48335058f7ed283115c87b4332c2a2abaaccc76d0ead1a282ac
- languageName: node
- linkType: hard
-
"hermes-estree@npm:0.33.3":
version: 0.33.3
resolution: "hermes-estree@npm:0.33.3"
@@ -5752,15 +4967,6 @@ __metadata:
languageName: node
linkType: hard
-"hermes-parser@npm:^0.25.1":
- version: 0.25.1
- resolution: "hermes-parser@npm:0.25.1"
- dependencies:
- hermes-estree: "npm:0.25.1"
- checksum: 10c0/3abaa4c6f1bcc25273f267297a89a4904963ea29af19b8e4f6eabe04f1c2c7e9abd7bfc4730ddb1d58f2ea04b6fee74053d8bddb5656ec6ebf6c79cc8d14202c
- languageName: node
- linkType: hard
-
"highlight.js@npm:^10.7.1":
version: 10.7.3
resolution: "highlight.js@npm:10.7.3"
@@ -5861,6 +5067,15 @@ __metadata:
languageName: node
linkType: hard
+"husky@npm:^9.1.7":
+ version: 9.1.7
+ resolution: "husky@npm:9.1.7"
+ bin:
+ husky: bin.js
+ checksum: 10c0/35bb110a71086c48906aa7cd3ed4913fb913823715359d65e32e0b964cb1e255593b0ae8014a5005c66a68e6fa66c38dcfa8056dbbdfb8b0187c0ffe7ee3a58f
+ languageName: node
+ linkType: hard
+
"iconv-lite@npm:^0.7.0, iconv-lite@npm:^0.7.2, iconv-lite@npm:~0.7.0":
version: 0.7.2
resolution: "iconv-lite@npm:0.7.2"
@@ -5886,14 +5101,7 @@ __metadata:
languageName: node
linkType: hard
-"ignore@npm:^5.0.5":
- version: 5.3.2
- resolution: "ignore@npm:5.3.2"
- checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337
- languageName: node
- linkType: hard
-
-"ignore@npm:^7.0.3, ignore@npm:^7.0.5":
+"ignore@npm:^7.0.3":
version: 7.0.5
resolution: "ignore@npm:7.0.5"
checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d
@@ -5994,17 +5202,6 @@ __metadata:
languageName: node
linkType: hard
-"internal-slot@npm:^1.1.0":
- version: 1.1.0
- resolution: "internal-slot@npm:1.1.0"
- dependencies:
- es-errors: "npm:^1.3.0"
- hasown: "npm:^2.0.2"
- side-channel: "npm:^1.1.0"
- checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7
- languageName: node
- linkType: hard
-
"into-stream@npm:^7.0.0":
version: 7.0.0
resolution: "into-stream@npm:7.0.0"
@@ -6041,17 +5238,6 @@ __metadata:
languageName: node
linkType: hard
-"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5":
- version: 3.0.5
- resolution: "is-array-buffer@npm:3.0.5"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.3"
- get-intrinsic: "npm:^1.2.6"
- checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d
- languageName: node
- linkType: hard
-
"is-arrayish@npm:^0.2.1":
version: 0.2.1
resolution: "is-arrayish@npm:0.2.1"
@@ -6059,45 +5245,6 @@ __metadata:
languageName: node
linkType: hard
-"is-async-function@npm:^2.0.0":
- version: 2.1.1
- resolution: "is-async-function@npm:2.1.1"
- dependencies:
- async-function: "npm:^1.0.0"
- call-bound: "npm:^1.0.3"
- get-proto: "npm:^1.0.1"
- has-tostringtag: "npm:^1.0.2"
- safe-regex-test: "npm:^1.1.0"
- checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298
- languageName: node
- linkType: hard
-
-"is-bigint@npm:^1.1.0":
- version: 1.1.0
- resolution: "is-bigint@npm:1.1.0"
- dependencies:
- has-bigints: "npm:^1.0.2"
- checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4
- languageName: node
- linkType: hard
-
-"is-boolean-object@npm:^1.2.1":
- version: 1.2.2
- resolution: "is-boolean-object@npm:1.2.2"
- dependencies:
- call-bound: "npm:^1.0.3"
- has-tostringtag: "npm:^1.0.2"
- checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e
- languageName: node
- linkType: hard
-
-"is-callable@npm:^1.2.7":
- version: 1.2.7
- resolution: "is-callable@npm:1.2.7"
- checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f
- languageName: node
- linkType: hard
-
"is-cidr@npm:^6.0.3":
version: 6.0.4
resolution: "is-cidr@npm:6.0.4"
@@ -6116,27 +5263,6 @@ __metadata:
languageName: node
linkType: hard
-"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2":
- version: 1.0.2
- resolution: "is-data-view@npm:1.0.2"
- dependencies:
- call-bound: "npm:^1.0.2"
- get-intrinsic: "npm:^1.2.6"
- is-typed-array: "npm:^1.1.13"
- checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153
- languageName: node
- linkType: hard
-
-"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0":
- version: 1.1.0
- resolution: "is-date-object@npm:1.1.0"
- dependencies:
- call-bound: "npm:^1.0.2"
- has-tostringtag: "npm:^1.0.2"
- checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f
- languageName: node
- linkType: hard
-
"is-docker@npm:^2.0.0":
version: 2.2.1
resolution: "is-docker@npm:2.2.1"
@@ -6153,15 +5279,6 @@ __metadata:
languageName: node
linkType: hard
-"is-finalizationregistry@npm:^1.1.0":
- version: 1.1.1
- resolution: "is-finalizationregistry@npm:1.1.1"
- dependencies:
- call-bound: "npm:^1.0.3"
- checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97
- languageName: node
- linkType: hard
-
"is-fullwidth-code-point@npm:^2.0.0":
version: 2.0.0
resolution: "is-fullwidth-code-point@npm:2.0.0"
@@ -6176,16 +5293,12 @@ __metadata:
languageName: node
linkType: hard
-"is-generator-function@npm:^1.0.10":
- version: 1.1.2
- resolution: "is-generator-function@npm:1.1.2"
+"is-fullwidth-code-point@npm:^5.0.0, is-fullwidth-code-point@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "is-fullwidth-code-point@npm:5.1.0"
dependencies:
- call-bound: "npm:^1.0.4"
- generator-function: "npm:^2.0.0"
- get-proto: "npm:^1.0.1"
- has-tostringtag: "npm:^1.0.2"
- safe-regex-test: "npm:^1.1.0"
- checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372
+ get-east-asian-width: "npm:^1.3.1"
+ checksum: 10c0/c1172c2e417fb73470c56c431851681591f6a17233603a9e6f94b7ba870b2e8a5266506490573b607fb1081318589372034aa436aec07b465c2029c0bc7f07a4
languageName: node
linkType: hard
@@ -6225,30 +5338,6 @@ __metadata:
languageName: node
linkType: hard
-"is-map@npm:^2.0.3":
- version: 2.0.3
- resolution: "is-map@npm:2.0.3"
- checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc
- languageName: node
- linkType: hard
-
-"is-negative-zero@npm:^2.0.3":
- version: 2.0.3
- resolution: "is-negative-zero@npm:2.0.3"
- checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e
- languageName: node
- linkType: hard
-
-"is-number-object@npm:^1.1.1":
- version: 1.1.1
- resolution: "is-number-object@npm:1.1.1"
- dependencies:
- call-bound: "npm:^1.0.3"
- has-tostringtag: "npm:^1.0.2"
- checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53
- languageName: node
- linkType: hard
-
"is-number@npm:^7.0.0":
version: 7.0.0
resolution: "is-number@npm:7.0.0"
@@ -6284,18 +5373,6 @@ __metadata:
languageName: node
linkType: hard
-"is-regex@npm:^1.2.1":
- version: 1.2.1
- resolution: "is-regex@npm:1.2.1"
- dependencies:
- call-bound: "npm:^1.0.2"
- gopd: "npm:^1.2.0"
- has-tostringtag: "npm:^1.0.2"
- hasown: "npm:^2.0.2"
- checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04
- languageName: node
- linkType: hard
-
"is-relative@npm:^1.0.0":
version: 1.0.0
resolution: "is-relative@npm:1.0.0"
@@ -6305,22 +5382,6 @@ __metadata:
languageName: node
linkType: hard
-"is-set@npm:^2.0.3":
- version: 2.0.3
- resolution: "is-set@npm:2.0.3"
- checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7
- languageName: node
- linkType: hard
-
-"is-shared-array-buffer@npm:^1.0.4":
- version: 1.0.4
- resolution: "is-shared-array-buffer@npm:1.0.4"
- dependencies:
- call-bound: "npm:^1.0.3"
- checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db
- languageName: node
- linkType: hard
-
"is-stream@npm:^2.0.0":
version: 2.0.1
resolution: "is-stream@npm:2.0.1"
@@ -6342,36 +5403,6 @@ __metadata:
languageName: node
linkType: hard
-"is-string@npm:^1.1.1":
- version: 1.1.1
- resolution: "is-string@npm:1.1.1"
- dependencies:
- call-bound: "npm:^1.0.3"
- has-tostringtag: "npm:^1.0.2"
- checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d
- languageName: node
- linkType: hard
-
-"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1":
- version: 1.1.1
- resolution: "is-symbol@npm:1.1.1"
- dependencies:
- call-bound: "npm:^1.0.2"
- has-symbols: "npm:^1.1.0"
- safe-regex-test: "npm:^1.1.0"
- checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e
- languageName: node
- linkType: hard
-
-"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15":
- version: 1.1.15
- resolution: "is-typed-array@npm:1.1.15"
- dependencies:
- which-typed-array: "npm:^1.1.16"
- checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4
- languageName: node
- linkType: hard
-
"is-unc-path@npm:^1.0.0":
version: 1.0.0
resolution: "is-unc-path@npm:1.0.0"
@@ -6395,32 +5426,6 @@ __metadata:
languageName: node
linkType: hard
-"is-weakmap@npm:^2.0.2":
- version: 2.0.2
- resolution: "is-weakmap@npm:2.0.2"
- checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299
- languageName: node
- linkType: hard
-
-"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1":
- version: 1.1.1
- resolution: "is-weakref@npm:1.1.1"
- dependencies:
- call-bound: "npm:^1.0.3"
- checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b
- languageName: node
- linkType: hard
-
-"is-weakset@npm:^2.0.3":
- version: 2.0.4
- resolution: "is-weakset@npm:2.0.4"
- dependencies:
- call-bound: "npm:^1.0.3"
- get-intrinsic: "npm:^1.2.6"
- checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647
- languageName: node
- linkType: hard
-
"is-windows@npm:^1.0.1":
version: 1.0.2
resolution: "is-windows@npm:1.0.2"
@@ -6444,13 +5449,6 @@ __metadata:
languageName: node
linkType: hard
-"isarray@npm:^2.0.5":
- version: 2.0.5
- resolution: "isarray@npm:2.0.5"
- checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd
- languageName: node
- linkType: hard
-
"isarray@npm:~1.0.0":
version: 1.0.0
resolution: "isarray@npm:1.0.0"
@@ -6485,20 +5483,6 @@ __metadata:
languageName: node
linkType: hard
-"iterator.prototype@npm:^1.1.5":
- version: 1.1.5
- resolution: "iterator.prototype@npm:1.1.5"
- dependencies:
- define-data-property: "npm:^1.1.4"
- es-object-atoms: "npm:^1.0.0"
- get-intrinsic: "npm:^1.2.6"
- get-proto: "npm:^1.0.0"
- has-symbols: "npm:^1.1.0"
- set-function-name: "npm:^2.0.2"
- checksum: 10c0/f7a262808e1b41049ab55f1e9c29af7ec1025a000d243b83edf34ce2416eedd56079b117fa59376bb4a724110690f13aa8427f2ee29a09eec63a7e72367626d0
- languageName: node
- linkType: hard
-
"java-properties@npm:^1.0.2":
version: 1.0.2
resolution: "java-properties@npm:1.0.2"
@@ -6749,18 +5733,6 @@ __metadata:
languageName: node
linkType: hard
-"jsx-ast-utils@npm:^2.4.1 || ^3.0.0":
- version: 3.3.5
- resolution: "jsx-ast-utils@npm:3.3.5"
- dependencies:
- array-includes: "npm:^3.1.6"
- array.prototype.flat: "npm:^1.3.1"
- object.assign: "npm:^4.1.4"
- object.values: "npm:^1.1.6"
- checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1
- languageName: node
- linkType: hard
-
"just-diff-apply@npm:^5.2.0":
version: 5.5.0
resolution: "just-diff-apply@npm:5.5.0"
@@ -6948,6 +5920,36 @@ __metadata:
languageName: node
linkType: hard
+"lint-staged@npm:^16.4.0":
+ version: 16.4.0
+ resolution: "lint-staged@npm:16.4.0"
+ dependencies:
+ commander: "npm:^14.0.3"
+ listr2: "npm:^9.0.5"
+ picomatch: "npm:^4.0.3"
+ string-argv: "npm:^0.3.2"
+ tinyexec: "npm:^1.0.4"
+ yaml: "npm:^2.8.2"
+ bin:
+ lint-staged: bin/lint-staged.js
+ checksum: 10c0/67625a49a2a01368c7df2da7e553567a79c4b261d9faf3436e00fc3a2f9c4bbe7295909012c47b3d9029e269fd7d7469901a5120573527a032f15797aa497c26
+ languageName: node
+ linkType: hard
+
+"listr2@npm:^9.0.5":
+ version: 9.0.5
+ resolution: "listr2@npm:9.0.5"
+ dependencies:
+ cli-truncate: "npm:^5.0.0"
+ colorette: "npm:^2.0.20"
+ eventemitter3: "npm:^5.0.1"
+ log-update: "npm:^6.1.0"
+ rfdc: "npm:^1.4.1"
+ wrap-ansi: "npm:^9.0.0"
+ checksum: 10c0/46448d1ba0addc9d71aeafd05bb8e86ded9641ccad930ac302c2bd2ad71580375604743e18586fcb8f11906edf98e8e17fca75ba0759947bf275d381f68e311d
+ languageName: node
+ linkType: hard
+
"load-json-file@npm:^4.0.0":
version: 4.0.0
resolution: "load-json-file@npm:4.0.0"
@@ -7054,7 +6056,7 @@ __metadata:
languageName: node
linkType: hard
-"lodash@npm:^4.17.21, lodash@npm:^4.17.4":
+"lodash@npm:^4.17.4":
version: 4.18.1
resolution: "lodash@npm:4.18.1"
checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27
@@ -7071,6 +6073,19 @@ __metadata:
languageName: node
linkType: hard
+"log-update@npm:^6.1.0":
+ version: 6.1.0
+ resolution: "log-update@npm:6.1.0"
+ dependencies:
+ ansi-escapes: "npm:^7.0.0"
+ cli-cursor: "npm:^5.0.0"
+ slice-ansi: "npm:^7.1.0"
+ strip-ansi: "npm:^7.1.0"
+ wrap-ansi: "npm:^9.0.0"
+ checksum: 10c0/4b350c0a83d7753fea34dcac6cd797d1dc9603291565de009baa4aa91c0447eab0d3815a05c8ec9ac04fdfffb43c82adcdb03ec1fceafd8518e1a8c1cff4ff89
+ languageName: node
+ linkType: hard
+
"logkitty@npm:^0.7.1":
version: 0.7.1
resolution: "logkitty@npm:0.7.1"
@@ -7084,7 +6099,7 @@ __metadata:
languageName: node
linkType: hard
-"loose-envify@npm:^1.0.0, loose-envify@npm:^1.4.0":
+"loose-envify@npm:^1.0.0":
version: 1.4.0
resolution: "loose-envify@npm:1.4.0"
dependencies:
@@ -7541,21 +6556,19 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:^10.0.1, minimatch@npm:^10.0.3, minimatch@npm:^10.1.1, minimatch@npm:^10.2.2, minimatch@npm:^10.2.4":
- version: 10.2.5
- resolution: "minimatch@npm:10.2.5"
- dependencies:
- brace-expansion: "npm:^5.0.5"
- checksum: 10c0/6bb058bd6324104b9ec2f763476a35386d05079c1f5fe4fbf1f324a25237cd4534d6813ecd71f48208f4e635c1221899bef94c3c89f7df55698fe373aaae20fd
+"mimic-function@npm:^5.0.0":
+ version: 5.0.1
+ resolution: "mimic-function@npm:5.0.1"
+ checksum: 10c0/f3d9464dd1816ecf6bdf2aec6ba32c0728022039d992f178237d8e289b48764fee4131319e72eedd4f7f094e22ded0af836c3187a7edc4595d28dd74368fd81d
languageName: node
linkType: hard
-"minimatch@npm:^3.1.2":
- version: 3.1.5
- resolution: "minimatch@npm:3.1.5"
+"minimatch@npm:^10.0.1, minimatch@npm:^10.0.3, minimatch@npm:^10.1.1, minimatch@npm:^10.2.2, minimatch@npm:^10.2.4":
+ version: 10.2.5
+ resolution: "minimatch@npm:10.2.5"
dependencies:
- brace-expansion: "npm:^1.1.7"
- checksum: 10c0/2ecbdc0d33f07bddb0315a8b5afbcb761307a8778b48f0b312418ccbced99f104a2d17d8aca7573433c70e8ccd1c56823a441897a45e384ea76ef401a26ace70
+ brace-expansion: "npm:^5.0.5"
+ checksum: 10c0/6bb058bd6324104b9ec2f763476a35386d05079c1f5fe4fbf1f324a25237cd4534d6813ecd71f48208f4e635c1221899bef94c3c89f7df55698fe373aaae20fd
languageName: node
linkType: hard
@@ -7699,13 +6712,6 @@ __metadata:
languageName: node
linkType: hard
-"natural-compare@npm:^1.4.0":
- version: 1.4.0
- resolution: "natural-compare@npm:1.4.0"
- checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447
- languageName: node
- linkType: hard
-
"negotiator@npm:0.6.3":
version: 0.6.3
resolution: "negotiator@npm:0.6.3"
@@ -7741,18 +6747,18 @@ __metadata:
languageName: node
linkType: hard
-"nitrogen@npm:0.35.4":
- version: 0.35.4
- resolution: "nitrogen@npm:0.35.4"
+"nitrogen@npm:0.35.6":
+ version: 0.35.6
+ resolution: "nitrogen@npm:0.35.6"
dependencies:
chalk: "npm:^5.3.0"
- react-native-nitro-modules: "npm:^0.35.4"
+ react-native-nitro-modules: "npm:^0.35.6"
ts-morph: "npm:^27.0.0"
yargs: "npm:^18.0.0"
zod: "npm:^4.0.5"
bin:
nitrogen: lib/index.js
- checksum: 10c0/d8c7eed4e08c107475e8a3154f7d5ddf9876448032f0986b0e8d9e58abeb3dbc8ecd7cdb45190f12ab0fbafc815bb1b31209e93910e7f5d671e892d794449631
+ checksum: 10c0/3126cee262dc908717cfba21b38250bcf658afa6586ec2b66f3f9276050bf433af66cf072b70a4fc6814b812271f32566ac639f1c3147d26c20ba71c74a9a40a
languageName: node
linkType: hard
@@ -7775,18 +6781,6 @@ __metadata:
languageName: node
linkType: hard
-"node-exports-info@npm:^1.6.0":
- version: 1.6.0
- resolution: "node-exports-info@npm:1.6.0"
- dependencies:
- array.prototype.flatmap: "npm:^1.3.3"
- es-errors: "npm:^1.3.0"
- object.entries: "npm:^1.1.9"
- semver: "npm:^6.3.1"
- checksum: 10c0/3613f21c60b047e66f168d3499a6be0060d89fb01ddceaa7032c2fb318aff12e4b9b111449c1a9aeb3b848bfdc1d4b6bc8fab327af692319597d21a1e7063692
- languageName: node
- linkType: hard
-
"node-gyp@npm:^12.1.0, node-gyp@npm:^12.2.0":
version: 12.3.0
resolution: "node-gyp@npm:12.3.0"
@@ -8087,7 +7081,7 @@ __metadata:
languageName: node
linkType: hard
-"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1":
+"object-assign@npm:^4.0.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414
@@ -8101,63 +7095,6 @@ __metadata:
languageName: node
linkType: hard
-"object-keys@npm:^1.1.1":
- version: 1.1.1
- resolution: "object-keys@npm:1.1.1"
- checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d
- languageName: node
- linkType: hard
-
-"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7":
- version: 4.1.7
- resolution: "object.assign@npm:4.1.7"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.3"
- define-properties: "npm:^1.2.1"
- es-object-atoms: "npm:^1.0.0"
- has-symbols: "npm:^1.1.0"
- object-keys: "npm:^1.1.1"
- checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc
- languageName: node
- linkType: hard
-
-"object.entries@npm:^1.1.9":
- version: 1.1.9
- resolution: "object.entries@npm:1.1.9"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.4"
- define-properties: "npm:^1.2.1"
- es-object-atoms: "npm:^1.1.1"
- checksum: 10c0/d4b8c1e586650407da03370845f029aa14076caca4e4d4afadbc69cfb5b78035fd3ee7be417141abdb0258fa142e59b11923b4c44d8b1255b28f5ffcc50da7db
- languageName: node
- linkType: hard
-
-"object.fromentries@npm:^2.0.8":
- version: 2.0.8
- resolution: "object.fromentries@npm:2.0.8"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.2"
- es-object-atoms: "npm:^1.0.0"
- checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b
- languageName: node
- linkType: hard
-
-"object.values@npm:^1.1.6, object.values@npm:^1.2.1":
- version: 1.2.1
- resolution: "object.values@npm:1.2.1"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.3"
- define-properties: "npm:^1.2.1"
- es-object-atoms: "npm:^1.0.0"
- checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9
- languageName: node
- linkType: hard
-
"on-finished@npm:^2.4.1, on-finished@npm:~2.4.1":
version: 2.4.1
resolution: "on-finished@npm:2.4.1"
@@ -8210,6 +7147,15 @@ __metadata:
languageName: node
linkType: hard
+"onetime@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "onetime@npm:7.0.0"
+ dependencies:
+ mimic-function: "npm:^5.0.0"
+ checksum: 10c0/5cb9179d74b63f52a196a2e7037ba2b9a893245a5532d3f44360012005c9cadb60851d56716ebff18a6f47129dab7168022445df47c2aff3b276d92585ed1221
+ languageName: node
+ linkType: hard
+
"open@npm:^6.2.0":
version: 6.4.0
resolution: "open@npm:6.4.0"
@@ -8246,17 +7192,6 @@ __metadata:
languageName: node
linkType: hard
-"own-keys@npm:^1.0.1":
- version: 1.0.1
- resolution: "own-keys@npm:1.0.1"
- dependencies:
- get-intrinsic: "npm:^1.2.6"
- object-keys: "npm:^1.1.1"
- safe-push-apply: "npm:^1.0.0"
- checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a
- languageName: node
- linkType: hard
-
"p-each-series@npm:^3.0.0":
version: 3.0.0
resolution: "p-each-series@npm:3.0.0"
@@ -8641,13 +7576,6 @@ __metadata:
languageName: node
linkType: hard
-"possible-typed-array-names@npm:^1.0.0":
- version: 1.1.0
- resolution: "possible-typed-array-names@npm:1.1.0"
- checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196
- languageName: node
- linkType: hard
-
"postcss-selector-parser@npm:^7.0.0":
version: 7.1.1
resolution: "postcss-selector-parser@npm:7.1.1"
@@ -8759,17 +7687,6 @@ __metadata:
languageName: node
linkType: hard
-"prop-types@npm:^15.8.1":
- 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
-
"proto-list@npm:~1.2.1":
version: 1.2.4
resolution: "proto-list@npm:1.2.4"
@@ -8864,13 +7781,6 @@ __metadata:
languageName: node
linkType: hard
-"react-is@npm:^16.13.1":
- version: 16.13.1
- resolution: "react-is@npm:16.13.1"
- checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1
- languageName: node
- linkType: hard
-
"react-is@npm:^18.0.0, react-is@npm:^18.3.1":
version: 18.3.1
resolution: "react-is@npm:18.3.1"
@@ -8921,7 +7831,6 @@ __metadata:
"@react-native-community/cli-platform-android": "npm:20.1.3"
"@react-native-community/cli-platform-ios": "npm:20.1.3"
"@react-native/babel-preset": "npm:0.85.2"
- "@react-native/eslint-config": "npm:0.85.2"
"@react-native/metro-config": "npm:0.85.2"
"@react-native/new-app-screen": "npm:0.85.2"
"@react-native/typescript-config": "npm:0.85.2"
@@ -8929,7 +7838,7 @@ __metadata:
babel-plugin-module-resolver: "npm:^5.0.3"
react: "npm:19.2.3"
react-native: "npm:0.85.2"
- react-native-nitro-modules: "npm:0.35.4"
+ react-native-nitro-modules: "npm:0.35.6"
react-native-safe-area-context: "npm:^5.7.0"
languageName: unknown
linkType: soft
@@ -8938,18 +7847,20 @@ __metadata:
version: 0.0.0-use.local
resolution: "react-native-inappbrowser-nitro@workspace:."
dependencies:
- "@biomejs/biome": "npm:^2.4.12"
- "@jamesacarr/eslint-formatter-github-actions": "npm:^0.2.0"
+ "@biomejs/biome": "npm:^2.4.13"
"@semantic-release/changelog": "npm:^6.0.3"
"@semantic-release/git": "npm:^10.0.1"
"@types/jest": "npm:^30.0.0"
"@types/react": "npm:19.2.14"
+ babel-plugin-react-compiler: "npm:^19.1.0-rc.3"
conventional-changelog-conventionalcommits: "npm:^9.3.1"
- nitrogen: "npm:0.35.4"
+ husky: "npm:^9.1.7"
+ lint-staged: "npm:^16.4.0"
+ nitrogen: "npm:0.35.6"
react: "npm:19.2.3"
react-native: "npm:0.85"
react-native-builder-bob: "npm:^0.41.0"
- react-native-nitro-modules: "npm:0.35.4"
+ react-native-nitro-modules: "npm:0.35.6"
semantic-release: "npm:^25.0.3"
typescript: "npm:^6.0.3"
peerDependencies:
@@ -8969,13 +7880,13 @@ __metadata:
languageName: node
linkType: hard
-"react-native-nitro-modules@npm:0.35.4, react-native-nitro-modules@npm:^0.35.4":
- version: 0.35.4
- resolution: "react-native-nitro-modules@npm:0.35.4"
+"react-native-nitro-modules@npm:0.35.6, react-native-nitro-modules@npm:^0.35.6":
+ version: 0.35.6
+ resolution: "react-native-nitro-modules@npm:0.35.6"
peerDependencies:
react: "*"
react-native: "*"
- checksum: 10c0/dffb64c1b349d21feb8a33546cde48e3c5d92e04e120f733c178d4afa26ef6de652c6236a4eed0da7ca842ac9815afaa0708f57ae1454d881397e5d0575031c2
+ checksum: 10c0/57ec2a2d2e57da923c5c8c81d28f323691be0373d528b81a1a6e1da0e6675f29faa443cc16babd0abd4cd5e08e51ff273ed04a139f368236662212f15cc3a678
languageName: node
linkType: hard
@@ -9144,22 +8055,6 @@ __metadata:
languageName: node
linkType: hard
-"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9":
- version: 1.0.10
- resolution: "reflect.getprototypeof@npm:1.0.10"
- dependencies:
- call-bind: "npm:^1.0.8"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.9"
- es-errors: "npm:^1.3.0"
- es-object-atoms: "npm:^1.0.0"
- get-intrinsic: "npm:^1.2.7"
- get-proto: "npm:^1.0.1"
- which-builtin-type: "npm:^1.2.1"
- checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac
- languageName: node
- linkType: hard
-
"regenerate-unicode-properties@npm:^10.2.2":
version: 10.2.2
resolution: "regenerate-unicode-properties@npm:10.2.2"
@@ -9183,20 +8078,6 @@ __metadata:
languageName: node
linkType: hard
-"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4":
- version: 1.5.4
- resolution: "regexp.prototype.flags@npm:1.5.4"
- dependencies:
- call-bind: "npm:^1.0.8"
- define-properties: "npm:^1.2.1"
- es-errors: "npm:^1.3.0"
- get-proto: "npm:^1.0.1"
- gopd: "npm:^1.2.0"
- set-function-name: "npm:^2.0.2"
- checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77
- languageName: node
- linkType: hard
-
"regexpu-core@npm:^6.3.1":
version: 6.4.0
resolution: "regexpu-core@npm:6.4.0"
@@ -9287,22 +8168,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^2.0.0-next.5":
- version: 2.0.0-next.6
- resolution: "resolve@npm:2.0.0-next.6"
- dependencies:
- es-errors: "npm:^1.3.0"
- is-core-module: "npm:^2.16.1"
- node-exports-info: "npm:^1.6.0"
- object-keys: "npm:^1.1.1"
- path-parse: "npm:^1.0.7"
- supports-preserve-symlinks-flag: "npm:^1.0.0"
- bin:
- resolve: bin/resolve
- checksum: 10c0/4e44cb84aa9a3c7c82d4a98e8111879671150496160a53ca6cdbed6101bf239f19105f8b8b84e40c0b76d46b0d9626813510b19a80e01f4ae18692e9d0b47749
- languageName: node
- linkType: hard
-
"resolve@patch:resolve@npm%3A^1.22.11#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin":
version: 1.22.12
resolution: "resolve@patch:resolve@npm%3A1.22.12#optional!builtin::version=1.22.12&hash=c3c19d"
@@ -9317,22 +8182,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin":
- version: 2.0.0-next.6
- resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d"
- dependencies:
- es-errors: "npm:^1.3.0"
- is-core-module: "npm:^2.16.1"
- node-exports-info: "npm:^1.6.0"
- object-keys: "npm:^1.1.1"
- path-parse: "npm:^1.0.7"
- supports-preserve-symlinks-flag: "npm:^1.0.0"
- bin:
- resolve: bin/resolve
- checksum: 10c0/dca533e38820b0d8d636f269824cef3b7435802ab7401211c6f10af03be0e2f7e216047234e1623046c0a6791577079767e0c04f0d36e42c7f567b1bff7b0742
- languageName: node
- linkType: hard
-
"restore-cursor@npm:^3.1.0":
version: 3.1.0
resolution: "restore-cursor@npm:3.1.0"
@@ -9343,6 +8192,16 @@ __metadata:
languageName: node
linkType: hard
+"restore-cursor@npm:^5.0.0":
+ version: 5.1.0
+ resolution: "restore-cursor@npm:5.1.0"
+ dependencies:
+ onetime: "npm:^7.0.0"
+ signal-exit: "npm:^4.1.0"
+ checksum: 10c0/c2ba89131eea791d1b25205bdfdc86699767e2b88dee2a590b1a6caa51737deac8bad0260a5ded2f7c074b7db2f3a626bcf1fcf3cdf35974cbeea5e2e6764f60
+ languageName: node
+ linkType: hard
+
"reusify@npm:^1.0.4":
version: 1.1.0
resolution: "reusify@npm:1.1.0"
@@ -9350,6 +8209,13 @@ __metadata:
languageName: node
linkType: hard
+"rfdc@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "rfdc@npm:1.4.1"
+ checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7
+ languageName: node
+ linkType: hard
+
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
@@ -9359,19 +8225,6 @@ __metadata:
languageName: node
linkType: hard
-"safe-array-concat@npm:^1.1.3":
- version: 1.1.4
- resolution: "safe-array-concat@npm:1.1.4"
- dependencies:
- call-bind: "npm:^1.0.9"
- call-bound: "npm:^1.0.4"
- get-intrinsic: "npm:^1.3.0"
- has-symbols: "npm:^1.1.0"
- isarray: "npm:^2.0.5"
- checksum: 10c0/95fb4904ab1d9360a666fe5ba6d88f1c4a3a39682739e4512cff809fc6b5722a94bd95189211015bfb45859a7ffbc3340ea303ae22721c91c59e8946d310975a
- languageName: node
- linkType: hard
-
"safe-buffer@npm:5.2.1, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
@@ -9386,27 +8239,6 @@ __metadata:
languageName: node
linkType: hard
-"safe-push-apply@npm:^1.0.0":
- version: 1.0.0
- resolution: "safe-push-apply@npm:1.0.0"
- dependencies:
- es-errors: "npm:^1.3.0"
- isarray: "npm:^2.0.5"
- checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750
- languageName: node
- linkType: hard
-
-"safe-regex-test@npm:^1.1.0":
- version: 1.1.0
- resolution: "safe-regex-test@npm:1.1.0"
- dependencies:
- call-bound: "npm:^1.0.2"
- es-errors: "npm:^1.3.0"
- is-regex: "npm:^1.2.1"
- checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665
- languageName: node
- linkType: hard
-
"safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
@@ -9475,7 +8307,7 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.7.4":
+"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.7.2, semver@npm:^7.7.4":
version: 7.7.4
resolution: "semver@npm:7.7.4"
bin:
@@ -9531,43 +8363,6 @@ __metadata:
languageName: node
linkType: hard
-"set-function-length@npm:^1.2.2":
- version: 1.2.2
- resolution: "set-function-length@npm:1.2.2"
- dependencies:
- define-data-property: "npm:^1.1.4"
- es-errors: "npm:^1.3.0"
- function-bind: "npm:^1.1.2"
- get-intrinsic: "npm:^1.2.4"
- gopd: "npm:^1.0.1"
- has-property-descriptors: "npm:^1.0.2"
- checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c
- languageName: node
- linkType: hard
-
-"set-function-name@npm:^2.0.2":
- version: 2.0.2
- resolution: "set-function-name@npm:2.0.2"
- dependencies:
- define-data-property: "npm:^1.1.4"
- es-errors: "npm:^1.3.0"
- functions-have-names: "npm:^1.2.3"
- has-property-descriptors: "npm:^1.0.2"
- checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316
- languageName: node
- linkType: hard
-
-"set-proto@npm:^1.0.0":
- version: 1.0.0
- resolution: "set-proto@npm:1.0.0"
- dependencies:
- dunder-proto: "npm:^1.0.1"
- es-errors: "npm:^1.3.0"
- es-object-atoms: "npm:^1.0.0"
- checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a
- languageName: node
- linkType: hard
-
"setprototypeof@npm:~1.2.0":
version: 1.2.0
resolution: "setprototypeof@npm:1.2.0"
@@ -9726,6 +8521,26 @@ __metadata:
languageName: node
linkType: hard
+"slice-ansi@npm:^7.1.0":
+ version: 7.1.2
+ resolution: "slice-ansi@npm:7.1.2"
+ dependencies:
+ ansi-styles: "npm:^6.2.1"
+ is-fullwidth-code-point: "npm:^5.0.0"
+ checksum: 10c0/36742f2eb0c03e2e81a38ed14d13a64f7b732fe38c3faf96cce0599788a345011e840db35f1430ca606ea3f8db2abeb92a8d25c2753a819e3babaa10c2e289a2
+ languageName: node
+ linkType: hard
+
+"slice-ansi@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "slice-ansi@npm:8.0.0"
+ dependencies:
+ ansi-styles: "npm:^6.2.3"
+ is-fullwidth-code-point: "npm:^5.1.0"
+ checksum: 10c0/0ce4aa91febb7cea4a00c2c27bb820fa53b6d2862ce0f80f7120134719f7914fc416b0ed966cf35250a3169e152916392f35917a2d7cad0fcc5d8b841010fa9a
+ languageName: node
+ linkType: hard
+
"smart-buffer@npm:^4.2.0":
version: 4.2.0
resolution: "smart-buffer@npm:4.2.0"
@@ -9886,16 +8701,6 @@ __metadata:
languageName: node
linkType: hard
-"stop-iteration-iterator@npm:^1.1.0":
- version: 1.1.0
- resolution: "stop-iteration-iterator@npm:1.1.0"
- dependencies:
- es-errors: "npm:^1.3.0"
- internal-slot: "npm:^1.1.0"
- checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09
- languageName: node
- linkType: hard
-
"stream-combiner2@npm:~1.1.1":
version: 1.1.1
resolution: "stream-combiner2@npm:1.1.1"
@@ -9913,10 +8718,10 @@ __metadata:
languageName: node
linkType: hard
-"string-natural-compare@npm:^3.0.1":
- version: 3.0.1
- resolution: "string-natural-compare@npm:3.0.1"
- checksum: 10c0/85a6a9195736be500af5d817c7ea36b7e1ac278af079a807f70f79a56602359ee6743ca409af6291b94557de550ff60d1ec31b3c4fc8e7a08d0e12cdab57c149
+"string-argv@npm:^0.3.2":
+ version: 0.3.2
+ resolution: "string-argv@npm:0.3.2"
+ checksum: 10c0/75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82
languageName: node
linkType: hard
@@ -9942,72 +8747,13 @@ __metadata:
languageName: node
linkType: hard
-"string.prototype.matchall@npm:^4.0.12":
- version: 4.0.12
- resolution: "string.prototype.matchall@npm:4.0.12"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.3"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.6"
- es-errors: "npm:^1.3.0"
- es-object-atoms: "npm:^1.0.0"
- get-intrinsic: "npm:^1.2.6"
- gopd: "npm:^1.2.0"
- has-symbols: "npm:^1.1.0"
- internal-slot: "npm:^1.1.0"
- regexp.prototype.flags: "npm:^1.5.3"
- set-function-name: "npm:^2.0.2"
- side-channel: "npm:^1.1.0"
- checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c
- languageName: node
- linkType: hard
-
-"string.prototype.repeat@npm:^1.0.0":
- version: 1.0.0
- resolution: "string.prototype.repeat@npm:1.0.0"
- dependencies:
- define-properties: "npm:^1.1.3"
- es-abstract: "npm:^1.17.5"
- checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40
- languageName: node
- linkType: hard
-
-"string.prototype.trim@npm:^1.2.10":
- version: 1.2.10
- resolution: "string.prototype.trim@npm:1.2.10"
+"string-width@npm:^8.2.0":
+ version: 8.2.1
+ resolution: "string-width@npm:8.2.1"
dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.2"
- define-data-property: "npm:^1.1.4"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.5"
- es-object-atoms: "npm:^1.0.0"
- has-property-descriptors: "npm:^1.0.2"
- checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8
- languageName: node
- linkType: hard
-
-"string.prototype.trimend@npm:^1.0.9":
- version: 1.0.9
- resolution: "string.prototype.trimend@npm:1.0.9"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.2"
- define-properties: "npm:^1.2.1"
- es-object-atoms: "npm:^1.0.0"
- checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6
- languageName: node
- linkType: hard
-
-"string.prototype.trimstart@npm:^1.0.8":
- version: 1.0.8
- resolution: "string.prototype.trimstart@npm:1.0.8"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- es-object-atoms: "npm:^1.0.0"
- checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366
+ get-east-asian-width: "npm:^1.5.0"
+ strip-ansi: "npm:^7.1.2"
+ checksum: 10c0/d467b4eaf4c40a01bb438a2620e77badd2456ffd5131c9973abe4f3acf7c802d5b21f3b6a00a5e33a7fc28ca8f9c103226e01bac61e9f259659c6f46d78e353a
languageName: node
linkType: hard
@@ -10047,7 +8793,7 @@ __metadata:
languageName: node
linkType: hard
-"strip-ansi@npm:^7.1.0":
+"strip-ansi@npm:^7.1.0, strip-ansi@npm:^7.1.2":
version: 7.2.0
resolution: "strip-ansi@npm:7.2.0"
dependencies:
@@ -10271,6 +9017,13 @@ __metadata:
languageName: node
linkType: hard
+"tinyexec@npm:^1.0.4":
+ version: 1.1.1
+ resolution: "tinyexec@npm:1.1.1"
+ checksum: 10c0/48433cb32573a767e2b63bb92343cbbae4240d05a19a63f7869f9447491305e7bd82d11daccb79b2628b596ad703a25798226c50bfd1d8e63477fb42af6a5b35
+ languageName: node
+ linkType: hard
+
"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15":
version: 0.2.16
resolution: "tinyglobby@npm:0.2.16"
@@ -10318,15 +9071,6 @@ __metadata:
languageName: node
linkType: hard
-"ts-api-utils@npm:^2.5.0":
- version: 2.5.0
- resolution: "ts-api-utils@npm:2.5.0"
- peerDependencies:
- typescript: ">=4.8.4"
- checksum: 10c0/767849383c114e7f1971fa976b20e73ac28fd0c70d8d65c0004790bf4d8f89888c7e4cf6d5949f9c1beae9bc3c64835bef77bbe27fddf45a3c7b60cebcf85c8c
- languageName: node
- linkType: hard
-
"ts-morph@npm:^27.0.0":
version: 27.0.2
resolution: "ts-morph@npm:27.0.2"
@@ -10403,59 +9147,6 @@ __metadata:
languageName: node
linkType: hard
-"typed-array-buffer@npm:^1.0.3":
- version: 1.0.3
- resolution: "typed-array-buffer@npm:1.0.3"
- dependencies:
- call-bound: "npm:^1.0.3"
- es-errors: "npm:^1.3.0"
- is-typed-array: "npm:^1.1.14"
- checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079
- languageName: node
- linkType: hard
-
-"typed-array-byte-length@npm:^1.0.3":
- version: 1.0.3
- resolution: "typed-array-byte-length@npm:1.0.3"
- dependencies:
- call-bind: "npm:^1.0.8"
- for-each: "npm:^0.3.3"
- gopd: "npm:^1.2.0"
- has-proto: "npm:^1.2.0"
- is-typed-array: "npm:^1.1.14"
- checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e
- languageName: node
- linkType: hard
-
-"typed-array-byte-offset@npm:^1.0.4":
- version: 1.0.4
- resolution: "typed-array-byte-offset@npm:1.0.4"
- dependencies:
- available-typed-arrays: "npm:^1.0.7"
- call-bind: "npm:^1.0.8"
- for-each: "npm:^0.3.3"
- gopd: "npm:^1.2.0"
- has-proto: "npm:^1.2.0"
- is-typed-array: "npm:^1.1.15"
- reflect.getprototypeof: "npm:^1.0.9"
- checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53
- languageName: node
- linkType: hard
-
-"typed-array-length@npm:^1.0.7":
- version: 1.0.7
- resolution: "typed-array-length@npm:1.0.7"
- dependencies:
- call-bind: "npm:^1.0.7"
- for-each: "npm:^0.3.3"
- gopd: "npm:^1.0.1"
- is-typed-array: "npm:^1.1.13"
- possible-typed-array-names: "npm:^1.0.0"
- reflect.getprototypeof: "npm:^1.0.6"
- checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295
- languageName: node
- linkType: hard
-
"typescript@npm:^6.0.3":
version: 6.0.3
resolution: "typescript@npm:6.0.3"
@@ -10485,18 +9176,6 @@ __metadata:
languageName: node
linkType: hard
-"unbox-primitive@npm:^1.1.0":
- version: 1.1.0
- resolution: "unbox-primitive@npm:1.1.0"
- dependencies:
- call-bound: "npm:^1.0.3"
- has-bigints: "npm:^1.0.2"
- has-symbols: "npm:^1.1.0"
- which-boxed-primitive: "npm:^1.1.1"
- checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982
- languageName: node
- linkType: hard
-
"unc-path-regex@npm:^0.1.2":
version: 0.1.2
resolution: "unc-path-regex@npm:0.1.2"
@@ -10511,15 +9190,6 @@ __metadata:
languageName: node
linkType: hard
-"undici@npm:^5.25.4":
- version: 5.29.0
- resolution: "undici@npm:5.29.0"
- dependencies:
- "@fastify/busboy": "npm:^2.0.0"
- checksum: 10c0/e4e4d631ca54ee0ad82d2e90e7798fa00a106e27e6c880687e445cc2f13b4bc87c5eba2a88c266c3eecffb18f26e227b778412da74a23acc374fca7caccec49b
- languageName: node
- linkType: hard
-
"undici@npm:^6.23.0, undici@npm:^6.25.0":
version: 6.25.0
resolution: "undici@npm:6.25.0"
@@ -10735,52 +9405,6 @@ __metadata:
languageName: node
linkType: hard
-"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1":
- version: 1.1.1
- resolution: "which-boxed-primitive@npm:1.1.1"
- dependencies:
- is-bigint: "npm:^1.1.0"
- is-boolean-object: "npm:^1.2.1"
- is-number-object: "npm:^1.1.1"
- is-string: "npm:^1.1.1"
- is-symbol: "npm:^1.1.1"
- checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe
- languageName: node
- linkType: hard
-
-"which-builtin-type@npm:^1.2.1":
- version: 1.2.1
- resolution: "which-builtin-type@npm:1.2.1"
- dependencies:
- call-bound: "npm:^1.0.2"
- function.prototype.name: "npm:^1.1.6"
- has-tostringtag: "npm:^1.0.2"
- is-async-function: "npm:^2.0.0"
- is-date-object: "npm:^1.1.0"
- is-finalizationregistry: "npm:^1.1.0"
- is-generator-function: "npm:^1.0.10"
- is-regex: "npm:^1.2.1"
- is-weakref: "npm:^1.0.2"
- isarray: "npm:^2.0.5"
- which-boxed-primitive: "npm:^1.1.0"
- which-collection: "npm:^1.0.2"
- which-typed-array: "npm:^1.1.16"
- checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471
- languageName: node
- linkType: hard
-
-"which-collection@npm:^1.0.2":
- version: 1.0.2
- resolution: "which-collection@npm:1.0.2"
- dependencies:
- is-map: "npm:^2.0.3"
- is-set: "npm:^2.0.3"
- is-weakmap: "npm:^2.0.2"
- is-weakset: "npm:^2.0.3"
- checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2
- languageName: node
- linkType: hard
-
"which-module@npm:^2.0.0":
version: 2.0.1
resolution: "which-module@npm:2.0.1"
@@ -10788,21 +9412,6 @@ __metadata:
languageName: node
linkType: hard
-"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19":
- version: 1.1.20
- resolution: "which-typed-array@npm:1.1.20"
- dependencies:
- available-typed-arrays: "npm:^1.0.7"
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.4"
- for-each: "npm:^0.3.5"
- get-proto: "npm:^1.0.1"
- gopd: "npm:^1.2.0"
- has-tostringtag: "npm:^1.0.2"
- checksum: 10c0/16fcdada95c8afb821cd1117f0ab50b4d8551677ac08187f21d4e444530913c9ffd2dac634f0c1183345f96344b69280f40f9a8bc52164ef409e555567c2604b
- languageName: node
- linkType: hard
-
"which@npm:^2.0.1":
version: 2.0.2
resolution: "which@npm:2.0.2"
@@ -10947,7 +9556,7 @@ __metadata:
languageName: node
linkType: hard
-"yaml@npm:^2.2.1, yaml@npm:^2.6.1":
+"yaml@npm:^2.2.1, yaml@npm:^2.6.1, yaml@npm:^2.8.2":
version: 2.8.3
resolution: "yaml@npm:2.8.3"
bin:
@@ -11064,16 +9673,7 @@ __metadata:
languageName: node
linkType: hard
-"zod-validation-error@npm:^3.5.0 || ^4.0.0":
- version: 4.0.2
- resolution: "zod-validation-error@npm:4.0.2"
- peerDependencies:
- zod: ^3.25.0 || ^4.0.0
- checksum: 10c0/0ccfec48c46de1be440b719cd02044d4abb89ed0e14c13e637cd55bf29102f67ccdba373f25def0fc7130e5f15025be4d557a7edcc95d5a3811599aade689e1b
- languageName: node
- linkType: hard
-
-"zod@npm:^3.25.0 || ^4.0.0, zod@npm:^4.0.5":
+"zod@npm:^4.0.5":
version: 4.3.6
resolution: "zod@npm:4.3.6"
checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307