OverviewFilesCommitsIssuesDocsReleasesPeers

cthuloid commits / e33c905

android: Cthuloid Lights skeleton -- worklet serves the web UI in a WebView
React Native 0.86 + react-native-bare-kit 0.14.5 (pinned) + WebView, from favela-surface-android's proven setup. The worklet (lib/worklet.js) runs cthuloid-web's createApp with the page files embedded and tells the shell where the page is ({t:'ready', url} over IPC); storage is the one argv. The shell copies the bundle out of the APK by build stamp and starts it from a file path; bare-kit's suspend-on-background is kept on purpose (the lamps free this phone's slots when its sockets drop). Build: prebuild (embed assets, bare-pack --preset android, stamp, stage addons with the ELF NEEDED keep-list) then gradle assembleRelease. Identity org.circusautomatic.cthuloid; release signing only from CTHULOID_KEYSTORE (no default key). Copied verbatim from favela: utf8.js, verify-apk-addons.mjs; stage-addons.mjs adapted (no loader / OTA asset). Verified off-device (no phone yet; no KVM for an emulator): worklet tests 2/2; the same entry packed for Linux and run serves page + API with no static/ on disk; Android bundle 0.8 MB demanding 7 addons; release build OK -- 92 MB unsigned arm64 APK with worklet bundle, Hermes JS bundle, and 8 Bare addons; verify-apk-addons: every NEEDED entry satisfied. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e33c905d2e4e8f3dd075ad7ced83bf1e97578cc3
by plankatron <fleeky@gmail.com> · 2026-10-02T15:56:39.000Z

Changed files (23) +8453 -0

android/.gitignore +11 -0
……@@ -0,0 +1,11 @@
1node_modules/
2android/build/
3android/app/build/
4android/.gradle/
5android/local.properties
6android/app/src/main/assets/worklet.bundle
7android/app/src/main/assets/worklet.bundle.stamp
8android/app/addon-keep.json
9*.apk
10dist/
11android/app/.cxx/
android/android/app/build.gradle +181 -0
……@@ -0,0 +1,181 @@
1apply plugin: "com.android.application"
2apply plugin: "org.jetbrains.kotlin.android"
3apply plugin: "com.facebook.react"
4
5// Adapted from favela-surface-android/android/app/build.gradle (2026-10-02). Kept: the addon exclusion
6// (per-ABI keep-list), arm64-only, versions from package.json. Changed: identity, and the release key
7// must come from the environment (no default key, no default password).
8
9// The one version number this app has (CI sets package.json from the android-v<x.y.z> tag).
10def appPkg = new groovy.json.JsonSlurper().parseText(file("../../package.json").getText("UTF-8"))
11def appVersion = appPkg.version
12def appParts = appVersion.tokenize(".")
13def appVersionCode = appParts[0].toInteger() * 10000 + appParts[1].toInteger() * 100 + appParts[2].toInteger()
14
15// Native addons the worklet bundle does NOT demand, computed at configure time.
16//
17// bare-link (which bare-kit runs from its own `preBuild.dependsOn link`) walks the PACKAGE graph and
18// stages every dependency whose package.json says `addon: true`. bare-pack resolves the MODULE graph
19// reachable from lib/node.js. The difference is real: 61 staged vs 40 demanded on 0.0.1 — 21 libs and
20// 50 MB of arm64, including four stale rocksdb-native versions (3.15.0/3.15.2/3.16.0/3.17.1) reached
21// only through the symlinked sibling checkouts, each carrying its own installed node_modules.
22//
23// ⛔ THIS MUST BE A PACKAGING EXCLUDE, NOT A PRUNE. Deleting the extra files before the build does
24// nothing — bare-kit's link task restages all four hosts on every build, so a pruned tree produces a
25// BYTE-IDENTICAL APK (measured). Packaging is the one point downstream of restaging.
26//
27// The bundle header is the source of truth, so this cannot go stale as dependencies move: it names
28// exactly what bare-kit will dlopen. We only ever exclude libs absent from that list, so this can
29// shrink the APK but never break a load. Requires `npm run prebuild:android` first (it packs the
30// bundle and populates the addon dir this enumerates).
31def computeUndemandedAddons() {
32 def worklet = file("src/main/assets/worklet.bundle")
33 def addonsDir = file("../../node_modules/react-native-bare-kit/android/src/main/addons")
34
35 if (!worklet.exists()) {
36 logger.warn("WARNING: no worklet.bundle — run `npm run prebuild:android`. " +
37 "Packaging every staged addon; the APK will be much larger than it needs to be.")
38 return []
39 }
40 if (!addonsDir.exists()) return []
41
42 def raf = new RandomAccessFile(worklet, "r")
43 try {
44 // bare-bundle layout: ASCII decimal header length, "\n", then that many bytes of JSON.
45 def digits = new StringBuilder()
46 int c
47 while ((c = raf.read()) != -1 && c != 10) digits.append((char) c)
48 byte[] header = new byte[digits.toString().trim() as int]
49 raf.readFully(header)
50
51 def parsed = new groovy.json.JsonSlurper().parseText(new String(header, "UTF-8").trim())
52 def demanded = parsed.addons.collect { it.replaceFirst(/^linked:/, "") } as Set
53
54 def excess = [] as Set
55 addonsDir.eachDir { abi ->
56 abi.eachFileMatch(~/.*\.so/) { so ->
57 // ABI-qualified for the same reason as the keep-list branch above, so both branches hand
58 // `jniLibs.excludes` the same shape and it never has to know which one it got.
59 if (!demanded.contains(so.name)) excess << ("**/" + abi.name + "/" + so.name)
60 }
61 }
62 logger.lifecycle("addons: ${demanded.size()} demanded by bundle, ${excess.size()} excluded")
63 return excess.toList().sort()
64 } finally {
65 raf.close()
66 }
67}
68
69// ⛔ PREFER THE KEEP-LIST. computeUndemandedAddons() below reads the bundle header, which names only
70// what the JS MODULE graph imports. A demanded addon can LINK against another .so that no JS module
71// imports — libbare-fs.4.7.3.so needs libbare-buffer.3.6.1.so — and excluding it produced a load
72// failure that surfaced as ADDON_NOT_FOUND (resolution succeeded; dlopen did not). scripts/stage-addons.mjs
73// computes the transitive ELF NEEDED closure and writes addon-keep.json; when it is present it wins.
74// Its absence falls back to the header-only computation, which is better than nothing but is the thing
75// that broke pairing.
76def keepFile = file("addon-keep.json")
77if (keepFile.exists()) {
78 def keep = new groovy.json.JsonSlurper().parseText(keepFile.text)
79 def addonsDir = file("../../node_modules/react-native-bare-kit/android/src/main/addons")
80 def excess = [] as Set
81 if (addonsDir.exists()) {
82 addonsDir.eachDir { abi ->
83 def keepSet = (keep[abi.name] ?: []) as Set
84 // ⛔ QUALIFIED BY ABI, AND THIS IS THE WHOLE BUG. `excess` used to collect bare FILE NAMES
85 // across all four staged ABIs, and the exclude below wrote them as `**/<name>` — a pattern
86 // that matches every ABI. The keep-list is computed PER ABI (a library's ELF NEEDED closure
87 // differs between them), so a lib arm64 keeps and x86 does not was excluded from arm64 too.
88 //
89 // Measured on 0.0.33: arm64 kept libbare-os.3.8.7.so and libbare-url.2.4.1.so as native
90 // dependencies, the other three ABIs did not, and the APK shipped neither — so
91 // libbare-signals.4.2.0.so and libbare-fs.4.7.2.so could not dlopen. The app crash-looped
92 // on its own bundle, reporting ADDON_NOT_FOUND against bare-signals, which was present.
93 abi.eachFileMatch(~/.*\.so/) { so -> if (!keepSet.contains(so.name)) excess << ("**/" + abi.name + "/" + so.name) }
94 }
95 }
96 logger.lifecycle("addons: keep-list ${keep.values().collect { it.size() }.max() ?: 0} kept, ${excess.size()} excluded (native closure included)")
97 ext.undemandedAddons = excess.toList().sort()
98} else {
99 ext.undemandedAddons = computeUndemandedAddons()
100}
101
102react {
103 // Metro bundles app/index.js; bare-pack separately bundles the worklet into app/worklet.bundle,
104 // which Metro then picks up as an asset (.bundle is an assetExt) and ships as res/*.bundle.
105 // TWO BUNDLERS, TWO ARTIFACTS — see spec/architecture.md §6.2. They are not interchangeable and
106 // only the worklet bundle is covered by pgh-runtime OTA.
107 root = file("../../")
108 entryFile = file("../../app/index.js")
109 autolinkLibrariesWithApp()
110}
111
112android {
113 namespace "org.circusautomatic.cthuloid"
114 compileSdk rootProject.ext.compileSdkVersion
115 ndkVersion rootProject.ext.ndkVersion
116
117 defaultConfig {
118 applicationId "org.circusautomatic.cthuloid"
119 minSdk rootProject.ext.minSdkVersion
120 targetSdk rootProject.ext.targetSdkVersion
121 // From package.json, never typed here: a version that cannot move gets believed (favela).
122 versionName appVersion
123 // major*10000 + minor*100 + patch: never decreases while the version goes up.
124 versionCode appVersionCode
125
126 ndk {
127 // ⛔ ARM64 ONLY. An APK is a self-contained sideloadable ZIP with no notion of "the arch I
128 // need" — it carries every ABI under lib/ and the installer picks one at install time. The
129 // splitting lives in the STORE (Play generates per-device APKs from an AAB), and we
130 // distribute a direct .apk off the forge, so nothing splits for us. Without this filter the
131 // build packages all four: measured on 0.0.1, 475.8 MB of a 527 MB APK was native libs, of
132 // which ~351 MB was armeabi-v7a + x86 + x86_64. Every user downloads and stores all four to
133 // run one.
134 //
135 // Nothing else is worth carrying: minSdk is 31, so a 32-bit-only armeabi-v7a device is
136 // effectively nonexistent, and x86/x86_64 are emulators and Chromebooks, not phones. To
137 // build for an emulator (spike 3/5), override on the command line rather than editing this:
138 // ./gradlew assembleRelease -PreactNativeArchitectures=x86_64 (and drop this filter)
139 abiFilters "arm64-v8a"
140 }
141 }
142
143 signingConfigs {
144 // ⛔ A DURABLE KEY, supplied by CI (DESIGN-android.md §5). Android refuses to UPGRADE an APK signed
145 // with a different key; the only way out is uninstall, which wipes the app's data. So there is no
146 // default here: a release build without the key fails instead of being signed with the wrong one.
147 release {
148 def ks = System.getenv("CTHULOID_KEYSTORE")
149 if (ks) {
150 storeFile file(ks)
151 storePassword System.getenv("CTHULOID_KEYSTORE_PASS")
152 keyAlias System.getenv("CTHULOID_KEY_ALIAS") ?: "cthuloid"
153 keyPassword System.getenv("CTHULOID_KEY_PASS") ?: System.getenv("CTHULOID_KEYSTORE_PASS")
154 }
155 }
156 }
157
158 buildTypes {
159 // Debug builds use Android's per-machine debug key: local checks only, never distributed.
160 release {
161 if (System.getenv("CTHULOID_KEYSTORE")) signingConfig signingConfigs.release
162 minifyEnabled false
163 }
164 }
165
166 packagingOptions {
167 // bare-kit and our addons both ship libc++_shared; first one wins rather than failing the build.
168 pickFirst "**/libc++_shared.so"
169
170 jniLibs {
171 // Already full `**/<abi>/<name>` patterns — see the note where they are built. Re-prefixing
172 // them here is what produced a cross-ABI exclude.
173 excludes += undemandedAddons
174 }
175 }
176}
177
178dependencies {
179 implementation("com.facebook.react:react-android")
180 implementation("com.facebook.react:hermes-android")
181}
android/android/app/src/main/AndroidManifest.xml +24 -0
……@@ -0,0 +1,24 @@
1<manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
3 <!-- INTERNET: TCP to the lamps on the LAN. ACCESS_NETWORK_STATE: NsdManager (step 3). -->
4 <uses-permission android:name="android.permission.INTERNET" />
5 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
6
7 <application
8 android:name=".MainApplication"
9 android:label="@string/app_name"
10 android:allowBackup="false"
11 android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
12 android:networkSecurityConfig="@xml/network_security_config">
13 <activity
14 android:name=".MainActivity"
15 android:exported="true"
16 android:launchMode="singleTask"
17 android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode">
18 <intent-filter>
19 <action android:name="android.intent.action.MAIN" />
20 <category android:name="android.intent.category.LAUNCHER" />
21 </intent-filter>
22 </activity>
23 </application>
24</manifest>
android/android/app/src/main/java/org/circusautomatic/cthuloid/MainActivity.kt +14 -0
……@@ -0,0 +1,14 @@
1package org.circusautomatic.cthuloid
2
3import com.facebook.react.ReactActivity
4import com.facebook.react.ReactActivityDelegate
5import com.facebook.react.defaults.DefaultReactActivityDelegate
6
7class MainActivity : ReactActivity() {
8 // Must match app/index.js registerComponent, or React Native renders a blank screen.
9 override fun getMainComponentName(): String = "cthuloid"
10
11 // fabricEnabled must be true: RN 0.82+ removed the old bridge (favela-surface-android).
12 override fun createReactActivityDelegate(): ReactActivityDelegate =
13 DefaultReactActivityDelegate(this, mainComponentName, true)
14}
android/android/app/src/main/java/org/circusautomatic/cthuloid/MainApplication.kt +39 -0
……@@ -0,0 +1,39 @@
1package org.circusautomatic.cthuloid
2
3import android.app.Application
4import com.facebook.react.PackageList
5import com.facebook.react.ReactApplication
6import com.facebook.react.ReactHost
7import com.facebook.react.ReactNativeHost
8import com.facebook.react.ReactPackage
9import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
10import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
11import com.facebook.react.defaults.DefaultReactNativeHost
12import com.facebook.react.soloader.OpenSourceMergedSoMapping
13import com.facebook.soloader.SoLoader
14
15// From favela-surface-android's MainApplication.kt, minus its own native package.
16class MainApplication : Application(), ReactApplication {
17
18 override val reactNativeHost: ReactNativeHost =
19 object : DefaultReactNativeHost(this) {
20 // react-native-bare-kit, -fs and -webview arrive by autolinking.
21 override fun getPackages(): List<ReactPackage> = PackageList(this).packages
22 override fun getJSMainModuleName(): String = "app/index"
23 override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
24 override val isHermesEnabled: Boolean = true
25 }
26
27 override val reactHost: ReactHost
28 get() = getDefaultReactHost(applicationContext, reactNativeHost)
29
30 override fun onCreate() {
31 super.onCreate()
32 // The merged-SO mapping, or SoLoader dies on libreact_featureflagsjni.so before the first frame.
33 SoLoader.init(this, OpenSourceMergedSoMapping)
34 // What actually switches RN to the bridgeless runtime the new architecture requires.
35 if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
36 load()
37 }
38 }
39}
android/android/app/src/main/res/values/strings.xml +1 -0
……@@ -0,0 +1 @@
1<resources><string name="app_name">Cthuloid Lights</string></resources>
android/android/app/src/main/res/xml/network_security_config.xml +9 -0
……@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- The page is served by the worklet on loopback. Android denies cleartext HTTP by default
3 (targetSdk 28+), so loopback is allowed explicitly, and only loopback (favela-surface-android). -->
4<network-security-config>
5 <domain-config cleartextTrafficPermitted="true">
6 <domain includeSubdomains="false">127.0.0.1</domain>
7 <domain includeSubdomains="false">localhost</domain>
8 </domain-config>
9</network-security-config>
android/android/build.gradle +23 -0
……@@ -0,0 +1,23 @@
1buildscript {
2 ext {
3 buildToolsVersion = "34.0.0"
4 minSdkVersion = 29 // Android 10, matching what react-native-bare-kit 0.14.5 declares and
5 // what Keet 4.20.0 ships. ⛔ DO NOT BUMP react-native-bare-kit TO 0.15.0:
6 // that release raises the core AAR's own minSdk to 31 AND links
7 // libnativehelper.so, which is not in the app linker namespace below
8 // API 31 — so libappmodules.so fails to load, RN swallows the
9 // UnsatisfiedLinkError in DefaultSoLoader, and it surfaces much later as
10 // a bogus "TurboModuleRegistry ... 'DeviceInfo' could not be found".
11 // 0.14.5's libbare-kit.so is byte-identical to the one Keet runs.
12 compileSdkVersion = 34
13 targetSdkVersion = 34
14 ndkVersion = "27.1.12297006" // RN 0.86.2 declares this. NDK 26 fails: RN uses std::format
15 // (C++20) and NDK 26 libc++ has no std::format. Not optional.
16 }
17 repositories { google(); mavenCentral() }
18 dependencies {
19 classpath("com.android.tools.build:gradle")
20 classpath("com.facebook.react:react-native-gradle-plugin")
21 classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
22 }
23}
android/android/gradle.properties +12 -0
……@@ -0,0 +1,12 @@
1org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
2android.useAndroidX=true
3# New architecture is MANDATORY from RN 0.82 — overriding it to false throws at activity start
4# ("Overriding isNewArchEnabled to false is not supported anymore since React Native 0.82").
5# It is not an optional moving part; bare-kit is a C++ module either way.
6newArchEnabled=true
7hermesEnabled=true
8
9# Build native code for arm64 only. abiFilters in app/build.gradle is what decides what gets PACKAGED;
10# this stops RN compiling the other three in the first place, so it is build time and .cxx disk, not
11# APK size. Kept as a property so an emulator build can override it with -PreactNativeArchitectures.
12reactNativeArchitectures=arm64-v8a
android/android/gradle/wrapper/gradle-wrapper.properties +5 -0
……@@ -0,0 +1,5 @@
1distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
2distributionBase=GRADLE_USER_HOME
3distributionPath=wrapper/dists
4zipStoreBase=GRADLE_USER_HOME
5zipStorePath=wrapper/dists
android/android/settings.gradle +6 -0
……@@ -0,0 +1,6 @@
1pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
2plugins { id("com.facebook.react.settings") }
3extensions.configure(com.facebook.react.ReactSettingsExtension) { ex -> ex.autolinkLibrariesFromCommand() }
4rootProject.name = 'cthuloid-android'
5include ':app'
6includeBuild('../node_modules/@react-native/gradle-plugin')
android/app/App.jsx +90 -0
……@@ -0,0 +1,90 @@
1// Cthuloid Lights -- the app shell. THE UI IS the web UI: the same page cthuloid-web
2// serves on stortron, served here by the same controller running in this app's
3// worklet, shown in a WebView. Nothing about lamps lives in this file.
4import React, { useEffect, useState, useCallback, useRef } from 'react'
5import { View, Text, ActivityIndicator, StyleSheet, SafeAreaView, BackHandler, Pressable } from 'react-native'
6import { WebView } from 'react-native-webview'
7import { startWorklet } from './worklet-host'
8
9function Center ({ children }) {
10 return <View style={s.center}>{children}</View>
11}
12
13export default function App () {
14 const [url, setUrl] = useState(null)
15 const [error, setError] = useState(null)
16 const [stage, setStage] = useState('starting…')
17
18 const boot = useCallback(async () => {
19 setError(null)
20 const host = await startWorklet() // memoised: a retry reuses the running worklet
21 host.onMessage((m) => {
22 if (m.t === 'log') setStage(m.msg)
23 else if (m.t === 'ready') setUrl(m.url)
24 else if (m.t === 'fatal') setError(m.error)
25 })
26 }, [])
27
28 useEffect(() => { boot().catch((e) => setError(e.message)) }, [boot])
29
30 if (error) {
31 return (
32 <Center>
33 <Text style={s.err}>{error}</Text>
34 <Pressable onPress={() => boot().catch((e) => setError(e.message))}><Text style={s.retry}>try again</Text></Pressable>
35 </Center>
36 )
37 }
38 if (!url) return <Center><ActivityIndicator /><Text style={s.dim}>{stage}</Text></Center>
39 return <Page url={url} />
40}
41
42function Page ({ url }) {
43 const ref = useRef(null)
44 const [canBack, setCanBack] = useState(false)
45 const [failed, setFailed] = useState(null)
46
47 // Hardware BACK follows page history before leaving the app.
48 useEffect(() => {
49 const sub = BackHandler.addEventListener('hardwareBackPress', () => {
50 if (canBack && ref.current) { ref.current.goBack(); return true }
51 return false
52 })
53 return () => sub.remove()
54 }, [canBack])
55
56 if (failed) {
57 return (
58 <Center>
59 <Text style={s.err}>could not load the page</Text>
60 <Text style={s.dim}>{failed}</Text>
61 <Pressable onPress={() => setFailed(null)}><Text style={s.retry}>retry</Text></Pressable>
62 </Center>
63 )
64 }
65
66 return (
67 <SafeAreaView style={s.fill}>
68 <WebView
69 ref={ref}
70 source={{ uri: url }}
71 onNavigationStateChange={(nav) => setCanBack(nav.canGoBack)}
72 // The page comes from this device only; navigating off loopback is a bug.
73 originWhitelist={['http://127.0.0.1:*']}
74 onError={(e) => setFailed(String((e.nativeEvent && e.nativeEvent.description) || 'load failed'))}
75 javaScriptEnabled
76 // localStorage keeps this phone's session id, name and swatches.
77 domStorageEnabled
78 style={s.fill}
79 />
80 </SafeAreaView>
81 )
82}
83
84const s = StyleSheet.create({
85 fill: { flex: 1 },
86 center: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 24 },
87 dim: { opacity: 0.6, marginTop: 12, textAlign: 'center' },
88 err: { color: '#c33', textAlign: 'center' },
89 retry: { marginTop: 16, textDecorationLine: 'underline' }
90})
android/app/index.js +9 -0
……@@ -0,0 +1,9 @@
1// Metro's entry. The worklet has its OWN entry (lib/worklet.js), packed by
2// bare-pack into an Android asset; the two bundlers share no module graph.
3//
4// ⚠ The name must match MainActivity.getMainComponentName() ("cthuloid"), or React
5// Native renders a blank screen with no error (favela-surface-android, app/index.js).
6import { AppRegistry } from 'react-native'
7import App from './App'
8
9AppRegistry.registerComponent('cthuloid', () => App)
android/app/utf8.js +110 -0
……@@ -0,0 +1,110 @@
1// Copied from favela-surface-android/lib/host/utf8.js (2026-10-02), unchanged.
2// UTF-8 ↔ bytes, dependency-free.
3//
4// ⛔ WHY THIS EXISTS AT ALL. react-native-bare-kit's IPC is a byte stream on both sides and does NOT
5// convert: `_read` pushes `new Uint8Array(data)` (index.js:59) and `_write` reads `.buffer` /
6// `.byteOffset` / `.byteLength` off whatever it is given (index.js:65). So:
7//
8// - `data.toString()` on a read chunk is Array.prototype.toString — it yields "123,34,116,..." (the
9// byte VALUES, comma-separated), not text. This silently fed garbage to the message parser and is
10// what made a fully-booted node look like "worklet did not become ready in 120000ms".
11// - writing a string writes nothing coherent, because a string has no `.buffer`.
12//
13// ⛔ NOT `b4a` and NOT `Buffer`. b4a's react-native entry does `require('react-native-b4a')` inside a
14// try/catch, and Metro resolves statically — an unresolvable require fails the BUILD, catch or no
15// catch. `Buffer` is not a React Native global. TextDecoder is not guaranteed present either. Hence
16// hand-rolled, and hence testable off-device (test/utf8.test.mjs).
17
18/**
19 * Encode a string to UTF-8 bytes.
20 */
21export function encodeUtf8 (str) {
22 const out = []
23 for (let i = 0; i < str.length; i++) {
24 let c = str.charCodeAt(i)
25 // Surrogate pair → one code point.
26 if (c >= 0xd800 && c <= 0xdbff && i + 1 < str.length) {
27 const next = str.charCodeAt(i + 1)
28 if (next >= 0xdc00 && next <= 0xdfff) {
29 c = 0x10000 + ((c - 0xd800) << 10) + (next - 0xdc00)
30 i++
31 }
32 }
33 if (c < 0x80) out.push(c)
34 else if (c < 0x800) out.push(0xc0 | (c >> 6), 0x80 | (c & 0x3f))
35 else if (c < 0x10000) out.push(0xe0 | (c >> 12), 0x80 | ((c >> 6) & 0x3f), 0x80 | (c & 0x3f))
36 else {
37 out.push(0xf0 | (c >> 18), 0x80 | ((c >> 12) & 0x3f), 0x80 | ((c >> 6) & 0x3f), 0x80 | (c & 0x3f))
38 }
39 }
40 return new Uint8Array(out)
41}
42
43/**
44 * Decode COMPLETE UTF-8 bytes to a string. For a whole buffer that is known not to end mid-character
45 * (a facet slice, a config file) — a stream needs createUtf8Decoder below instead.
46 */
47export function decodeUtf8 (bytes) {
48 const d = createUtf8Decoder()
49 return d(bytes)
50}
51
52/**
53 * A STATEFUL decoder, because this decodes a STREAM.
54 *
55 * IPC chunk boundaries are not character boundaries any more than they are message boundaries: a
56 * multi-byte character can straddle two reads. A stateless per-chunk decode would corrupt exactly those
57 * characters (the node's own log lines contain an em dash, so this is not hypothetical). Incomplete
58 * trailing sequences are therefore held back until their remaining bytes arrive.
59 *
60 * Returns a function: (Uint8Array) => string.
61 */
62export function createUtf8Decoder () {
63 let pending = new Uint8Array(0)
64
65 return function decode (chunk) {
66 let bytes = chunk
67 if (pending.length > 0) {
68 bytes = new Uint8Array(pending.length + chunk.length)
69 bytes.set(pending, 0)
70 bytes.set(chunk, pending.length)
71 pending = new Uint8Array(0)
72 }
73
74 // Find the start of a trailing incomplete sequence, if any, and hold it back.
75 let end = bytes.length
76 for (let i = bytes.length - 1; i >= 0 && i >= bytes.length - 3; i--) {
77 const b = bytes[i]
78 if ((b & 0xc0) === 0x80) continue // continuation byte — keep walking back
79 const need = b < 0x80 ? 1 : b < 0xe0 ? 2 : b < 0xf0 ? 3 : 4
80 if (i + need > bytes.length) end = i // sequence is cut off by the chunk boundary
81 break
82 }
83 if (end < bytes.length) {
84 pending = bytes.slice(end)
85 bytes = bytes.subarray(0, end)
86 }
87
88 let str = ''
89 for (let i = 0; i < bytes.length;) {
90 const b = bytes[i]
91 let c
92 if (b < 0x80) { c = b; i += 1 } else if (b < 0xe0) {
93 c = ((b & 0x1f) << 6) | (bytes[i + 1] & 0x3f); i += 2
94 } else if (b < 0xf0) {
95 c = ((b & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f); i += 3
96 } else {
97 c = ((b & 0x07) << 18) | ((bytes[i + 1] & 0x3f) << 12) | ((bytes[i + 2] & 0x3f) << 6) |
98 (bytes[i + 3] & 0x3f)
99 i += 4
100 }
101 if (c > 0xffff) {
102 c -= 0x10000
103 str += String.fromCharCode(0xd800 + (c >> 10), 0xdc00 + (c & 0x3ff))
104 } else {
105 str += String.fromCharCode(c)
106 }
107 }
108 return str
109 }
110}
android/app/worklet-host.js +68 -0
……@@ -0,0 +1,68 @@
1// Start the worklet and read what it says. The ONLY file that knows
2// react-native-bare-kit exists.
3//
4// Patterns from favela-surface-android/lib/host/worklet.js, where each was paid for:
5// * The bundle is started from a FILE PATH (Worklet.start(path, null, args)), copied
6// out of the APK assets natively. Passing it as a JS string ran the RN heap out of
7// memory on a phone once the bundle grew (ours is ~0.8 MB, but the path costs nothing).
8// * IPC is BYTES both ways; text conversion is ours (./utf8.js), and chunk
9// boundaries are neither message nor character boundaries.
10// * bare-kit suspends the worklet whenever the app goes to the background. favela
11// had to override that; here it is exactly right -- the lamps see the sockets go
12// and free this phone's slots at once.
13import { Worklet } from 'react-native-bare-kit'
14import RNFS from 'react-native-fs'
15import { encodeUtf8, createUtf8Decoder } from './utf8'
16
17const BUNDLE = 'worklet.bundle'
18let started = null
19
20// Copy the bundle out of the APK when this APK's build stamp differs from the copy's
21// (a new APK). Not by size: two builds can produce bundles of the same size.
22async function bundlePath (storage) {
23 const dest = storage + '/' + BUNDLE
24 const stampFile = dest + '.stamp'
25 let want = null
26 try { want = (await RNFS.readFileAssets(BUNDLE + '.stamp', 'utf8')).trim() } catch {}
27 let have = null
28 try { have = (await RNFS.readFile(stampFile, 'utf8')).trim() } catch {}
29 if (!want || want !== have || !(await RNFS.exists(dest))) {
30 try { await RNFS.unlink(dest) } catch {}
31 await RNFS.copyFileAssets(BUNDLE, dest)
32 if (want) await RNFS.writeFile(stampFile, want, 'utf8')
33 }
34 return dest
35}
36
37// Resolves { onMessage(fn), send(obj), worklet } once the worklet is started.
38export function startWorklet () {
39 if (started) return started
40 started = (async () => {
41 const storage = RNFS.DocumentDirectoryPath
42 const path = await bundlePath(storage)
43 const worklet = new Worklet()
44 // Storage is the one positional argument, ever (see lib/worklet.js).
45 worklet.start(path, null, [storage])
46
47 const listeners = []
48 const decode = createUtf8Decoder()
49 let buf = ''
50 worklet.IPC.on('data', (data) => {
51 buf += decode(data)
52 let i
53 while ((i = buf.indexOf('\n')) !== -1) {
54 const line = buf.slice(0, i)
55 buf = buf.slice(i + 1)
56 let msg
57 try { msg = JSON.parse(line) } catch { continue }
58 for (const fn of listeners) fn(msg)
59 }
60 })
61 return {
62 worklet,
63 onMessage (fn) { listeners.push(fn) },
64 send (obj) { worklet.IPC.write(encodeUtf8(JSON.stringify(obj) + '\n')) }
65 }
66 })()
67 return started
68}
android/babel.config.cjs +1 -0
……@@ -0,0 +1 @@
1module.exports = { presets: ['@react-native/babel-preset'] }
android/lib/worklet.js +68 -0
……@@ -0,0 +1,68 @@
1// The worklet's entry: Bare, inside the Android app. Runs the SAME controller as
2// stortron (cthuloid-web's createApp) with the page files embedded, because a
3// packed bundle has no files on disk, and tells the React Native side where the
4// page is.
5//
6// IPC is newline-delimited JSON over BareKit.IPC (bytes both ways). This side
7// only ever SENDS in v1:
8// { t: 'log', msg } progress, also printed to the console (logcat)
9// { t: 'ready', url } the page is being served -- point the WebView here
10// { t: 'fatal', error } the controller could not start
11//
12// Storage arrives as the ONE argv entry. Nothing else is ever positional: in a
13// later version the APK and the bundle can differ, and a new positional argument
14// handed to an old bundle is read as something else (favela's argv trap).
15
16/* global BareKit, Bare */
17import fs from 'bare-fs'
18import path from 'bare-path'
19import { createApp } from 'cthuloid-web/lib/app.js'
20import assets from 'cthuloid-web/lib/assets.generated.js'
21
22const IPC = typeof BareKit !== 'undefined' ? BareKit.IPC : null
23
24function send (msg) {
25 const line = JSON.stringify(msg)
26 console.log('[cthuloid] ' + line)
27 if (IPC) {
28 try { IPC.write(Buffer.from(line + '\n')) } catch { /* the UI went away; keep serving */ }
29 }
30}
31
32// Reuse last run's port, so a restarted worklet serves the URL the WebView knows.
33function lastPort (storage) {
34 try {
35 const p = JSON.parse(fs.readFileSync(path.join(storage, 'port.json'), 'utf8')).port
36 return Number.isInteger(p) && p > 0 && p < 65536 ? p : 0
37 } catch {
38 return 0
39 }
40}
41
42async function listenPreferring (storage, port) {
43 const configDir = path.join(storage, 'cthuloid-web')
44 try {
45 const app = createApp({ configDir, port, assets })
46 return { app, ...(await app.listen()) }
47 } catch (err) {
48 if (port === 0) throw err
49 send({ t: 'log', msg: 'port ' + port + ' busy (' + err.message + '), taking any' })
50 const app = createApp({ configDir, port: 0, assets })
51 return { app, ...(await app.listen()) }
52 }
53}
54
55export async function start (storage) {
56 fs.mkdirSync(storage, { recursive: true })
57 send({ t: 'log', msg: 'starting the controller' })
58 const { app, host, port } = await listenPreferring(storage, lastPort(storage))
59 try { fs.writeFileSync(path.join(storage, 'port.json'), JSON.stringify({ port })) } catch {}
60 const url = 'http://' + host + ':' + port + '/'
61 send({ t: 'ready', url })
62 return { app, url }
63}
64
65if (typeof Bare !== 'undefined' && Bare.argv.length > 1 && !globalThis.CTHULOID_NO_AUTOSTART) {
66 const storage = Bare.argv[Bare.argv.length - 1]
67 start(storage).catch((err) => send({ t: 'fatal', error: (err && err.stack) || String(err) }))
68}
android/metro.config.cjs +20 -0
……@@ -0,0 +1,20 @@
1const { getDefaultConfig } = require('@react-native/metro-config')
2
3/**
4 * ⛔ THE WORKLET BUNDLE IS NOT A METRO ASSET. It used to be — `.bundle` was added to `assetExts` and
5 * app/worklet.js did `import bundle from './worklet.bundle'`. That does NOT yield the bytes: Metro
6 * registers the file in its asset registry and the import evaluates to a NUMBER (the asset id), so
7 * bare-kit rejected it on first launch with
8 *
9 * TypeError: Source must be a string or TypedArray. Received type number (1)
10 *
11 * (`react-native-bare-kit/index.js:189` — source must be a string or a TypedArray.)
12 *
13 * The bundle now ships as an ANDROID asset instead (`android/app/src/main/assets/worklet.bundle`,
14 * written there by `npm run pack:worklet`) and app/worklet.js reads its bytes at runtime. Metro never
15 * sees it, which is also why nothing here needs to teach Metro about the extension.
16 *
17 * The seam between the two bundlers (spec/architecture.md §6.2) is therefore the Android asset, not a
18 * Metro one: Metro owns the RN tree, bare-pack owns the worklet, and they meet on the filesystem.
19 */
20module.exports = getDefaultConfig(__dirname)
android/package-lock.json +7375 -0
……@@ -0,0 +1,7375 @@
1{
2 "name": "cthuloid-android",
3 "version": "0.1.0",
4 "lockfileVersion": 3,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "cthuloid-android",
9 "version": "0.1.0",
10 "dependencies": {
11 "bare-fs": "^4.8.1",
12 "bare-path": "^3.1.2",
13 "cthuloid-web": "file:../webui",
14 "react": "^19.2.8",
15 "react-native": "^0.86.2",
16 "react-native-bare-kit": "0.14.5",
17 "react-native-fs": "^2.20.0",
18 "react-native-webview": "^14.0.1"
19 },
20 "devDependencies": {
21 "@react-native-community/cli": "^20.2.0",
22 "@react-native/babel-preset": "^0.86.2",
23 "@react-native/metro-config": "^0.86.2",
24 "bare-link": "*",
25 "bare-pack": "*",
26 "brittle": "4.1.1"
27 }
28 },
29 "../webui": {
30 "name": "cthuloid-web",
31 "version": "0.2.1",
32 "dependencies": {
33 "bare-events": "^2.9.2",
34 "bare-fs": "^4.8.1",
35 "bare-http1": "^4.6.1",
36 "bare-net": "^2.3.3",
37 "bare-os": "^3.9.3",
38 "bare-path": "^3.1.2",
39 "bare-process": "^4.5.1",
40 "bare-subprocess": "6.1.0"
41 },
42 "bin": {
43 "cthuloid-web": "index.js"
44 },
45 "devDependencies": {
46 "brittle": "4.1.1"
47 }
48 },
49 "node_modules/@babel/code-frame": {
50 "version": "7.29.7",
51 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
52 "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
53 "license": "MIT",
54 "dependencies": {
55 "@babel/helper-validator-identifier": "^7.29.7",
56 "js-tokens": "^4.0.0",
57 "picocolors": "^1.1.1"
58 },
59 "engines": {
60 "node": ">=6.9.0"
61 }
62 },
63 "node_modules/@babel/compat-data": {
64 "version": "7.29.7",
65 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
66 "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
67 "license": "MIT",
68 "engines": {
69 "node": ">=6.9.0"
70 }
71 },
72 "node_modules/@babel/core": {
73 "version": "7.29.7",
74 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
75 "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
76 "license": "MIT",
77 "peer": true,
78 "dependencies": {
79 "@babel/code-frame": "^7.29.7",
80 "@babel/generator": "^7.29.7",
81 "@babel/helper-compilation-targets": "^7.29.7",
82 "@babel/helper-module-transforms": "^7.29.7",
83 "@babel/helpers": "^7.29.7",
84 "@babel/parser": "^7.29.7",
85 "@babel/template": "^7.29.7",
86 "@babel/traverse": "^7.29.7",
87 "@babel/types": "^7.29.7",
88 "@jridgewell/remapping": "^2.3.5",
89 "convert-source-map": "^2.0.0",
90 "debug": "^4.1.0",
91 "gensync": "^1.0.0-beta.2",
92 "json5": "^2.2.3",
93 "semver": "^6.3.1"
94 },
95 "engines": {
96 "node": ">=6.9.0"
97 },
98 "funding": {
99 "type": "opencollective",
100 "url": "https://opencollective.com/babel"
101 }
102 },
103 "node_modules/@babel/core/node_modules/semver": {
104 "version": "6.3.1",
105 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
106 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
107 "license": "ISC",
108 "bin": {
109 "semver": "bin/semver.js"
110 }
111 },
112 "node_modules/@babel/generator": {
113 "version": "7.29.8",
114 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
115 "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
116 "license": "MIT",
117 "dependencies": {
118 "@babel/parser": "^7.29.8",
119 "@babel/types": "^7.29.8",
120 "@jridgewell/gen-mapping": "^0.3.12",
121 "@jridgewell/trace-mapping": "^0.3.28",
122 "jsesc": "^3.0.2"
123 },
124 "engines": {
125 "node": ">=6.9.0"
126 }
127 },
128 "node_modules/@babel/helper-annotate-as-pure": {
129 "version": "7.29.7",
130 "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz",
131 "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==",
132 "devOptional": true,
133 "license": "MIT",
134 "dependencies": {
135 "@babel/types": "^7.29.7"
136 },
137 "engines": {
138 "node": ">=6.9.0"
139 }
140 },
141 "node_modules/@babel/helper-compilation-targets": {
142 "version": "7.29.7",
143 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
144 "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
145 "license": "MIT",
146 "dependencies": {
147 "@babel/compat-data": "^7.29.7",
148 "@babel/helper-validator-option": "^7.29.7",
149 "browserslist": "^4.24.0",
150 "lru-cache": "^5.1.1",
151 "semver": "^6.3.1"
152 },
153 "engines": {
154 "node": ">=6.9.0"
155 }
156 },
157 "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
158 "version": "6.3.1",
159 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
160 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
161 "license": "ISC",
162 "bin": {
163 "semver": "bin/semver.js"
164 }
165 },
166 "node_modules/@babel/helper-create-class-features-plugin": {
167 "version": "7.29.7",
168 "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz",
169 "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==",
170 "devOptional": true,
171 "license": "MIT",
172 "dependencies": {
173 "@babel/helper-annotate-as-pure": "^7.29.7",
174 "@babel/helper-member-expression-to-functions": "^7.29.7",
175 "@babel/helper-optimise-call-expression": "^7.29.7",
176 "@babel/helper-replace-supers": "^7.29.7",
177 "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
178 "@babel/traverse": "^7.29.7",
179 "semver": "^6.3.1"
180 },
181 "engines": {
182 "node": ">=6.9.0"
183 },
184 "peerDependencies": {
185 "@babel/core": "^7.0.0"
186 }
187 },
188 "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
189 "version": "6.3.1",
190 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
191 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
192 "devOptional": true,
193 "license": "ISC",
194 "bin": {
195 "semver": "bin/semver.js"
196 }
197 },
198 "node_modules/@babel/helper-create-regexp-features-plugin": {
199 "version": "7.29.7",
200 "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz",
201 "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==",
202 "devOptional": true,
203 "license": "MIT",
204 "dependencies": {
205 "@babel/helper-annotate-as-pure": "^7.29.7",
206 "regexpu-core": "^6.3.1",
207 "semver": "^6.3.1"
208 },
209 "engines": {
210 "node": ">=6.9.0"
211 },
212 "peerDependencies": {
213 "@babel/core": "^7.0.0"
214 }
215 },
216 "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
217 "version": "6.3.1",
218 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
219 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
220 "devOptional": true,
221 "license": "ISC",
222 "bin": {
223 "semver": "bin/semver.js"
224 }
225 },
226 "node_modules/@babel/helper-define-polyfill-provider": {
227 "version": "0.6.8",
228 "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz",
229 "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==",
230 "devOptional": true,
231 "license": "MIT",
232 "dependencies": {
233 "@babel/helper-compilation-targets": "^7.28.6",
234 "@babel/helper-plugin-utils": "^7.28.6",
235 "debug": "^4.4.3",
236 "lodash.debounce": "^4.0.8",
237 "resolve": "^1.22.11"
238 },
239 "peerDependencies": {
240 "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
241 }
242 },
243 "node_modules/@babel/helper-globals": {
244 "version": "7.29.7",
245 "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
246 "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
247 "license": "MIT",
248 "engines": {
249 "node": ">=6.9.0"
250 }
251 },
252 "node_modules/@babel/helper-member-expression-to-functions": {
253 "version": "7.29.7",
254 "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz",
255 "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==",
256 "devOptional": true,
257 "license": "MIT",
258 "dependencies": {
259 "@babel/traverse": "^7.29.7",
260 "@babel/types": "^7.29.7"
261 },
262 "engines": {
263 "node": ">=6.9.0"
264 }
265 },
266 "node_modules/@babel/helper-module-imports": {
267 "version": "7.29.7",
268 "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
269 "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
270 "license": "MIT",
271 "dependencies": {
272 "@babel/traverse": "^7.29.7",
273 "@babel/types": "^7.29.7"
274 },
275 "engines": {
276 "node": ">=6.9.0"
277 }
278 },
279 "node_modules/@babel/helper-module-transforms": {
280 "version": "7.29.7",
281 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
282 "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
283 "license": "MIT",
284 "dependencies": {
285 "@babel/helper-module-imports": "^7.29.7",
286 "@babel/helper-validator-identifier": "^7.29.7",
287 "@babel/traverse": "^7.29.7"
288 },
289 "engines": {
290 "node": ">=6.9.0"
291 },
292 "peerDependencies": {
293 "@babel/core": "^7.0.0"
294 }
295 },
296 "node_modules/@babel/helper-optimise-call-expression": {
297 "version": "7.29.7",
298 "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz",
299 "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==",
300 "devOptional": true,
301 "license": "MIT",
302 "dependencies": {
303 "@babel/types": "^7.29.7"
304 },
305 "engines": {
306 "node": ">=6.9.0"
307 }
308 },
309 "node_modules/@babel/helper-plugin-utils": {
310 "version": "7.29.7",
311 "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
312 "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
313 "devOptional": true,
314 "license": "MIT",
315 "engines": {
316 "node": ">=6.9.0"
317 }
318 },
319 "node_modules/@babel/helper-remap-async-to-generator": {
320 "version": "7.29.7",
321 "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz",
322 "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==",
323 "devOptional": true,
324 "license": "MIT",
325 "dependencies": {
326 "@babel/helper-annotate-as-pure": "^7.29.7",
327 "@babel/helper-wrap-function": "^7.29.7",
328 "@babel/traverse": "^7.29.7"
329 },
330 "engines": {
331 "node": ">=6.9.0"
332 },
333 "peerDependencies": {
334 "@babel/core": "^7.0.0"
335 }
336 },
337 "node_modules/@babel/helper-replace-supers": {
338 "version": "7.29.7",
339 "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz",
340 "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==",
341 "devOptional": true,
342 "license": "MIT",
343 "dependencies": {
344 "@babel/helper-member-expression-to-functions": "^7.29.7",
345 "@babel/helper-optimise-call-expression": "^7.29.7",
346 "@babel/traverse": "^7.29.7"
347 },
348 "engines": {
349 "node": ">=6.9.0"
350 },
351 "peerDependencies": {
352 "@babel/core": "^7.0.0"
353 }
354 },
355 "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
356 "version": "7.29.7",
357 "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz",
358 "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==",
359 "devOptional": true,
360 "license": "MIT",
361 "dependencies": {
362 "@babel/traverse": "^7.29.7",
363 "@babel/types": "^7.29.7"
364 },
365 "engines": {
366 "node": ">=6.9.0"
367 }
368 },
369 "node_modules/@babel/helper-string-parser": {
370 "version": "7.29.7",
371 "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
372 "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
373 "license": "MIT",
374 "engines": {
375 "node": ">=6.9.0"
376 }
377 },
378 "node_modules/@babel/helper-validator-identifier": {
379 "version": "7.29.7",
380 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
381 "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
382 "license": "MIT",
383 "engines": {
384 "node": ">=6.9.0"
385 }
386 },
387 "node_modules/@babel/helper-validator-option": {
388 "version": "7.29.7",
389 "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
390 "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
391 "license": "MIT",
392 "engines": {
393 "node": ">=6.9.0"
394 }
395 },
396 "node_modules/@babel/helper-wrap-function": {
397 "version": "7.29.7",
398 "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz",
399 "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==",
400 "devOptional": true,
401 "license": "MIT",
402 "dependencies": {
403 "@babel/template": "^7.29.7",
404 "@babel/traverse": "^7.29.7",
405 "@babel/types": "^7.29.7"
406 },
407 "engines": {
408 "node": ">=6.9.0"
409 }
410 },
411 "node_modules/@babel/helpers": {
412 "version": "7.29.7",
413 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
414 "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
415 "license": "MIT",
416 "dependencies": {
417 "@babel/template": "^7.29.7",
418 "@babel/types": "^7.29.7"
419 },
420 "engines": {
421 "node": ">=6.9.0"
422 }
423 },
424 "node_modules/@babel/parser": {
425 "version": "7.29.9",
426 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz",
427 "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==",
428 "license": "MIT",
429 "dependencies": {
430 "@babel/types": "^7.29.8"
431 },
432 "bin": {
433 "parser": "bin/babel-parser.js"
434 },
435 "engines": {
436 "node": ">=6.0.0"
437 }
438 },
439 "node_modules/@babel/plugin-proposal-export-default-from": {
440 "version": "7.29.7",
441 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.29.7.tgz",
442 "integrity": "sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==",
443 "devOptional": true,
444 "license": "MIT",
445 "dependencies": {
446 "@babel/helper-plugin-utils": "^7.29.7"
447 },
448 "engines": {
449 "node": ">=6.9.0"
450 },
451 "peerDependencies": {
452 "@babel/core": "^7.0.0-0"
453 }
454 },
455 "node_modules/@babel/plugin-syntax-dynamic-import": {
456 "version": "7.8.3",
457 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
458 "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
459 "devOptional": true,
460 "license": "MIT",
461 "dependencies": {
462 "@babel/helper-plugin-utils": "^7.8.0"
463 },
464 "peerDependencies": {
465 "@babel/core": "^7.0.0-0"
466 }
467 },
468 "node_modules/@babel/plugin-syntax-export-default-from": {
469 "version": "7.29.7",
470 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.29.7.tgz",
471 "integrity": "sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==",
472 "devOptional": true,
473 "license": "MIT",
474 "dependencies": {
475 "@babel/helper-plugin-utils": "^7.29.7"
476 },
477 "engines": {
478 "node": ">=6.9.0"
479 },
480 "peerDependencies": {
481 "@babel/core": "^7.0.0-0"
482 }
483 },
484 "node_modules/@babel/plugin-syntax-flow": {
485 "version": "7.29.7",
486 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.29.7.tgz",
487 "integrity": "sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==",
488 "devOptional": true,
489 "license": "MIT",
490 "dependencies": {
491 "@babel/helper-plugin-utils": "^7.29.7"
492 },
493 "engines": {
494 "node": ">=6.9.0"
495 },
496 "peerDependencies": {
497 "@babel/core": "^7.0.0-0"
498 }
499 },
500 "node_modules/@babel/plugin-syntax-jsx": {
501 "version": "7.29.7",
502 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz",
503 "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==",
504 "devOptional": true,
505 "license": "MIT",
506 "dependencies": {
507 "@babel/helper-plugin-utils": "^7.29.7"
508 },
509 "engines": {
510 "node": ">=6.9.0"
511 },
512 "peerDependencies": {
513 "@babel/core": "^7.0.0-0"
514 }
515 },
516 "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
517 "version": "7.8.3",
518 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
519 "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
520 "devOptional": true,
521 "license": "MIT",
522 "dependencies": {
523 "@babel/helper-plugin-utils": "^7.8.0"
524 },
525 "peerDependencies": {
526 "@babel/core": "^7.0.0-0"
527 }
528 },
529 "node_modules/@babel/plugin-syntax-optional-chaining": {
530 "version": "7.8.3",
531 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
532 "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
533 "devOptional": true,
534 "license": "MIT",
535 "dependencies": {
536 "@babel/helper-plugin-utils": "^7.8.0"
537 },
538 "peerDependencies": {
539 "@babel/core": "^7.0.0-0"
540 }
541 },
542 "node_modules/@babel/plugin-syntax-typescript": {
543 "version": "7.29.7",
544 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz",
545 "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==",
546 "devOptional": true,
547 "license": "MIT",
548 "dependencies": {
549 "@babel/helper-plugin-utils": "^7.29.7"
550 },
551 "engines": {
552 "node": ">=6.9.0"
553 },
554 "peerDependencies": {
555 "@babel/core": "^7.0.0-0"
556 }
557 },
558 "node_modules/@babel/plugin-transform-async-generator-functions": {
559 "version": "7.29.7",
560 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz",
561 "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==",
562 "devOptional": true,
563 "license": "MIT",
564 "dependencies": {
565 "@babel/helper-plugin-utils": "^7.29.7",
566 "@babel/helper-remap-async-to-generator": "^7.29.7",
567 "@babel/traverse": "^7.29.7"
568 },
569 "engines": {
570 "node": ">=6.9.0"
571 },
572 "peerDependencies": {
573 "@babel/core": "^7.0.0-0"
574 }
575 },
576 "node_modules/@babel/plugin-transform-async-to-generator": {
577 "version": "7.29.7",
578 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz",
579 "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==",
580 "devOptional": true,
581 "license": "MIT",
582 "dependencies": {
583 "@babel/helper-module-imports": "^7.29.7",
584 "@babel/helper-plugin-utils": "^7.29.7",
585 "@babel/helper-remap-async-to-generator": "^7.29.7"
586 },
587 "engines": {
588 "node": ">=6.9.0"
589 },
590 "peerDependencies": {
591 "@babel/core": "^7.0.0-0"
592 }
593 },
594 "node_modules/@babel/plugin-transform-block-scoping": {
595 "version": "7.29.7",
596 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz",
597 "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==",
598 "devOptional": true,
599 "license": "MIT",
600 "dependencies": {
601 "@babel/helper-plugin-utils": "^7.29.7"
602 },
603 "engines": {
604 "node": ">=6.9.0"
605 },
606 "peerDependencies": {
607 "@babel/core": "^7.0.0-0"
608 }
609 },
610 "node_modules/@babel/plugin-transform-class-properties": {
611 "version": "7.29.7",
612 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz",
613 "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==",
614 "devOptional": true,
615 "license": "MIT",
616 "dependencies": {
617 "@babel/helper-create-class-features-plugin": "^7.29.7",
618 "@babel/helper-plugin-utils": "^7.29.7"
619 },
620 "engines": {
621 "node": ">=6.9.0"
622 },
623 "peerDependencies": {
624 "@babel/core": "^7.0.0-0"
625 }
626 },
627 "node_modules/@babel/plugin-transform-classes": {
628 "version": "7.29.7",
629 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz",
630 "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==",
631 "devOptional": true,
632 "license": "MIT",
633 "dependencies": {
634 "@babel/helper-annotate-as-pure": "^7.29.7",
635 "@babel/helper-compilation-targets": "^7.29.7",
636 "@babel/helper-globals": "^7.29.7",
637 "@babel/helper-plugin-utils": "^7.29.7",
638 "@babel/helper-replace-supers": "^7.29.7",
639 "@babel/traverse": "^7.29.7"
640 },
641 "engines": {
642 "node": ">=6.9.0"
643 },
644 "peerDependencies": {
645 "@babel/core": "^7.0.0-0"
646 }
647 },
648 "node_modules/@babel/plugin-transform-destructuring": {
649 "version": "7.29.7",
650 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz",
651 "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==",
652 "devOptional": true,
653 "license": "MIT",
654 "dependencies": {
655 "@babel/helper-plugin-utils": "^7.29.7",
656 "@babel/traverse": "^7.29.7"
657 },
658 "engines": {
659 "node": ">=6.9.0"
660 },
661 "peerDependencies": {
662 "@babel/core": "^7.0.0-0"
663 }
664 },
665 "node_modules/@babel/plugin-transform-flow-strip-types": {
666 "version": "7.29.7",
667 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.29.7.tgz",
668 "integrity": "sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==",
669 "devOptional": true,
670 "license": "MIT",
671 "dependencies": {
672 "@babel/helper-plugin-utils": "^7.29.7",
673 "@babel/plugin-syntax-flow": "^7.29.7"
674 },
675 "engines": {
676 "node": ">=6.9.0"
677 },
678 "peerDependencies": {
679 "@babel/core": "^7.0.0-0"
680 }
681 },
682 "node_modules/@babel/plugin-transform-for-of": {
683 "version": "7.29.7",
684 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz",
685 "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==",
686 "devOptional": true,
687 "license": "MIT",
688 "dependencies": {
689 "@babel/helper-plugin-utils": "^7.29.7",
690 "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
691 },
692 "engines": {
693 "node": ">=6.9.0"
694 },
695 "peerDependencies": {
696 "@babel/core": "^7.0.0-0"
697 }
698 },
699 "node_modules/@babel/plugin-transform-modules-commonjs": {
700 "version": "7.29.7",
701 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz",
702 "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==",
703 "devOptional": true,
704 "license": "MIT",
705 "dependencies": {
706 "@babel/helper-module-transforms": "^7.29.7",
707 "@babel/helper-plugin-utils": "^7.29.7"
708 },
709 "engines": {
710 "node": ">=6.9.0"
711 },
712 "peerDependencies": {
713 "@babel/core": "^7.0.0-0"
714 }
715 },
716 "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
717 "version": "7.29.7",
718 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz",
719 "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==",
720 "devOptional": true,
721 "license": "MIT",
722 "dependencies": {
723 "@babel/helper-create-regexp-features-plugin": "^7.29.7",
724 "@babel/helper-plugin-utils": "^7.29.7"
725 },
726 "engines": {
727 "node": ">=6.9.0"
728 },
729 "peerDependencies": {
730 "@babel/core": "^7.0.0"
731 }
732 },
733 "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
734 "version": "7.29.7",
735 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz",
736 "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==",
737 "devOptional": true,
738 "license": "MIT",
739 "dependencies": {
740 "@babel/helper-plugin-utils": "^7.29.7"
741 },
742 "engines": {
743 "node": ">=6.9.0"
744 },
745 "peerDependencies": {
746 "@babel/core": "^7.0.0-0"
747 }
748 },
749 "node_modules/@babel/plugin-transform-optional-catch-binding": {
750 "version": "7.29.7",
751 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz",
752 "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==",
753 "devOptional": true,
754 "license": "MIT",
755 "dependencies": {
756 "@babel/helper-plugin-utils": "^7.29.7"
757 },
758 "engines": {
759 "node": ">=6.9.0"
760 },
761 "peerDependencies": {
762 "@babel/core": "^7.0.0-0"
763 }
764 },
765 "node_modules/@babel/plugin-transform-optional-chaining": {
766 "version": "7.29.7",
767 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz",
768 "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==",
769 "devOptional": true,
770 "license": "MIT",
771 "dependencies": {
772 "@babel/helper-plugin-utils": "^7.29.7",
773 "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
774 },
775 "engines": {
776 "node": ">=6.9.0"
777 },
778 "peerDependencies": {
779 "@babel/core": "^7.0.0-0"
780 }
781 },
782 "node_modules/@babel/plugin-transform-private-methods": {
783 "version": "7.29.7",
784 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz",
785 "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==",
786 "devOptional": true,
787 "license": "MIT",
788 "dependencies": {
789 "@babel/helper-create-class-features-plugin": "^7.29.7",
790 "@babel/helper-plugin-utils": "^7.29.7"
791 },
792 "engines": {
793 "node": ">=6.9.0"
794 },
795 "peerDependencies": {
796 "@babel/core": "^7.0.0-0"
797 }
798 },
799 "node_modules/@babel/plugin-transform-private-property-in-object": {
800 "version": "7.29.7",
801 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz",
802 "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==",
803 "devOptional": true,
804 "license": "MIT",
805 "dependencies": {
806 "@babel/helper-annotate-as-pure": "^7.29.7",
807 "@babel/helper-create-class-features-plugin": "^7.29.7",
808 "@babel/helper-plugin-utils": "^7.29.7"
809 },
810 "engines": {
811 "node": ">=6.9.0"
812 },
813 "peerDependencies": {
814 "@babel/core": "^7.0.0-0"
815 }
816 },
817 "node_modules/@babel/plugin-transform-react-display-name": {
818 "version": "7.29.7",
819 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz",
820 "integrity": "sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==",
821 "devOptional": true,
822 "license": "MIT",
823 "dependencies": {
824 "@babel/helper-plugin-utils": "^7.29.7"
825 },
826 "engines": {
827 "node": ">=6.9.0"
828 },
829 "peerDependencies": {
830 "@babel/core": "^7.0.0-0"
831 }
832 },
833 "node_modules/@babel/plugin-transform-react-jsx": {
834 "version": "7.29.7",
835 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz",
836 "integrity": "sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==",
837 "devOptional": true,
838 "license": "MIT",
839 "dependencies": {
840 "@babel/helper-annotate-as-pure": "^7.29.7",
841 "@babel/helper-module-imports": "^7.29.7",
842 "@babel/helper-plugin-utils": "^7.29.7",
843 "@babel/plugin-syntax-jsx": "^7.29.7",
844 "@babel/types": "^7.29.7"
845 },
846 "engines": {
847 "node": ">=6.9.0"
848 },
849 "peerDependencies": {
850 "@babel/core": "^7.0.0-0"
851 }
852 },
853 "node_modules/@babel/plugin-transform-react-jsx-self": {
854 "version": "7.29.7",
855 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz",
856 "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==",
857 "devOptional": true,
858 "license": "MIT",
859 "dependencies": {
860 "@babel/helper-plugin-utils": "^7.29.7"
861 },
862 "engines": {
863 "node": ">=6.9.0"
864 },
865 "peerDependencies": {
866 "@babel/core": "^7.0.0-0"
867 }
868 },
869 "node_modules/@babel/plugin-transform-react-jsx-source": {
870 "version": "7.29.7",
871 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz",
872 "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==",
873 "devOptional": true,
874 "license": "MIT",
875 "dependencies": {
876 "@babel/helper-plugin-utils": "^7.29.7"
877 },
878 "engines": {
879 "node": ">=6.9.0"
880 },
881 "peerDependencies": {
882 "@babel/core": "^7.0.0-0"
883 }
884 },
885 "node_modules/@babel/plugin-transform-regenerator": {
886 "version": "7.29.8",
887 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz",
888 "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==",
889 "devOptional": true,
890 "license": "MIT",
891 "dependencies": {
892 "@babel/helper-plugin-utils": "^7.29.7"
893 },
894 "engines": {
895 "node": ">=6.9.0"
896 },
897 "peerDependencies": {
898 "@babel/core": "^7.0.0-0"
899 }
900 },
901 "node_modules/@babel/plugin-transform-runtime": {
902 "version": "7.29.7",
903 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz",
904 "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==",
905 "devOptional": true,
906 "license": "MIT",
907 "dependencies": {
908 "@babel/helper-module-imports": "^7.29.7",
909 "@babel/helper-plugin-utils": "^7.29.7",
910 "babel-plugin-polyfill-corejs2": "^0.4.14",
911 "babel-plugin-polyfill-corejs3": "^0.13.0",
912 "babel-plugin-polyfill-regenerator": "^0.6.5",
913 "semver": "^6.3.1"
914 },
915 "engines": {
916 "node": ">=6.9.0"
917 },
918 "peerDependencies": {
919 "@babel/core": "^7.0.0-0"
920 }
921 },
922 "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
923 "version": "6.3.1",
924 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
925 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
926 "devOptional": true,
927 "license": "ISC",
928 "bin": {
929 "semver": "bin/semver.js"
930 }
931 },
932 "node_modules/@babel/plugin-transform-typescript": {
933 "version": "7.29.9",
934 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.9.tgz",
935 "integrity": "sha512-FFwIwzU+7SCOuxxV4YtJql6T9981ZVTm+FHO5GhVsRqCTdy0WwrEZh3l42ARpXruJUDGOptdduHW6Zr7pNPLNg==",
936 "devOptional": true,
937 "license": "MIT",
938 "dependencies": {
939 "@babel/helper-annotate-as-pure": "^7.29.7",
940 "@babel/helper-create-class-features-plugin": "^7.29.7",
941 "@babel/helper-plugin-utils": "^7.29.7",
942 "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
943 "@babel/plugin-syntax-typescript": "^7.29.7"
944 },
945 "engines": {
946 "node": ">=6.9.0"
947 },
948 "peerDependencies": {
949 "@babel/core": "^7.0.0-0"
950 }
951 },
952 "node_modules/@babel/plugin-transform-unicode-regex": {
953 "version": "7.29.7",
954 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz",
955 "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==",
956 "devOptional": true,
957 "license": "MIT",
958 "dependencies": {
959 "@babel/helper-create-regexp-features-plugin": "^7.29.7",
960 "@babel/helper-plugin-utils": "^7.29.7"
961 },
962 "engines": {
963 "node": ">=6.9.0"
964 },
965 "peerDependencies": {
966 "@babel/core": "^7.0.0-0"
967 }
968 },
969 "node_modules/@babel/runtime": {
970 "version": "7.29.7",
971 "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz",
972 "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==",
973 "license": "MIT",
974 "engines": {
975 "node": ">=6.9.0"
976 }
977 },
978 "node_modules/@babel/template": {
979 "version": "7.29.7",
980 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
981 "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
982 "license": "MIT",
983 "dependencies": {
984 "@babel/code-frame": "^7.29.7",
985 "@babel/parser": "^7.29.7",
986 "@babel/types": "^7.29.7"
987 },
988 "engines": {
989 "node": ">=6.9.0"
990 }
991 },
992 "node_modules/@babel/traverse": {
993 "version": "7.29.8",
994 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz",
995 "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==",
996 "license": "MIT",
997 "dependencies": {
998 "@babel/code-frame": "^7.29.7",
999 "@babel/generator": "^7.29.8",
1000 "@babel/helper-globals": "^7.29.7",
1001 "@babel/parser": "^7.29.8",
1002 "@babel/template": "^7.29.7",
1003 "@babel/types": "^7.29.8",
1004 "debug": "^4.3.1"
1005 },
1006 "engines": {
1007 "node": ">=6.9.0"
1008 }
1009 },
1010 "node_modules/@babel/types": {
1011 "version": "7.29.8",
1012 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
1013 "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
1014 "license": "MIT",
1015 "dependencies": {
1016 "@babel/helper-string-parser": "^7.29.7",
1017 "@babel/helper-validator-identifier": "^7.29.7"
1018 },
1019 "engines": {
1020 "node": ">=6.9.0"
1021 }
1022 },
1023 "node_modules/@hapi/hoek": {
1024 "version": "9.3.0",
1025 "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
1026 "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
1027 "devOptional": true,
1028 "license": "BSD-3-Clause"
1029 },
1030 "node_modules/@hapi/topo": {
1031 "version": "5.1.0",
1032 "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
1033 "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
1034 "devOptional": true,
1035 "license": "BSD-3-Clause",
1036 "dependencies": {
1037 "@hapi/hoek": "^9.0.0"
1038 }
1039 },
1040 "node_modules/@isaacs/ttlcache": {
1041 "version": "1.4.1",
1042 "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz",
1043 "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==",
1044 "license": "ISC",
1045 "engines": {
1046 "node": ">=12"
1047 }
1048 },
1049 "node_modules/@jest/schemas": {
1050 "version": "29.6.3",
1051 "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
1052 "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
1053 "license": "MIT",
1054 "dependencies": {
1055 "@sinclair/typebox": "^0.27.8"
1056 },
1057 "engines": {
1058 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
1059 }
1060 },
1061 "node_modules/@jest/types": {
1062 "version": "29.6.3",
1063 "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
1064 "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
1065 "license": "MIT",
1066 "dependencies": {
1067 "@jest/schemas": "^29.6.3",
1068 "@types/istanbul-lib-coverage": "^2.0.0",
1069 "@types/istanbul-reports": "^3.0.0",
1070 "@types/node": "*",
1071 "@types/yargs": "^17.0.8",
1072 "chalk": "^4.0.0"
1073 },
1074 "engines": {
1075 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
1076 }
1077 },
1078 "node_modules/@jridgewell/gen-mapping": {
1079 "version": "0.3.13",
1080 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
1081 "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
1082 "license": "MIT",
1083 "dependencies": {
1084 "@jridgewell/sourcemap-codec": "^1.5.0",
1085 "@jridgewell/trace-mapping": "^0.3.24"
1086 }
1087 },
1088 "node_modules/@jridgewell/remapping": {
1089 "version": "2.3.5",
1090 "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
1091 "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
1092 "license": "MIT",
1093 "dependencies": {
1094 "@jridgewell/gen-mapping": "^0.3.5",
1095 "@jridgewell/trace-mapping": "^0.3.24"
1096 }
1097 },
1098 "node_modules/@jridgewell/resolve-uri": {
1099 "version": "3.1.2",
1100 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
1101 "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
1102 "license": "MIT",
1103 "engines": {
1104 "node": ">=6.0.0"
1105 }
1106 },
1107 "node_modules/@jridgewell/source-map": {
1108 "version": "0.3.11",
1109 "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
1110 "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
1111 "license": "MIT",
1112 "dependencies": {
1113 "@jridgewell/gen-mapping": "^0.3.5",
1114 "@jridgewell/trace-mapping": "^0.3.25"
1115 }
1116 },
1117 "node_modules/@jridgewell/sourcemap-codec": {
1118 "version": "1.6.0",
1119 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz",
1120 "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==",
1121 "license": "MIT"
1122 },
1123 "node_modules/@jridgewell/trace-mapping": {
1124 "version": "0.3.31",
1125 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
1126 "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
1127 "license": "MIT",
1128 "dependencies": {
1129 "@jridgewell/resolve-uri": "^3.1.0",
1130 "@jridgewell/sourcemap-codec": "^1.4.14"
1131 }
1132 },
1133 "node_modules/@nodable/entities": {
1134 "version": "3.1.0",
1135 "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-3.1.0.tgz",
1136 "integrity": "sha512-LsS/DjHr+uDM647Gru/cA8+J3a3HfhttwCKLyuoyN7yXTFCxKBtSgMQBvrW9yNPa2/zDRUNuGPaH5QUFoa4arQ==",
1137 "devOptional": true,
1138 "funding": [
1139 {
1140 "type": "github",
1141 "url": "https://github.com/sponsors/nodable"
1142 }
1143 ],
1144 "license": "MIT"
1145 },
1146 "node_modules/@nodelib/fs.scandir": {
1147 "version": "2.1.5",
1148 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
1149 "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
1150 "devOptional": true,
1151 "license": "MIT",
1152 "dependencies": {
1153 "@nodelib/fs.stat": "2.0.5",
1154 "run-parallel": "^1.1.9"
1155 },
1156 "engines": {
1157 "node": ">= 8"
1158 }
1159 },
1160 "node_modules/@nodelib/fs.stat": {
1161 "version": "2.0.5",
1162 "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
1163 "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
1164 "devOptional": true,
1165 "license": "MIT",
1166 "engines": {
1167 "node": ">= 8"
1168 }
1169 },
1170 "node_modules/@nodelib/fs.walk": {
1171 "version": "1.2.8",
1172 "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
1173 "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
1174 "devOptional": true,
1175 "license": "MIT",
1176 "dependencies": {
1177 "@nodelib/fs.scandir": "2.1.5",
1178 "fastq": "^1.6.0"
1179 },
1180 "engines": {
1181 "node": ">= 8"
1182 }
1183 },
1184 "node_modules/@react-native-community/cli": {
1185 "version": "20.2.0",
1186 "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.2.0.tgz",
1187 "integrity": "sha512-5RZKkBeUFC4hhrzySzxWmRJwXBTc2PE3L6QUgvnJk3QDxNYMY7aGuI8Gr9eZRS1DbiY10IPWqpJfqSIplzVG6A==",
1188 "devOptional": true,
1189 "license": "MIT",
1190 "peer": true,
1191 "dependencies": {
1192 "@react-native-community/cli-clean": "20.2.0",
1193 "@react-native-community/cli-config": "20.2.0",
1194 "@react-native-community/cli-doctor": "20.2.0",
1195 "@react-native-community/cli-server-api": "20.2.0",
1196 "@react-native-community/cli-tools": "20.2.0",
1197 "@react-native-community/cli-types": "20.2.0",
1198 "commander": "^9.4.1",
1199 "deepmerge": "^4.3.0",
1200 "execa": "^5.0.0",
1201 "find-up": "^5.0.0",
1202 "fs-extra": "^8.1.0",
1203 "graceful-fs": "^4.1.3",
1204 "picocolors": "^1.1.1",
1205 "prompts": "^2.4.2",
1206 "semver": "^7.5.2"
1207 },
1208 "bin": {
1209 "rnc-cli": "build/bin.js"
1210 },
1211 "engines": {
1212 "node": ">=20.19.4"
1213 }
1214 },
1215 "node_modules/@react-native-community/cli-clean": {
1216 "version": "20.2.0",
1217 "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.2.0.tgz",
1218 "integrity": "sha512-krqbhFiwHN8l5wZ2XTcrNq9N+DqDWHxW8RK0bIcrK0O+fMvjYi9e/1Pnx2W0CTotOVcZpHzUbgZ4TQVF231Skw==",
1219 "devOptional": true,
1220 "license": "MIT",
1221 "dependencies": {
1222 "@react-native-community/cli-tools": "20.2.0",
1223 "execa": "^5.0.0",
1224 "fast-glob": "^3.3.2",
1225 "picocolors": "^1.1.1"
1226 }
1227 },
1228 "node_modules/@react-native-community/cli-config": {
1229 "version": "20.2.0",
1230 "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.2.0.tgz",
1231 "integrity": "sha512-GF5FxgDfOSLPi/bSiE/xvOGELwzV2GLQnDED+7ArbPi01W1Vu+hD/m+J+bwX34Pocpo767eXAVxc2h9WFUTUfQ==",
1232 "devOptional": true,
1233 "license": "MIT",
1234 "dependencies": {
1235 "@react-native-community/cli-tools": "20.2.0",
1236 "cosmiconfig": "^9.0.0",
1237 "deepmerge": "^4.3.0",
1238 "fast-glob": "^3.3.2",
1239 "joi": "^17.2.1",
1240 "picocolors": "^1.1.1"
1241 }
1242 },
1243 "node_modules/@react-native-community/cli-config-android": {
1244 "version": "20.2.0",
1245 "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.2.0.tgz",
1246 "integrity": "sha512-lASofUNBVK0Pq3VEJ1JrCfAW94Rnk38DikauycRcoHl0hWjHIN3XhsN20dEq+CaIJoq37aCg5NSSSpmkET+ShA==",
1247 "devOptional": true,
1248 "license": "MIT",
1249 "dependencies": {
1250 "@react-native-community/cli-tools": "20.2.0",
1251 "fast-glob": "^3.3.2",
1252 "fast-xml-parser": "^5.3.6",
1253 "picocolors": "^1.1.1"
1254 }
1255 },
1256 "node_modules/@react-native-community/cli-config-apple": {
1257 "version": "20.2.0",
1258 "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.2.0.tgz",
1259 "integrity": "sha512-oohr6BV2riWJ5PYjayi1u52bG3H95MwKPkJCZo9pnOlYTjifZQVkMxZ8VTuk392efh0bijVTYfxH8iJPi97SIQ==",
1260 "devOptional": true,
1261 "license": "MIT",
1262 "dependencies": {
1263 "@react-native-community/cli-tools": "20.2.0",
1264 "execa": "^5.0.0",
1265 "fast-glob": "^3.3.2",
1266 "picocolors": "^1.1.1"
1267 }
1268 },
1269 "node_modules/@react-native-community/cli-doctor": {
1270 "version": "20.2.0",
1271 "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.2.0.tgz",
1272 "integrity": "sha512-eZjlwmjPoBXgyD6nV5oDDocL1VH5UW4LxZcMAqyN3rQw5vq3CeJikFpNedKTtSl3P6JizIkInyIHpfrW+9qfJA==",
1273 "devOptional": true,
1274 "license": "MIT",
1275 "dependencies": {
1276 "@react-native-community/cli-config": "20.2.0",
1277 "@react-native-community/cli-platform-android": "20.2.0",
1278 "@react-native-community/cli-platform-apple": "20.2.0",
1279 "@react-native-community/cli-platform-ios": "20.2.0",
1280 "@react-native-community/cli-tools": "20.2.0",
1281 "command-exists": "^1.2.8",
1282 "deepmerge": "^4.3.0",
1283 "envinfo": "^7.13.0",
1284 "execa": "^5.0.0",
1285 "node-stream-zip": "^1.9.1",
1286 "ora": "^5.4.1",
1287 "picocolors": "^1.1.1",
1288 "semver": "^7.5.2",
1289 "wcwidth": "^1.0.1",
1290 "yaml": "^2.2.1"
1291 }
1292 },
1293 "node_modules/@react-native-community/cli-platform-android": {
1294 "version": "20.2.0",
1295 "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.2.0.tgz",
1296 "integrity": "sha512-fRglzcf/Yq5lnIkqdA8uf1GvlG18x3Dm48Yvo+l7KiWgh/SVtfVhfvalrtX5rmx+KeJkDA534bGoPvi5+ruWjw==",
1297 "devOptional": true,
1298 "license": "MIT",
1299 "dependencies": {
1300 "@react-native-community/cli-config-android": "20.2.0",
1301 "@react-native-community/cli-tools": "20.2.0",
1302 "execa": "^5.0.0",
1303 "logkitty": "^0.7.1",
1304 "picocolors": "^1.1.1"
1305 }
1306 },
1307 "node_modules/@react-native-community/cli-platform-apple": {
1308 "version": "20.2.0",
1309 "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.2.0.tgz",
1310 "integrity": "sha512-jkEPLAd8C/ZRu39a3nhxwSXe0iisUiJC808GExnrnTcViLtg3sad2ciQ/HjjvbdsPCS9sT+Jr7xh3MzBsPojsQ==",
1311 "devOptional": true,
1312 "license": "MIT",
1313 "dependencies": {
1314 "@react-native-community/cli-config-apple": "20.2.0",
1315 "@react-native-community/cli-tools": "20.2.0",
1316 "execa": "^5.0.0",
1317 "fast-xml-parser": "^5.3.6",
1318 "picocolors": "^1.1.1"
1319 }
1320 },
1321 "node_modules/@react-native-community/cli-platform-ios": {
1322 "version": "20.2.0",
1323 "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.2.0.tgz",
1324 "integrity": "sha512-bCKlBt2HoD7WTl/HX60+4HFhR1lKY64Y9MPWu7yWQwOCEqYRMi6MkRxLimiONj9M2/lNf0z9BPHDzdDe5HM2ag==",
1325 "devOptional": true,
1326 "license": "MIT",
1327 "dependencies": {
1328 "@react-native-community/cli-platform-apple": "20.2.0"
1329 }
1330 },
1331 "node_modules/@react-native-community/cli-server-api": {
1332 "version": "20.2.0",
1333 "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.2.0.tgz",
1334 "integrity": "sha512-AI1fsl+6LNuOoDcdWsnF3s9ozqminGCUlbFcrgdZIJWyOuFBeQclNydI22VO3vWaO4dHQkfVa3Zo10AncWQvwA==",
1335 "devOptional": true,
1336 "license": "MIT",
1337 "dependencies": {
1338 "@react-native-community/cli-tools": "20.2.0",
1339 "body-parser": "^2.2.2",
1340 "compression": "^1.7.1",
1341 "connect": "^3.6.5",
1342 "errorhandler": "^1.5.1",
1343 "nocache": "^3.0.1",
1344 "open": "^6.2.0",
1345 "pretty-format": "^29.7.0",
1346 "serve-static": "^1.13.1",
1347 "ws": "^6.2.3"
1348 }
1349 },
1350 "node_modules/@react-native-community/cli-tools": {
1351 "version": "20.2.0",
1352 "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.2.0.tgz",
1353 "integrity": "sha512-A5W2nqlTidPzGyXzS57jvHsMpQd8iOGSjePj4H318uMbhIdeIHQ5e59fNbdHahS62ISs+2p9s78sVHMbGVa1bg==",
1354 "devOptional": true,
1355 "license": "MIT",
1356 "dependencies": {
1357 "@vscode/sudo-prompt": "^9.0.0",
1358 "appdirsjs": "^1.2.4",
1359 "execa": "^5.0.0",
1360 "find-up": "^5.0.0",
1361 "launch-editor": "^2.9.1",
1362 "mime": "^2.4.1",
1363 "ora": "^5.4.1",
1364 "picocolors": "^1.1.1",
1365 "prompts": "^2.4.2",
1366 "semver": "^7.5.2"
1367 }
1368 },
1369 "node_modules/@react-native-community/cli-types": {
1370 "version": "20.2.0",
1371 "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.2.0.tgz",
1372 "integrity": "sha512-K60zY/ly8G9rGJQzZ+bFRyLEckAUzyF8Fu9a2Kw6JipCrOl7SiVRBVqjvOr/XnCRKuOpH8i9y7RVg07wkSGRBQ==",
1373 "devOptional": true,
1374 "license": "MIT",
1375 "dependencies": {
1376 "joi": "^17.2.1"
1377 }
1378 },
1379 "node_modules/@react-native/assets-registry": {
1380 "version": "0.86.3",
1381 "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.86.3.tgz",
1382 "integrity": "sha512-TDhgCZA4wjJg84d5A9swiOQYPIWSKEEVdg9IwMFZDupQzW/F3QoLUrfAJOcalgqTDA9/buTB8awhE3Whwg6u9Q==",
1383 "license": "MIT",
1384 "engines": {
1385 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1386 }
1387 },
1388 "node_modules/@react-native/babel-plugin-codegen": {
1389 "version": "0.86.3",
1390 "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.86.3.tgz",
1391 "integrity": "sha512-O6Xza4JBGPIU8J7YbKTyBoYL4thpy8jMW/oaLDWdAyOwYHKIjK47pAL5HUEbOe2bWz2PEKjbYRF2ApkJv1ottQ==",
1392 "devOptional": true,
1393 "license": "MIT",
1394 "dependencies": {
1395 "@babel/traverse": "^7.29.0",
1396 "@react-native/codegen": "0.86.3"
1397 },
1398 "engines": {
1399 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1400 }
1401 },
1402 "node_modules/@react-native/babel-preset": {
1403 "version": "0.86.3",
1404 "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.86.3.tgz",
1405 "integrity": "sha512-/eqs/Hy9RZRcjdcs4wj3Cqmxvtb3NM5g+Uuh1RIvsjynMO8PRsrVWWLWgBcZL/jYUo+ogXd2NFB0W8L5Bg89xw==",
1406 "devOptional": true,
1407 "license": "MIT",
1408 "dependencies": {
1409 "@babel/core": "^7.25.2",
1410 "@babel/plugin-proposal-export-default-from": "^7.24.7",
1411 "@babel/plugin-syntax-dynamic-import": "^7.8.3",
1412 "@babel/plugin-syntax-export-default-from": "^7.24.7",
1413 "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
1414 "@babel/plugin-syntax-optional-chaining": "^7.8.3",
1415 "@babel/plugin-transform-async-generator-functions": "^7.25.4",
1416 "@babel/plugin-transform-async-to-generator": "^7.24.7",
1417 "@babel/plugin-transform-block-scoping": "^7.25.0",
1418 "@babel/plugin-transform-class-properties": "^7.25.4",
1419 "@babel/plugin-transform-classes": "^7.25.4",
1420 "@babel/plugin-transform-destructuring": "^7.24.8",
1421 "@babel/plugin-transform-flow-strip-types": "^7.25.2",
1422 "@babel/plugin-transform-for-of": "^7.24.7",
1423 "@babel/plugin-transform-modules-commonjs": "^7.24.8",
1424 "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
1425 "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
1426 "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
1427 "@babel/plugin-transform-optional-chaining": "^7.24.8",
1428 "@babel/plugin-transform-private-methods": "^7.24.7",
1429 "@babel/plugin-transform-private-property-in-object": "^7.24.7",
1430 "@babel/plugin-transform-react-display-name": "^7.24.7",
1431 "@babel/plugin-transform-react-jsx": "^7.25.2",
1432 "@babel/plugin-transform-react-jsx-self": "^7.24.7",
1433 "@babel/plugin-transform-react-jsx-source": "^7.24.7",
1434 "@babel/plugin-transform-regenerator": "^7.24.7",
1435 "@babel/plugin-transform-runtime": "^7.24.7",
1436 "@babel/plugin-transform-typescript": "^7.25.2",
1437 "@babel/plugin-transform-unicode-regex": "^7.24.7",
1438 "@react-native/babel-plugin-codegen": "0.86.3",
1439 "babel-plugin-syntax-hermes-parser": "0.36.0",
1440 "babel-plugin-transform-flow-enums": "^0.0.2",
1441 "react-refresh": "^0.14.0"
1442 },
1443 "engines": {
1444 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1445 },
1446 "peerDependencies": {
1447 "@babel/core": "*"
1448 }
1449 },
1450 "node_modules/@react-native/codegen": {
1451 "version": "0.86.3",
1452 "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.86.3.tgz",
1453 "integrity": "sha512-Ux4jHi0fh+bdtVEcL0gaPLbY56V+SvFUDl/8sRAE1jdb4k+o7fT/4Nc29yz4X+qfjstkSqObQTMBGhdzxH9JvA==",
1454 "license": "MIT",
1455 "dependencies": {
1456 "@babel/core": "^7.25.2",
1457 "@babel/parser": "^7.29.0",
1458 "hermes-parser": "0.36.0",
1459 "invariant": "^2.2.4",
1460 "nullthrows": "^1.1.1",
1461 "tinyglobby": "^0.2.15",
1462 "yargs": "^17.6.2"
1463 },
1464 "engines": {
1465 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1466 },
1467 "peerDependencies": {
1468 "@babel/core": "*"
1469 }
1470 },
1471 "node_modules/@react-native/community-cli-plugin": {
1472 "version": "0.86.3",
1473 "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.86.3.tgz",
1474 "integrity": "sha512-qSDL9LQc5mZSZPNczT95WU9YQuPzxBklgON9vLhhqfI0yWIwKInqFx88dQ/uiEXBtf0yossthaQIqA4Ml6bF6g==",
1475 "license": "MIT",
1476 "dependencies": {
1477 "@react-native/dev-middleware": "0.86.3",
1478 "debug": "^4.4.0",
1479 "invariant": "^2.2.4",
1480 "metro": "^0.84.3",
1481 "metro-config": "^0.84.3",
1482 "metro-core": "^0.84.3",
1483 "semver": "^7.1.3"
1484 },
1485 "engines": {
1486 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1487 },
1488 "peerDependencies": {
1489 "@react-native-community/cli": "*",
1490 "@react-native/metro-config": "0.86.3"
1491 },
1492 "peerDependenciesMeta": {
1493 "@react-native-community/cli": {
1494 "optional": true
1495 },
1496 "@react-native/metro-config": {
1497 "optional": true
1498 }
1499 }
1500 },
1501 "node_modules/@react-native/debugger-frontend": {
1502 "version": "0.86.3",
1503 "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.86.3.tgz",
1504 "integrity": "sha512-TQmeofQ0PcuylhhlleOeuzHYZfbrgm3gayXzowqUEzgRisTm1D40/J3ggqs7XkQi5HP5ZA3n8dHmKL9vIzPcsw==",
1505 "license": "BSD-3-Clause",
1506 "engines": {
1507 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1508 }
1509 },
1510 "node_modules/@react-native/debugger-shell": {
1511 "version": "0.86.3",
1512 "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.86.3.tgz",
1513 "integrity": "sha512-O4ds+J7xZfxkbih9T+cAGegBdvKSPKYJm/lDgC9CpEjFMkmzWTpVLU3Qsv9sqZuo58z+sGhIcJfPsCFFWHpqbQ==",
1514 "license": "MIT",
1515 "dependencies": {
1516 "cross-spawn": "^7.0.6",
1517 "debug": "^4.4.0",
1518 "fb-dotslash": "0.5.8"
1519 },
1520 "engines": {
1521 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1522 }
1523 },
1524 "node_modules/@react-native/dev-middleware": {
1525 "version": "0.86.3",
1526 "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.86.3.tgz",
1527 "integrity": "sha512-LiEPTqTg/63bYUnrPyHLfjTDCNhA/+CUqI1+DsA9tYyewtSbULd5awsva6SgE10I+2iMhgKXS3ymkhU/kSCrGA==",
1528 "license": "MIT",
1529 "dependencies": {
1530 "@isaacs/ttlcache": "^1.4.1",
1531 "@react-native/debugger-frontend": "0.86.3",
1532 "@react-native/debugger-shell": "0.86.3",
1533 "chrome-launcher": "^0.15.2",
1534 "chromium-edge-launcher": "^0.3.0",
1535 "connect": "^3.6.5",
1536 "debug": "^4.4.0",
1537 "invariant": "^2.2.4",
1538 "nullthrows": "^1.1.1",
1539 "open": "^7.0.3",
1540 "serve-static": "^1.16.2",
1541 "ws": "^7.5.10"
1542 },
1543 "engines": {
1544 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1545 }
1546 },
1547 "node_modules/@react-native/dev-middleware/node_modules/is-wsl": {
1548 "version": "2.2.0",
1549 "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
1550 "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
1551 "license": "MIT",
1552 "dependencies": {
1553 "is-docker": "^2.0.0"
1554 },
1555 "engines": {
1556 "node": ">=8"
1557 }
1558 },
1559 "node_modules/@react-native/dev-middleware/node_modules/open": {
1560 "version": "7.4.2",
1561 "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
1562 "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
1563 "license": "MIT",
1564 "dependencies": {
1565 "is-docker": "^2.0.0",
1566 "is-wsl": "^2.1.1"
1567 },
1568 "engines": {
1569 "node": ">=8"
1570 },
1571 "funding": {
1572 "url": "https://github.com/sponsors/sindresorhus"
1573 }
1574 },
1575 "node_modules/@react-native/dev-middleware/node_modules/ws": {
1576 "version": "7.5.13",
1577 "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz",
1578 "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==",
1579 "license": "MIT",
1580 "engines": {
1581 "node": ">=8.3.0"
1582 },
1583 "peerDependencies": {
1584 "bufferutil": "^4.0.1",
1585 "utf-8-validate": "^5.0.2"
1586 },
1587 "peerDependenciesMeta": {
1588 "bufferutil": {
1589 "optional": true
1590 },
1591 "utf-8-validate": {
1592 "optional": true
1593 }
1594 }
1595 },
1596 "node_modules/@react-native/gradle-plugin": {
1597 "version": "0.86.3",
1598 "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.86.3.tgz",
1599 "integrity": "sha512-lxmx0GqLEWRIpZfpYFXlYVIs3ENQwaW6Vmp6oi29l2GoQJ1wZfFZRdMimDWlGEk8LKfHar3QH3iaPMkTcK9lEQ==",
1600 "license": "MIT",
1601 "engines": {
1602 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1603 }
1604 },
1605 "node_modules/@react-native/js-polyfills": {
1606 "version": "0.86.3",
1607 "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.86.3.tgz",
1608 "integrity": "sha512-eYIJ0es967+tePBFQDnl/gidVFxLns3fnbiK6rxscQrGodvuUO6hwxpQnfNynJ8MjbbndImXihXjcnJdc7SzJg==",
1609 "license": "MIT",
1610 "engines": {
1611 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1612 }
1613 },
1614 "node_modules/@react-native/metro-babel-transformer": {
1615 "version": "0.86.3",
1616 "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.86.3.tgz",
1617 "integrity": "sha512-0nlwVkG0uT9o72nrGTKUz/IqDnCkM4zE0ihe4r+OJcxH93yBdDm58AXJ3EXZeSjv3osHEFXU7ceajdZiS34mTw==",
1618 "devOptional": true,
1619 "license": "MIT",
1620 "dependencies": {
1621 "@babel/core": "^7.25.2",
1622 "@react-native/babel-preset": "0.86.3",
1623 "hermes-parser": "0.36.0",
1624 "nullthrows": "^1.1.1"
1625 },
1626 "engines": {
1627 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1628 },
1629 "peerDependencies": {
1630 "@babel/core": "*"
1631 }
1632 },
1633 "node_modules/@react-native/metro-config": {
1634 "version": "0.86.3",
1635 "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.86.3.tgz",
1636 "integrity": "sha512-qdzDMepV2xdUhsO4XC7idnnbt8K6+Hd59AjeK9y4KS86fxSQq5oL0TAbqUuajDGR7beNQoYTuS6AowN/zP0oaQ==",
1637 "devOptional": true,
1638 "license": "MIT",
1639 "peer": true,
1640 "dependencies": {
1641 "@react-native/js-polyfills": "0.86.3",
1642 "@react-native/metro-babel-transformer": "0.86.3",
1643 "metro-config": "^0.84.3",
1644 "metro-runtime": "^0.84.3"
1645 },
1646 "engines": {
1647 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1648 }
1649 },
1650 "node_modules/@react-native/normalize-colors": {
1651 "version": "0.86.3",
1652 "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.86.3.tgz",
1653 "integrity": "sha512-Cv3CDkprb67GrzuaS9BGbBJC/6G4lIw3nyKOHRKTqTTum4bn37y5+R0Z04L8mcbQN85eEohNrRwb7IOM4j6uvg==",
1654 "license": "MIT"
1655 },
1656 "node_modules/@react-native/virtualized-lists": {
1657 "version": "0.86.3",
1658 "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.86.3.tgz",
1659 "integrity": "sha512-1j44NEyNn05Ut40vHAmoSWbsIcybFkMAOBTwQt1PrESyfSS+qBoyU1LGIogNva0VIa0rQyEC5PzbA7R4/7Nhyw==",
1660 "license": "MIT",
1661 "dependencies": {
1662 "invariant": "^2.2.4",
1663 "nullthrows": "^1.1.1"
1664 },
1665 "engines": {
1666 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
1667 },
1668 "peerDependencies": {
1669 "@types/react": "^19.2.0",
1670 "react": "*",
1671 "react-native": "0.86.3"
1672 },
1673 "peerDependenciesMeta": {
1674 "@types/react": {
1675 "optional": true
1676 }
1677 }
1678 },
1679 "node_modules/@sideway/address": {
1680 "version": "4.1.5",
1681 "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
1682 "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
1683 "devOptional": true,
1684 "license": "BSD-3-Clause",
1685 "dependencies": {
1686 "@hapi/hoek": "^9.0.0"
1687 }
1688 },
1689 "node_modules/@sideway/formula": {
1690 "version": "3.0.1",
1691 "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
1692 "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
1693 "devOptional": true,
1694 "license": "BSD-3-Clause"
1695 },
1696 "node_modules/@sideway/pinpoint": {
1697 "version": "2.0.0",
1698 "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
1699 "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
1700 "devOptional": true,
1701 "license": "BSD-3-Clause"
1702 },
1703 "node_modules/@sinclair/typebox": {
1704 "version": "0.27.12",
1705 "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.12.tgz",
1706 "integrity": "sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==",
1707 "license": "MIT"
1708 },
1709 "node_modules/@types/istanbul-lib-coverage": {
1710 "version": "2.0.6",
1711 "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
1712 "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
1713 "license": "MIT"
1714 },
1715 "node_modules/@types/istanbul-lib-report": {
1716 "version": "3.0.3",
1717 "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
1718 "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
1719 "license": "MIT",
1720 "dependencies": {
1721 "@types/istanbul-lib-coverage": "*"
1722 }
1723 },
1724 "node_modules/@types/istanbul-reports": {
1725 "version": "3.0.4",
1726 "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
1727 "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
1728 "license": "MIT",
1729 "dependencies": {
1730 "@types/istanbul-lib-report": "*"
1731 }
1732 },
1733 "node_modules/@types/node": {
1734 "version": "26.6.4",
1735 "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
1736 "integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==",
1737 "license": "MIT",
1738 "dependencies": {
1739 "undici-types": "~8.9.0"
1740 }
1741 },
1742 "node_modules/@types/yargs": {
1743 "version": "17.0.35",
1744 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
1745 "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
1746 "license": "MIT",
1747 "dependencies": {
1748 "@types/yargs-parser": "*"
1749 }
1750 },
1751 "node_modules/@types/yargs-parser": {
1752 "version": "21.0.3",
1753 "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
1754 "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
1755 "license": "MIT"
1756 },
1757 "node_modules/@vscode/sudo-prompt": {
1758 "version": "9.3.2",
1759 "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz",
1760 "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==",
1761 "devOptional": true,
1762 "license": "MIT"
1763 },
1764 "node_modules/abort-controller": {
1765 "version": "3.0.0",
1766 "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
1767 "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
1768 "license": "MIT",
1769 "dependencies": {
1770 "event-target-shim": "^5.0.0"
1771 },
1772 "engines": {
1773 "node": ">=6.5"
1774 }
1775 },
1776 "node_modules/accepts": {
1777 "version": "1.3.8",
1778 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
1779 "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
1780 "devOptional": true,
1781 "license": "MIT",
1782 "dependencies": {
1783 "mime-types": "~2.1.34",
1784 "negotiator": "0.6.3"
1785 },
1786 "engines": {
1787 "node": ">= 0.6"
1788 }
1789 },
1790 "node_modules/accepts/node_modules/negotiator": {
1791 "version": "0.6.3",
1792 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1793 "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1794 "devOptional": true,
1795 "license": "MIT",
1796 "engines": {
1797 "node": ">= 0.6"
1798 }
1799 },
1800 "node_modules/acorn": {
1801 "version": "8.18.0",
1802 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
1803 "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
1804 "license": "MIT",
1805 "bin": {
1806 "acorn": "bin/acorn"
1807 },
1808 "engines": {
1809 "node": ">=0.4.0"
1810 }
1811 },
1812 "node_modules/agent-base": {
1813 "version": "7.1.4",
1814 "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
1815 "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
1816 "license": "MIT",
1817 "engines": {
1818 "node": ">= 14"
1819 }
1820 },
1821 "node_modules/anser": {
1822 "version": "1.4.10",
1823 "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
1824 "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
1825 "license": "MIT"
1826 },
1827 "node_modules/ansi-fragments": {
1828 "version": "0.2.1",
1829 "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
1830 "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
1831 "devOptional": true,
1832 "license": "MIT",
1833 "dependencies": {
1834 "colorette": "^1.0.7",
1835 "slice-ansi": "^2.0.0",
1836 "strip-ansi": "^5.0.0"
1837 }
1838 },
1839 "node_modules/ansi-regex": {
1840 "version": "5.0.1",
1841 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1842 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1843 "license": "MIT",
1844 "engines": {
1845 "node": ">=8"
1846 }
1847 },
1848 "node_modules/ansi-styles": {
1849 "version": "4.3.0",
1850 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1851 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1852 "license": "MIT",
1853 "dependencies": {
1854 "color-convert": "^2.0.1"
1855 },
1856 "engines": {
1857 "node": ">=8"
1858 },
1859 "funding": {
1860 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1861 }
1862 },
1863 "node_modules/anynum": {
1864 "version": "1.0.1",
1865 "resolved": "https://registry.npmjs.org/anynum/-/anynum-1.0.1.tgz",
1866 "integrity": "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==",
1867 "devOptional": true,
1868 "funding": [
1869 {
1870 "type": "github",
1871 "url": "https://github.com/sponsors/NaturalIntelligence"
1872 }
1873 ],
1874 "license": "MIT"
1875 },
1876 "node_modules/appdirsjs": {
1877 "version": "1.2.8",
1878 "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.8.tgz",
1879 "integrity": "sha512-8zl1xlxeS4a0/36CT6LOaVioPOL8TeLT1b9OHk0j9xSbzmPBuM7lUgWMSTh6SbuF8fbwjcP1rr30OCLpd1fl+A==",
1880 "devOptional": true,
1881 "funding": [
1882 {
1883 "type": "github",
1884 "url": "https://github.com/sponsors/codingjerk"
1885 },
1886 {
1887 "type": "patreon",
1888 "url": "https://www.patreon.com/codingjerk"
1889 }
1890 ],
1891 "license": "MIT"
1892 },
1893 "node_modules/argparse": {
1894 "version": "2.0.1",
1895 "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1896 "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1897 "devOptional": true,
1898 "license": "Python-2.0"
1899 },
1900 "node_modules/asap": {
1901 "version": "2.0.6",
1902 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
1903 "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
1904 "license": "MIT"
1905 },
1906 "node_modules/astral-regex": {
1907 "version": "1.0.0",
1908 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
1909 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
1910 "devOptional": true,
1911 "license": "MIT",
1912 "engines": {
1913 "node": ">=4"
1914 }
1915 },
1916 "node_modules/async-limiter": {
1917 "version": "1.0.1",
1918 "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
1919 "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
1920 "devOptional": true,
1921 "license": "MIT"
1922 },
1923 "node_modules/b4a": {
1924 "version": "1.9.0",
1925 "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.9.0.tgz",
1926 "integrity": "sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ==",
1927 "license": "Apache-2.0",
1928 "peerDependencies": {
1929 "react-native-b4a": "*"
1930 },
1931 "peerDependenciesMeta": {
1932 "react-native-b4a": {
1933 "optional": true
1934 }
1935 }
1936 },
1937 "node_modules/babel-plugin-polyfill-corejs2": {
1938 "version": "0.4.17",
1939 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz",
1940 "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==",
1941 "devOptional": true,
1942 "license": "MIT",
1943 "dependencies": {
1944 "@babel/compat-data": "^7.28.6",
1945 "@babel/helper-define-polyfill-provider": "^0.6.8",
1946 "semver": "^6.3.1"
1947 },
1948 "peerDependencies": {
1949 "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
1950 }
1951 },
1952 "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
1953 "version": "6.3.1",
1954 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1955 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1956 "devOptional": true,
1957 "license": "ISC",
1958 "bin": {
1959 "semver": "bin/semver.js"
1960 }
1961 },
1962 "node_modules/babel-plugin-polyfill-corejs3": {
1963 "version": "0.13.0",
1964 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
1965 "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
1966 "devOptional": true,
1967 "license": "MIT",
1968 "dependencies": {
1969 "@babel/helper-define-polyfill-provider": "^0.6.5",
1970 "core-js-compat": "^3.43.0"
1971 },
1972 "peerDependencies": {
1973 "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
1974 }
1975 },
1976 "node_modules/babel-plugin-polyfill-regenerator": {
1977 "version": "0.6.8",
1978 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz",
1979 "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==",
1980 "devOptional": true,
1981 "license": "MIT",
1982 "dependencies": {
1983 "@babel/helper-define-polyfill-provider": "^0.6.8"
1984 },
1985 "peerDependencies": {
1986 "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
1987 }
1988 },
1989 "node_modules/babel-plugin-syntax-hermes-parser": {
1990 "version": "0.36.0",
1991 "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.36.0.tgz",
1992 "integrity": "sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==",
1993 "license": "MIT",
1994 "dependencies": {
1995 "hermes-parser": "0.36.0"
1996 }
1997 },
1998 "node_modules/babel-plugin-transform-flow-enums": {
1999 "version": "0.0.2",
2000 "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz",
2001 "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==",
2002 "devOptional": true,
2003 "license": "MIT",
2004 "dependencies": {
2005 "@babel/plugin-syntax-flow": "^7.12.1"
2006 }
2007 },
2008 "node_modules/bare-abort": {
2009 "version": "2.0.13",
2010 "resolved": "https://registry.npmjs.org/bare-abort/-/bare-abort-2.0.13.tgz",
2011 "integrity": "sha512-zdc8l88eB11Jsz5rDd6sCAgv2kUFXgdrZWoMlgU6JMkfAi1/uuGFC3IEHswKbIRQTk5H3T5CMuechsXYxiaHlQ==",
2012 "dev": true,
2013 "license": "Apache-2.0"
2014 },
2015 "node_modules/bare-addon-resolve": {
2016 "version": "1.10.1",
2017 "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.10.1.tgz",
2018 "integrity": "sha512-F/SD2du8keuYSb4xipnGz5j2E6yhNdHA8ZVxtHae6h2uOrpBIjjbhXvjzKZbr5XUOzqBzh/i8GVFycj2DlFQIA==",
2019 "license": "Apache-2.0",
2020 "dependencies": {
2021 "bare-module-resolve": "^1.10.0",
2022 "bare-semver": "^1.0.0"
2023 },
2024 "peerDependencies": {
2025 "bare-url": "*"
2026 },
2027 "peerDependenciesMeta": {
2028 "bare-url": {
2029 "optional": true
2030 }
2031 }
2032 },
2033 "node_modules/bare-ansi-escapes": {
2034 "version": "2.2.3",
2035 "resolved": "https://registry.npmjs.org/bare-ansi-escapes/-/bare-ansi-escapes-2.2.3.tgz",
2036 "integrity": "sha512-02ES4/E2RbrtZSnHJ9LntBhYkLA6lPpSEeP8iqS3MccBIVhVBlEmruF1I7HZqx5Q8aiTeYfQVeqmrU9YO2yYoQ==",
2037 "license": "Apache-2.0",
2038 "dependencies": {
2039 "bare-stream": "^2.6.5"
2040 },
2041 "peerDependencies": {
2042 "bare-buffer": "*"
2043 },
2044 "peerDependenciesMeta": {
2045 "bare-buffer": {
2046 "optional": true
2047 }
2048 }
2049 },
2050 "node_modules/bare-buffer": {
2051 "version": "3.7.1",
2052 "resolved": "https://registry.npmjs.org/bare-buffer/-/bare-buffer-3.7.1.tgz",
2053 "integrity": "sha512-cIjZnSO+y89ykVX9x96OVnA6tGORBn7vGJ/e3PCbBHMEyfMNG/ixzOS0lLa6saMlWcs69bSKjxFyDwjK152OMg==",
2054 "license": "Apache-2.0",
2055 "peer": true,
2056 "engines": {
2057 "bare": ">=1.20.0"
2058 }
2059 },
2060 "node_modules/bare-bundle": {
2061 "version": "1.11.0",
2062 "resolved": "https://registry.npmjs.org/bare-bundle/-/bare-bundle-1.11.0.tgz",
2063 "integrity": "sha512-msaGQLaojz+EszDhf0qvCTmVWgJFSqbC5bUmEb9AKyVeglmJpx1EbCGqQTiXycCV7oA++MYqTagh/YdIZ//bmQ==",
2064 "dev": true,
2065 "license": "Apache-2.0",
2066 "peer": true,
2067 "peerDependencies": {
2068 "bare-buffer": "*",
2069 "bare-url": "*"
2070 },
2071 "peerDependenciesMeta": {
2072 "bare-buffer": {
2073 "optional": true
2074 },
2075 "bare-url": {
2076 "optional": true
2077 }
2078 }
2079 },
2080 "node_modules/bare-bundle-id": {
2081 "version": "1.0.2",
2082 "resolved": "https://registry.npmjs.org/bare-bundle-id/-/bare-bundle-id-1.0.2.tgz",
2083 "integrity": "sha512-RG/y1J/s6zWmsqUIDtclXh+xxMRTh1jo/10vFL58FKhe9UESchMNkwn0Cz10o5AdA/35WR/KUGoHhIGdyCjQrg==",
2084 "dev": true,
2085 "license": "Apache-2.0",
2086 "dependencies": {
2087 "sodium-native": "^5.0.9"
2088 },
2089 "peerDependencies": {
2090 "bare-buffer": "*",
2091 "bare-bundle": "*"
2092 }
2093 },
2094 "node_modules/bare-channel": {
2095 "version": "5.3.0",
2096 "resolved": "https://registry.npmjs.org/bare-channel/-/bare-channel-5.3.0.tgz",
2097 "integrity": "sha512-W42Pkl/IjfkIVObQnixidRThST6ZcqY0u6AMTLb2+Jc/enBVsXPxzmyhEDoQjNNYi4WBGkOG7YHR4X46Ah9xfA==",
2098 "dev": true,
2099 "license": "Apache-2.0",
2100 "dependencies": {
2101 "bare-events": "^2.0.0",
2102 "bare-stream": "^2.7.0",
2103 "bare-structured-clone": "^2.0.0"
2104 },
2105 "engines": {
2106 "bare": ">=1.7.0"
2107 }
2108 },
2109 "node_modules/bare-channel/node_modules/bare-structured-clone": {
2110 "version": "1.6.0",
2111 "resolved": "https://registry.npmjs.org/bare-structured-clone/-/bare-structured-clone-1.6.0.tgz",
2112 "integrity": "sha512-AZjEERyqF7kAuudlmgrweT2KwwWM0LsGG4Gx/bWyFwJrKU7E3wNG8c09z2DIrdw93p3vDtfOX8fyHOcXfy5m+g==",
2113 "dev": true,
2114 "license": "Apache-2.0",
2115 "dependencies": {
2116 "bare-buffer": "^3.6.0",
2117 "bare-type": "^1.1.0",
2118 "bare-url": "^2.4.0",
2119 "compact-encoding": "^3.0.1"
2120 },
2121 "engines": {
2122 "bare": ">=1.2.0"
2123 }
2124 },
2125 "node_modules/bare-channel/node_modules/bare-type": {
2126 "version": "1.1.1",
2127 "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.1.1.tgz",
2128 "integrity": "sha512-5HwbjDbnYr+Lwu5I59IqwOFcRcVo4jxo408t42gKhKnikw0ojwyPXPlx58AQP4dR2VvGw57ppX/qxYCn60Wujw==",
2129 "dev": true,
2130 "license": "Apache-2.0",
2131 "engines": {
2132 "bare": ">=1.2.0"
2133 }
2134 },
2135 "node_modules/bare-cov": {
2136 "version": "1.2.3",
2137 "resolved": "https://registry.npmjs.org/bare-cov/-/bare-cov-1.2.3.tgz",
2138 "integrity": "sha512-M9XAEUxk3KKMMD2g8WwbrR0grc25RhkS95XnW6+PksSQdN1C43gYSOa0fQeun5Vo6rvTv501FEYyERKA43EzWg==",
2139 "dev": true,
2140 "license": "Apache-2.0",
2141 "dependencies": {
2142 "bare-fs": "^4.8.1",
2143 "bare-inspector": "^6.1.0",
2144 "bare-path": "^3.1.2",
2145 "bare-process": "^4.5.1",
2146 "bare-url": "^2.5.4",
2147 "bare-v8-to-istanbul": "^1.0.4",
2148 "picomatch": "^4.0.7",
2149 "which-runtime": "^1.4.0"
2150 }
2151 },
2152 "node_modules/bare-crypto": {
2153 "version": "1.15.4",
2154 "resolved": "https://registry.npmjs.org/bare-crypto/-/bare-crypto-1.15.4.tgz",
2155 "integrity": "sha512-4luuiLnxIJvM7ZyyW6pXbaaGoQDZcIkfcVZrPzJ3oIpdi2UIP37dROmzBWqI2lnrzfKoQlKWM8ryHmyG2svViw==",
2156 "dev": true,
2157 "license": "Apache-2.0",
2158 "dependencies": {
2159 "bare-assert": "^1.2.0",
2160 "bare-stream": "^2.6.3"
2161 },
2162 "peerDependencies": {
2163 "bare-buffer": "*"
2164 },
2165 "peerDependenciesMeta": {
2166 "bare-buffer": {
2167 "optional": true
2168 }
2169 }
2170 },
2171 "node_modules/bare-crypto/node_modules/bare-assert": {
2172 "version": "1.2.0",
2173 "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.2.0.tgz",
2174 "integrity": "sha512-c6uvgvTJBspTDxtVnPgrBKmLgcpW3Fp72NVKDLg6oT4QjQbhGtvrkHMhGYMK1sh4vjBHOBmuUalyt9hSzV37fQ==",
2175 "dev": true,
2176 "license": "Apache-2.0",
2177 "dependencies": {
2178 "bare-inspect": "^3.1.2"
2179 }
2180 },
2181 "node_modules/bare-debug-log": {
2182 "version": "2.0.0",
2183 "resolved": "https://registry.npmjs.org/bare-debug-log/-/bare-debug-log-2.0.0.tgz",
2184 "integrity": "sha512-Vi42PkMQsNV9PUpx2Gl1hikshx5O9FzMJ6o9Nnopseg7qLBBK7Nl31d0RHcfwLEAfmcPApytpc0ZFfq68u22FQ==",
2185 "dev": true,
2186 "license": "Apache-2.0",
2187 "dependencies": {
2188 "bare-os": "^3.0.1"
2189 }
2190 },
2191 "node_modules/bare-dns": {
2192 "version": "2.2.1",
2193 "resolved": "https://registry.npmjs.org/bare-dns/-/bare-dns-2.2.1.tgz",
2194 "integrity": "sha512-76kta7f4YMiXwhdlK1q8AFnVvSlZ5yv4FL4AH83KoTRErgj0Ttm6Jo9993+gWEWQfl7VZTHtihPozstlknXszw==",
2195 "license": "Apache-2.0",
2196 "engines": {
2197 "bare": ">=1.7.0"
2198 },
2199 "peerDependencies": {
2200 "bare-buffer": "*"
2201 },
2202 "peerDependenciesMeta": {
2203 "bare-buffer": {
2204 "optional": true
2205 }
2206 }
2207 },
2208 "node_modules/bare-encoding": {
2209 "version": "1.0.3",
2210 "resolved": "https://registry.npmjs.org/bare-encoding/-/bare-encoding-1.0.3.tgz",
2211 "integrity": "sha512-Kqf+t/azs13lUeyK4Tb7ha4wdLRXKWCXQ8w1rVmt7KtoPCPdHD/Xwt7LBIsCSwwGglrcmblo5VOLa5avkJqULA==",
2212 "dev": true,
2213 "license": "Apache-2.0",
2214 "peerDependencies": {
2215 "bare-buffer": "*"
2216 },
2217 "peerDependenciesMeta": {
2218 "bare-buffer": {
2219 "optional": true
2220 }
2221 }
2222 },
2223 "node_modules/bare-env": {
2224 "version": "3.0.1",
2225 "resolved": "https://registry.npmjs.org/bare-env/-/bare-env-3.0.1.tgz",
2226 "integrity": "sha512-BdoLvnzaWR0YyyJreEx4zG2Od0AC/s9JSZ+EXyMZKunpn8zEgR/dGv37hdFUaY1bjDkcRKvcKkFyJIwlJ0CaYA==",
2227 "license": "Apache-2.0",
2228 "dependencies": {
2229 "bare-os": "^3.0.1"
2230 }
2231 },
2232 "node_modules/bare-events": {
2233 "version": "2.9.2",
2234 "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.2.tgz",
2235 "integrity": "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==",
2236 "license": "Apache-2.0",
2237 "peerDependencies": {
2238 "bare-abort-controller": "*"
2239 },
2240 "peerDependenciesMeta": {
2241 "bare-abort-controller": {
2242 "optional": true
2243 }
2244 }
2245 },
2246 "node_modules/bare-format": {
2247 "version": "1.0.2",
2248 "resolved": "https://registry.npmjs.org/bare-format/-/bare-format-1.0.2.tgz",
2249 "integrity": "sha512-GswdhnOnP9QtwRbrf4wLApw5widkaLMsLe2XOs35fQD2YfEN1ApoGka+cZ7PfvzxMgfYXmMhj/2OGlVn5/Dxgw==",
2250 "dev": true,
2251 "license": "Apache-2.0",
2252 "dependencies": {
2253 "bare-inspect": "^3.0.0"
2254 }
2255 },
2256 "node_modules/bare-fs": {
2257 "version": "4.8.2",
2258 "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.8.2.tgz",
2259 "integrity": "sha512-+ZI68KHMUvosXfKbg/UOHK0tbCdRnegbvPEdEcZ3Nd6TetieQsJPRXBRXPdLyy8+3VSEbPXtsumTpEtt78xv9w==",
2260 "license": "Apache-2.0",
2261 "dependencies": {
2262 "bare-events": "^2.5.4",
2263 "bare-path": "^3.0.0",
2264 "bare-stream": "^2.6.4",
2265 "bare-url": "^2.2.2",
2266 "fast-fifo": "^1.3.2"
2267 },
2268 "engines": {
2269 "bare": ">=1.28.0"
2270 },
2271 "peerDependencies": {
2272 "bare-buffer": "*"
2273 },
2274 "peerDependenciesMeta": {
2275 "bare-buffer": {
2276 "optional": true
2277 }
2278 }
2279 },
2280 "node_modules/bare-hrtime": {
2281 "version": "2.1.2",
2282 "resolved": "https://registry.npmjs.org/bare-hrtime/-/bare-hrtime-2.1.2.tgz",
2283 "integrity": "sha512-ePu0axonbewvuUv9TFqjfvnZTaw+mL4JNx1q79dw8T3DIQEjqHs+pXyj92ghepa8K14KLtX3GdUuAVB+faaGDw==",
2284 "dev": true,
2285 "license": "Apache-2.0"
2286 },
2287 "node_modules/bare-http-parser": {
2288 "version": "2.1.4",
2289 "resolved": "https://registry.npmjs.org/bare-http-parser/-/bare-http-parser-2.1.4.tgz",
2290 "integrity": "sha512-6CRjxqMdrEoKKBCS6FbdZUuVsRtyqq18BUae9l9N5okSV75S9lUAF9f5aFSKTNybBS/hcnlxFNocdpXbd2Ohaw==",
2291 "dev": true,
2292 "license": "Apache-2.0"
2293 },
2294 "node_modules/bare-http1": {
2295 "version": "4.6.2",
2296 "resolved": "https://registry.npmjs.org/bare-http1/-/bare-http1-4.6.2.tgz",
2297 "integrity": "sha512-fnvBPNUH6KfdcEG7sKKKtvc3/9BEn3vkmJPgdtSLqGl6i2J9Csnl14mVv78ODPn8p3Zu2ZfmlG5XQzQQ45fwLw==",
2298 "dev": true,
2299 "license": "Apache-2.0",
2300 "dependencies": {
2301 "bare-events": "^2.6.0",
2302 "bare-hrtime": "^2.1.1",
2303 "bare-http-parser": "^2.1.0",
2304 "bare-stream": "^2.10.0",
2305 "bare-tcp": "^2.2.0"
2306 },
2307 "peerDependencies": {
2308 "bare-buffer": "*",
2309 "bare-url": "*"
2310 },
2311 "peerDependenciesMeta": {
2312 "bare-buffer": {
2313 "optional": true
2314 },
2315 "bare-url": {
2316 "optional": true
2317 }
2318 }
2319 },
2320 "node_modules/bare-https": {
2321 "version": "3.1.0",
2322 "resolved": "https://registry.npmjs.org/bare-https/-/bare-https-3.1.0.tgz",
2323 "integrity": "sha512-HNAS0q7CBAXGDFRy/xaYJEsAaVcvyDRXKU1b/KxS/zdcfBWsQVB0TntSzz3IlqZ5ZWHiaOOrMYAO/oIDgpTLkQ==",
2324 "dev": true,
2325 "license": "Apache-2.0",
2326 "dependencies": {
2327 "bare-http1": "^4.4.0",
2328 "bare-tcp": "^2.2.0",
2329 "bare-tls": "^3.0.0"
2330 }
2331 },
2332 "node_modules/bare-inspect": {
2333 "version": "3.1.10",
2334 "resolved": "https://registry.npmjs.org/bare-inspect/-/bare-inspect-3.1.10.tgz",
2335 "integrity": "sha512-Qu01XZNTIT2/bS9k7c6A3OXuAzBnWwDCejGri76BUltdFqVe6Et/IxVOSSbcDpreSSWwqQ5pAu/bxFE6hPDWRQ==",
2336 "license": "Apache-2.0",
2337 "dependencies": {
2338 "bare-ansi-escapes": "^2.1.0",
2339 "bare-type": "^1.0.0"
2340 },
2341 "engines": {
2342 "bare": ">=1.18.0"
2343 }
2344 },
2345 "node_modules/bare-inspect/node_modules/bare-type": {
2346 "version": "1.1.1",
2347 "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.1.1.tgz",
2348 "integrity": "sha512-5HwbjDbnYr+Lwu5I59IqwOFcRcVo4jxo408t42gKhKnikw0ojwyPXPlx58AQP4dR2VvGw57ppX/qxYCn60Wujw==",
2349 "license": "Apache-2.0",
2350 "engines": {
2351 "bare": ">=1.2.0"
2352 }
2353 },
2354 "node_modules/bare-inspector": {
2355 "version": "6.1.0",
2356 "resolved": "https://registry.npmjs.org/bare-inspector/-/bare-inspector-6.1.0.tgz",
2357 "integrity": "sha512-PRxmZ4gF+K3TLzGubgRFvzdECybTCSKackgNsAdd4e7SdvICxMkGj+p5iX7bSKYSmgDnxgCR+2Z6UXmWykKhvw==",
2358 "dev": true,
2359 "license": "Apache-2.0",
2360 "dependencies": {
2361 "bare-events": "^2.1.0",
2362 "bare-http1": "^4.0.0",
2363 "bare-stream": "^2.0.0",
2364 "bare-url": "^2.0.0",
2365 "bare-ws": "^3.0.0"
2366 },
2367 "engines": {
2368 "bare": ">=1.29.0"
2369 },
2370 "peerDependencies": {
2371 "bare-tcp": "*"
2372 },
2373 "peerDependenciesMeta": {
2374 "bare-tcp": {
2375 "optional": true
2376 }
2377 }
2378 },
2379 "node_modules/bare-lief": {
2380 "version": "0.2.9",
2381 "resolved": "https://registry.npmjs.org/bare-lief/-/bare-lief-0.2.9.tgz",
2382 "integrity": "sha512-3LimGu6jukLl3DzUyMq/vzVh6SSZZRjFg9B+6Q9JSSkaD3gptbUivY9R6dG3PD8MqA5OEQL3YPim7xgTePr14A==",
2383 "license": "Apache-2.0",
2384 "dependencies": {
2385 "bare-assert": "^1.2.0",
2386 "require-addon": "^1.2.0"
2387 }
2388 },
2389 "node_modules/bare-lief/node_modules/bare-assert": {
2390 "version": "1.2.0",
2391 "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.2.0.tgz",
2392 "integrity": "sha512-c6uvgvTJBspTDxtVnPgrBKmLgcpW3Fp72NVKDLg6oT4QjQbhGtvrkHMhGYMK1sh4vjBHOBmuUalyt9hSzV37fQ==",
2393 "license": "Apache-2.0",
2394 "dependencies": {
2395 "bare-inspect": "^3.1.2"
2396 }
2397 },
2398 "node_modules/bare-link": {
2399 "version": "3.3.2",
2400 "resolved": "https://registry.npmjs.org/bare-link/-/bare-link-3.3.2.tgz",
2401 "integrity": "sha512-DIhJ1Hq0RRkg2ptQmJuEbYbTZUGV4eJzwJxHkpFMoeYD1zpDZb0RaGFuJ4T5nEtGznhNPbTq+5obQ6xxMmlQ5A==",
2402 "license": "Apache-2.0",
2403 "dependencies": {
2404 "bare-fs": "^4.0.0",
2405 "bare-lief": "^0.2.0",
2406 "bare-module-resolve": "^1.12.0",
2407 "bare-os": "^3.2.0",
2408 "bare-path": "^3.0.0",
2409 "bare-semver": "^1.0.3",
2410 "bare-subprocess": "^6.0.0",
2411 "bare-url": "^2.0.9",
2412 "paparam": "^1.5.0"
2413 },
2414 "bin": {
2415 "bare-link": "bin.js"
2416 }
2417 },
2418 "node_modules/bare-mime": {
2419 "version": "1.0.0",
2420 "resolved": "https://registry.npmjs.org/bare-mime/-/bare-mime-1.0.0.tgz",
2421 "integrity": "sha512-lUOswzBkfqham4zjLDueKOd4Qj3gS56BiZ3q2f0g0adoFhF+HFNupvTUfZBWoicl7fWJ7Hp2RUZjmkY47dxxOQ==",
2422 "dev": true,
2423 "license": "Apache-2.0"
2424 },
2425 "node_modules/bare-module": {
2426 "version": "6.4.0",
2427 "resolved": "https://registry.npmjs.org/bare-module/-/bare-module-6.4.0.tgz",
2428 "integrity": "sha512-Yn4V5g5EqGQL4LYUOmt7fjKzj2JPWyJOqE3lPoeZwfUH5rk4CKUfZj6JhDwbzhBYCqqmUgjgQ5aY8cihAPILLA==",
2429 "dev": true,
2430 "license": "Apache-2.0",
2431 "dependencies": {
2432 "bare-bundle": "^1.3.0",
2433 "bare-module-lexer": "^1.0.0",
2434 "bare-module-resolve": "^1.8.0",
2435 "bare-path": "^3.0.0",
2436 "bare-type-stripper": "^0.1.2",
2437 "bare-url": "^2.0.1"
2438 },
2439 "engines": {
2440 "bare": ">=1.29.4"
2441 },
2442 "peerDependencies": {
2443 "bare-buffer": "*"
2444 },
2445 "peerDependenciesMeta": {
2446 "bare-buffer": {
2447 "optional": true
2448 }
2449 }
2450 },
2451 "node_modules/bare-module-lexer": {
2452 "version": "1.7.0",
2453 "resolved": "https://registry.npmjs.org/bare-module-lexer/-/bare-module-lexer-1.7.0.tgz",
2454 "integrity": "sha512-LD5eiVhDyiMRfMtxK3E+0SeL95nkLNl37YUccXWEaErmfkJi596OECtUoH3X+YPomthwW2oQEch9c7aOOJ4ePA==",
2455 "dev": true,
2456 "license": "Apache-2.0",
2457 "dependencies": {
2458 "require-addon": "^1.0.2"
2459 },
2460 "engines": {
2461 "bare": ">=1.0.0",
2462 "node": "^22.21.0 || >=24.9.0"
2463 },
2464 "peerDependencies": {
2465 "bare-buffer": "*"
2466 },
2467 "peerDependenciesMeta": {
2468 "bare-buffer": {
2469 "optional": true
2470 }
2471 }
2472 },
2473 "node_modules/bare-module-resolve": {
2474 "version": "1.12.5",
2475 "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.12.5.tgz",
2476 "integrity": "sha512-VOncxVvVk8SQVw9vhcBnoTJD/74aR5DgdRPCm0gQ7uB5MsWpBJnoCeJrwEHKiz09O83ndf3NTjsz3LEuFxAq5A==",
2477 "license": "Apache-2.0",
2478 "dependencies": {
2479 "bare-semver": "^1.0.0"
2480 },
2481 "peerDependencies": {
2482 "bare-url": "*"
2483 },
2484 "peerDependenciesMeta": {
2485 "bare-url": {
2486 "optional": true
2487 }
2488 }
2489 },
2490 "node_modules/bare-module-traverse": {
2491 "version": "2.5.9",
2492 "resolved": "https://registry.npmjs.org/bare-module-traverse/-/bare-module-traverse-2.5.9.tgz",
2493 "integrity": "sha512-cAkJxUYfdaBvYS1N8g8evHmNNDtJD+PbZYXLBxF9Plg8EantwmUMwFe2EGFw96+VcVo2ot/8aIX+4aedH44NCg==",
2494 "dev": true,
2495 "license": "Apache-2.0",
2496 "dependencies": {
2497 "bare-addon-resolve": "^1.5.0",
2498 "bare-mime": "^1.0.0",
2499 "bare-module-lexer": "^1.6.0",
2500 "bare-module-resolve": "^1.7.0"
2501 },
2502 "peerDependencies": {
2503 "bare-buffer": "*",
2504 "bare-url": "*"
2505 },
2506 "peerDependenciesMeta": {
2507 "bare-buffer": {
2508 "optional": true
2509 },
2510 "bare-url": {
2511 "optional": true
2512 }
2513 }
2514 },
2515 "node_modules/bare-net": {
2516 "version": "2.3.3",
2517 "resolved": "https://registry.npmjs.org/bare-net/-/bare-net-2.3.3.tgz",
2518 "integrity": "sha512-q1noXFJKn+eNi6vXYv2Y+5FTnn+o7qpli4m2lUZTdK8cBjVs2zGaykuzTUIa29v70eOsQI9OAIyYwN3ODHtFaQ==",
2519 "dev": true,
2520 "license": "Apache-2.0",
2521 "dependencies": {
2522 "bare-events": "^2.2.2",
2523 "bare-pipe": "^4.0.0",
2524 "bare-stream": "^2.0.0",
2525 "bare-tcp": "^2.0.0"
2526 }
2527 },
2528 "node_modules/bare-os": {
2529 "version": "3.9.3",
2530 "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.3.tgz",
2531 "integrity": "sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ==",
2532 "license": "Apache-2.0",
2533 "engines": {
2534 "bare": ">=1.14.0"
2535 }
2536 },
2537 "node_modules/bare-pack": {
2538 "version": "2.2.2",
2539 "resolved": "https://registry.npmjs.org/bare-pack/-/bare-pack-2.2.2.tgz",
2540 "integrity": "sha512-4id2zXMNlQSDyTD1ynbvZBDEVebkqU8CkgJQv01LDxF0PAtMcJ+4LKYXQbz+rmkJIchvSuMd2v62dYrOKf2zBQ==",
2541 "dev": true,
2542 "license": "Apache-2.0",
2543 "dependencies": {
2544 "bare-bundle": "^1.8.3",
2545 "bare-bundle-id": "^1.0.0",
2546 "bare-fs": "^4.2.1",
2547 "bare-module-traverse": "~2.5.0",
2548 "bare-path": "^3.0.0",
2549 "paparam": "^1.5.0",
2550 "promaphore": "^1.0.0"
2551 },
2552 "bin": {
2553 "bare-pack": "bin.js"
2554 },
2555 "peerDependencies": {
2556 "bare-buffer": "^3.6.0",
2557 "bare-url": "^2.4.0"
2558 },
2559 "peerDependenciesMeta": {
2560 "bare-buffer": {
2561 "optional": true
2562 },
2563 "bare-url": {
2564 "optional": true
2565 }
2566 }
2567 },
2568 "node_modules/bare-path": {
2569 "version": "3.1.2",
2570 "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.1.2.tgz",
2571 "integrity": "sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==",
2572 "license": "Apache-2.0"
2573 },
2574 "node_modules/bare-pipe": {
2575 "version": "4.3.1",
2576 "resolved": "https://registry.npmjs.org/bare-pipe/-/bare-pipe-4.3.1.tgz",
2577 "integrity": "sha512-3P4MYTgOys1Bbz5dgWzwfroNOOl8x1zWJHTHVlwsojThhV/uJPRf+qFrYYBOnI0vQiJJLJtHlw8a4Osj/kcsJQ==",
2578 "license": "Apache-2.0",
2579 "dependencies": {
2580 "bare-events": "^2.5.4",
2581 "bare-stream": "^2.6.4"
2582 },
2583 "engines": {
2584 "bare": ">=1.16.0"
2585 },
2586 "peerDependencies": {
2587 "bare-buffer": "*"
2588 },
2589 "peerDependenciesMeta": {
2590 "bare-buffer": {
2591 "optional": true
2592 }
2593 }
2594 },
2595 "node_modules/bare-posix": {
2596 "version": "1.0.1",
2597 "resolved": "https://registry.npmjs.org/bare-posix/-/bare-posix-1.0.1.tgz",
2598 "integrity": "sha512-b4quA8dyRVvX0aFIAIiev5zFATHwIUGr42Gmt+CqiBNg/bdsNkrj4bbkeotMOMiljJS4DCME5kywJO/TFwKo1A==",
2599 "dev": true,
2600 "license": "Apache-2.0"
2601 },
2602 "node_modules/bare-process": {
2603 "version": "4.5.1",
2604 "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.5.1.tgz",
2605 "integrity": "sha512-CaAvy1trputD49mtwfJ6G75vydhnirLrW/F3Sznp4H556e1uZn8YMo9ELicBTrGYy7RBNUgPl9bpB/ERzRCiDw==",
2606 "dev": true,
2607 "license": "Apache-2.0",
2608 "dependencies": {
2609 "bare-abort": "^2.0.13",
2610 "bare-env": "^3.0.0",
2611 "bare-events": "^2.3.1",
2612 "bare-hrtime": "^2.0.0",
2613 "bare-os": "^3.7.1",
2614 "bare-posix": "^1.0.1",
2615 "bare-signals": "^5.0.0",
2616 "bare-stdio": "^1.0.1"
2617 }
2618 },
2619 "node_modules/bare-semver": {
2620 "version": "1.1.0",
2621 "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.1.0.tgz",
2622 "integrity": "sha512-1Hw5qJ7hXdVt3uPUqjeFTuxyvBUJauvz5A1I2jk8gzjZMHp04n//6nV9MDbG9CMw78JHY2lGV0w6s//LrASm2w==",
2623 "license": "Apache-2.0"
2624 },
2625 "node_modules/bare-signals": {
2626 "version": "5.0.0",
2627 "resolved": "https://registry.npmjs.org/bare-signals/-/bare-signals-5.0.0.tgz",
2628 "integrity": "sha512-8Gn8bBFUh2AUCJ9wWWFjSGWIo1HIUSIQnXRJGSm/f7GCDMqsuJhRmR1dT+HtDaDBkeu2l8Koxt2JLurfJ5yHVw==",
2629 "dev": true,
2630 "license": "Apache-2.0",
2631 "dependencies": {
2632 "bare-events": "^2.5.3"
2633 },
2634 "engines": {
2635 "bare": ">=1.7.0"
2636 }
2637 },
2638 "node_modules/bare-stdio": {
2639 "version": "1.0.3",
2640 "resolved": "https://registry.npmjs.org/bare-stdio/-/bare-stdio-1.0.3.tgz",
2641 "integrity": "sha512-8BRMx7RWMWCbBmKhyHgBco62J+Pgss7+EPI21L3R9+w0UpwDYWUUcbE0YTOesGyt7M6N7VtoshYbzwrP0pI52Q==",
2642 "dev": true,
2643 "license": "Apache-2.0",
2644 "dependencies": {
2645 "bare-fs": "^4.5.2",
2646 "bare-pipe": "^4.1.5",
2647 "bare-tty": "^5.0.3"
2648 }
2649 },
2650 "node_modules/bare-stream": {
2651 "version": "2.13.4",
2652 "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.4.tgz",
2653 "integrity": "sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==",
2654 "license": "Apache-2.0",
2655 "dependencies": {
2656 "b4a": "^1.8.1",
2657 "streamx": "^2.25.0",
2658 "teex": "^1.0.1"
2659 },
2660 "peerDependencies": {
2661 "bare-abort-controller": "*",
2662 "bare-buffer": "*",
2663 "bare-events": "*"
2664 },
2665 "peerDependenciesMeta": {
2666 "bare-abort-controller": {
2667 "optional": true
2668 },
2669 "bare-buffer": {
2670 "optional": true
2671 },
2672 "bare-events": {
2673 "optional": true
2674 }
2675 }
2676 },
2677 "node_modules/bare-stylize": {
2678 "version": "0.0.1",
2679 "resolved": "https://registry.npmjs.org/bare-stylize/-/bare-stylize-0.0.1.tgz",
2680 "integrity": "sha512-l3MjmIl476bWijYWf3RbE+osl4iuXSOMudzp0vAqzIK7gPgn/+G3oAxp8Oin9CFF911KBP0LO9kts8Ci8mGZaQ==",
2681 "dev": true,
2682 "license": "Apache-2.0",
2683 "dependencies": {
2684 "bare-ansi-escapes": "^2.2.3",
2685 "bare-process": "^4.2.1"
2686 }
2687 },
2688 "node_modules/bare-subprocess": {
2689 "version": "6.2.0",
2690 "resolved": "https://registry.npmjs.org/bare-subprocess/-/bare-subprocess-6.2.0.tgz",
2691 "integrity": "sha512-vVCIEXSyMNuokdjV8yIzt3Vtbc+gFUI/C/z7CAsO4cGTtHlVEuJeI6V6JP0hUBScCgj62xFloMAM3Y2aPTQuQA==",
2692 "license": "Apache-2.0",
2693 "dependencies": {
2694 "bare-env": "^3.0.0",
2695 "bare-events": "^2.5.4",
2696 "bare-os": "^3.0.1",
2697 "bare-pipe": "^4.2.0",
2698 "bare-structured-clone": "^2.0.0",
2699 "bare-tcp": "^2.4.1",
2700 "bare-url": "^2.2.2"
2701 },
2702 "engines": {
2703 "bare": ">=1.7.0"
2704 },
2705 "peerDependencies": {
2706 "bare-buffer": "*"
2707 },
2708 "peerDependenciesMeta": {
2709 "bare-buffer": {
2710 "optional": true
2711 }
2712 }
2713 },
2714 "node_modules/bare-subprocess/node_modules/bare-structured-clone": {
2715 "version": "1.6.0",
2716 "resolved": "https://registry.npmjs.org/bare-structured-clone/-/bare-structured-clone-1.6.0.tgz",
2717 "integrity": "sha512-AZjEERyqF7kAuudlmgrweT2KwwWM0LsGG4Gx/bWyFwJrKU7E3wNG8c09z2DIrdw93p3vDtfOX8fyHOcXfy5m+g==",
2718 "license": "Apache-2.0",
2719 "dependencies": {
2720 "bare-buffer": "^3.6.0",
2721 "bare-type": "^1.1.0",
2722 "bare-url": "^2.4.0",
2723 "compact-encoding": "^3.0.1"
2724 },
2725 "engines": {
2726 "bare": ">=1.2.0"
2727 }
2728 },
2729 "node_modules/bare-subprocess/node_modules/bare-type": {
2730 "version": "1.1.1",
2731 "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.1.1.tgz",
2732 "integrity": "sha512-5HwbjDbnYr+Lwu5I59IqwOFcRcVo4jxo408t42gKhKnikw0ojwyPXPlx58AQP4dR2VvGw57ppX/qxYCn60Wujw==",
2733 "license": "Apache-2.0",
2734 "engines": {
2735 "bare": ">=1.2.0"
2736 }
2737 },
2738 "node_modules/bare-tcp": {
2739 "version": "2.6.1",
2740 "resolved": "https://registry.npmjs.org/bare-tcp/-/bare-tcp-2.6.1.tgz",
2741 "integrity": "sha512-8f8UFP7O27gIGaVWJPysQ2am8LSD6YCuVSbnTbOrQjUD0RkWEZexvi2Q66P99MLxSephlyjoU0mLxWmozRJMnA==",
2742 "license": "Apache-2.0",
2743 "dependencies": {
2744 "bare-dns": "^2.0.4",
2745 "bare-events": "^2.5.4",
2746 "bare-stream": "^2.6.4"
2747 },
2748 "engines": {
2749 "bare": ">=1.16.0"
2750 },
2751 "peerDependencies": {
2752 "bare-pipe": "*"
2753 },
2754 "peerDependenciesMeta": {
2755 "bare-pipe": {
2756 "optional": true
2757 }
2758 }
2759 },
2760 "node_modules/bare-tls": {
2761 "version": "3.1.11",
2762 "resolved": "https://registry.npmjs.org/bare-tls/-/bare-tls-3.1.11.tgz",
2763 "integrity": "sha512-lCQMepLYPPmdunO4MtkVe6l619Kdrt47/0HDGOgJY6zVvEeFACZD1hkh1kRw6zJk2NQHLcnebggYQZ/z6J/cPg==",
2764 "dev": true,
2765 "license": "Apache-2.0",
2766 "dependencies": {
2767 "bare-net": "^2.0.1",
2768 "bare-stream": "^2.6.4"
2769 },
2770 "engines": {
2771 "bare": ">=1.7.0"
2772 }
2773 },
2774 "node_modules/bare-tty": {
2775 "version": "5.2.1",
2776 "resolved": "https://registry.npmjs.org/bare-tty/-/bare-tty-5.2.1.tgz",
2777 "integrity": "sha512-vH9ggdu6q+HilCKcYCfSzwuN2QaR4+gGP+JiYN5zKMhMI6tKeKnZMCuE/AJoF9lbSo0FriPdZoKA5bO2b0Mk3w==",
2778 "dev": true,
2779 "license": "Apache-2.0",
2780 "dependencies": {
2781 "bare-events": "^2.2.0",
2782 "bare-signals": "^5.0.0",
2783 "bare-stream": "^2.0.0"
2784 },
2785 "engines": {
2786 "bare": ">=1.16.0"
2787 }
2788 },
2789 "node_modules/bare-type-stripper": {
2790 "version": "0.1.7",
2791 "resolved": "https://registry.npmjs.org/bare-type-stripper/-/bare-type-stripper-0.1.7.tgz",
2792 "integrity": "sha512-kiYTY1PqJnCQmaGT4Q23gskKCTtxqinPdA0SKMO80rjyLMdZhkT+mALf+/UryvovV6ysXtYXGSNPZR4wFhCI/g==",
2793 "dev": true,
2794 "license": "Apache-2.0",
2795 "dependencies": {
2796 "require-addon": "^1.0.2"
2797 },
2798 "engines": {
2799 "bare": ">=1.0.0",
2800 "node": "^22.21.0 || >=24.9.0"
2801 },
2802 "peerDependencies": {
2803 "bare-buffer": "*"
2804 },
2805 "peerDependenciesMeta": {
2806 "bare-buffer": {
2807 "optional": true
2808 }
2809 }
2810 },
2811 "node_modules/bare-url": {
2812 "version": "2.5.4",
2813 "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.5.4.tgz",
2814 "integrity": "sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g==",
2815 "license": "Apache-2.0",
2816 "dependencies": {
2817 "bare-path": "^3.0.0"
2818 }
2819 },
2820 "node_modules/bare-utils": {
2821 "version": "1.6.0",
2822 "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.6.0.tgz",
2823 "integrity": "sha512-WhQEIkkAxkSnW7u1QgrI0AfNm5JpMruETXeYsb5qnkBJ0TTfNKygZmsh6rkoHBANaV+C/7Jed7bJP9OmEHG7rQ==",
2824 "dev": true,
2825 "license": "Apache-2.0",
2826 "dependencies": {
2827 "bare-debug-log": "^2.0.0",
2828 "bare-encoding": "^1.0.0",
2829 "bare-format": "^1.0.0",
2830 "bare-inspect": "^3.0.0",
2831 "bare-stylize": "^0.0.1",
2832 "bare-type": "^1.0.6"
2833 }
2834 },
2835 "node_modules/bare-utils/node_modules/bare-type": {
2836 "version": "1.1.1",
2837 "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.1.1.tgz",
2838 "integrity": "sha512-5HwbjDbnYr+Lwu5I59IqwOFcRcVo4jxo408t42gKhKnikw0ojwyPXPlx58AQP4dR2VvGw57ppX/qxYCn60Wujw==",
2839 "dev": true,
2840 "license": "Apache-2.0",
2841 "engines": {
2842 "bare": ">=1.2.0"
2843 }
2844 },
2845 "node_modules/bare-v8-to-istanbul": {
2846 "version": "1.0.4",
2847 "resolved": "https://registry.npmjs.org/bare-v8-to-istanbul/-/bare-v8-to-istanbul-1.0.4.tgz",
2848 "integrity": "sha512-aYdse9SdVep4NT18jyMehBShfZgvyQ36Tm+oha2nQIHGcxvdBk0xZLbcYsDPzCTqGdJ5SfXa3VvZUSWyoa3L4w==",
2849 "dev": true,
2850 "license": "Apache-2.0",
2851 "dependencies": {
2852 "bare-assert": "^1.2.0",
2853 "bare-fs": "^4.8.1",
2854 "bare-module": "^6.4.0",
2855 "bare-path": "^3.1.2",
2856 "bare-process": "^4.5.1",
2857 "bare-url": "^2.5.4",
2858 "bare-utils": "^1.6.0",
2859 "v8-to-istanbul": "^9.3.0",
2860 "which-runtime": "^1.4.0"
2861 }
2862 },
2863 "node_modules/bare-v8-to-istanbul/node_modules/bare-assert": {
2864 "version": "1.2.0",
2865 "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.2.0.tgz",
2866 "integrity": "sha512-c6uvgvTJBspTDxtVnPgrBKmLgcpW3Fp72NVKDLg6oT4QjQbhGtvrkHMhGYMK1sh4vjBHOBmuUalyt9hSzV37fQ==",
2867 "dev": true,
2868 "license": "Apache-2.0",
2869 "dependencies": {
2870 "bare-inspect": "^3.1.2"
2871 }
2872 },
2873 "node_modules/bare-ws": {
2874 "version": "3.2.0",
2875 "resolved": "https://registry.npmjs.org/bare-ws/-/bare-ws-3.2.0.tgz",
2876 "integrity": "sha512-9PPJX5JrhuObWZGyhYCrQ1DbhjY1BLVALkZF56r0SYnfyN18ok84yUETcQ377aC2W6w8IqBewjQ1GlovtiXA1Q==",
2877 "dev": true,
2878 "license": "Apache-2.0",
2879 "dependencies": {
2880 "bare-crypto": "^1.2.0",
2881 "bare-events": "^2.3.1",
2882 "bare-http1": "^4.0.0",
2883 "bare-https": "^3.0.0",
2884 "bare-stream": "^2.1.2"
2885 },
2886 "peerDependencies": {
2887 "bare-buffer": "*",
2888 "bare-url": "*"
2889 },
2890 "peerDependenciesMeta": {
2891 "bare-buffer": {
2892 "optional": true
2893 },
2894 "bare-url": {
2895 "optional": true
2896 }
2897 }
2898 },
2899 "node_modules/base-64": {
2900 "version": "0.1.0",
2901 "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
2902 "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA=="
2903 },
2904 "node_modules/base64-js": {
2905 "version": "1.5.1",
2906 "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
2907 "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
2908 "funding": [
2909 {
2910 "type": "github",
2911 "url": "https://github.com/sponsors/feross"
2912 },
2913 {
2914 "type": "patreon",
2915 "url": "https://www.patreon.com/feross"
2916 },
2917 {
2918 "type": "consulting",
2919 "url": "https://feross.org/support"
2920 }
2921 ],
2922 "license": "MIT"
2923 },
2924 "node_modules/baseline-browser-mapping": {
2925 "version": "2.11.27",
2926 "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.27.tgz",
2927 "integrity": "sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==",
2928 "license": "Apache-2.0",
2929 "bin": {
2930 "baseline-browser-mapping": "dist/cli.cjs"
2931 },
2932 "engines": {
2933 "node": ">=6.0.0"
2934 }
2935 },
2936 "node_modules/bl": {
2937 "version": "4.1.0",
2938 "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
2939 "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
2940 "devOptional": true,
2941 "license": "MIT",
2942 "dependencies": {
2943 "buffer": "^5.5.0",
2944 "inherits": "^2.0.4",
2945 "readable-stream": "^3.4.0"
2946 }
2947 },
2948 "node_modules/body-parser": {
2949 "version": "2.3.0",
2950 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz",
2951 "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==",
2952 "devOptional": true,
2953 "license": "MIT",
2954 "dependencies": {
2955 "bytes": "^3.1.2",
2956 "content-type": "^2.0.0",
2957 "debug": "^4.4.3",
2958 "http-errors": "^2.0.1",
2959 "iconv-lite": "^0.7.2",
2960 "on-finished": "^2.4.1",
2961 "qs": "^6.15.2",
2962 "raw-body": "^3.0.2",
2963 "type-is": "^2.1.0"
2964 },
2965 "engines": {
2966 "node": ">=18"
2967 },
2968 "funding": {
2969 "type": "opencollective",
2970 "url": "https://opencollective.com/express"
2971 }
2972 },
2973 "node_modules/braces": {
2974 "version": "3.0.3",
2975 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
2976 "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
2977 "license": "MIT",
2978 "dependencies": {
2979 "fill-range": "^7.1.1"
2980 },
2981 "engines": {
2982 "node": ">=8"
2983 }
2984 },
2985 "node_modules/brittle": {
2986 "version": "4.1.1",
2987 "resolved": "https://registry.npmjs.org/brittle/-/brittle-4.1.1.tgz",
2988 "integrity": "sha512-FHzlSZ5KqB+2uXN1GYboQDzUkR+Z1n6MOXCnrSal5t41IJ9TM/EB+zCyIaOrEYgBpToRQn6U6NAqTYe45CqE5g==",
2989 "dev": true,
2990 "license": "Apache-2.0",
2991 "dependencies": {
2992 "b4a": "^1.8.0",
2993 "bare-assert": "^1.2.0",
2994 "bare-buffer": "^3.6.0",
2995 "bare-channel": "^5.2.3",
2996 "bare-cov": "^1.2.1",
2997 "bare-fs": "^4.5.5",
2998 "bare-os": "^3.7.1",
2999 "bare-path": "^3.0.0",
3000 "bare-process": "^4.3.0",
3001 "bare-subprocess": "^6.1.0",
3002 "bare-url": "^2.3.2",
3003 "bare-utils": "^1.6.0",
3004 "error-stack-parser": "^2.1.4",
3005 "globbie": "^1.0.3",
3006 "paparam": "^1.10.0",
3007 "same-object": "^1.0.2",
3008 "streamx": "^2.25.0",
3009 "test-tmp": "^1.4.0",
3010 "tmatch": "^5.0.0",
3011 "which-runtime": "^1.3.2"
3012 },
3013 "bin": {
3014 "brittle": "advise.js",
3015 "brittle-bare": "brittle-bare.js",
3016 "brittle-make-test": "make-test.js",
3017 "brittle-node": "brittle-node.js"
3018 }
3019 },
3020 "node_modules/brittle/node_modules/bare-assert": {
3021 "version": "1.2.0",
3022 "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.2.0.tgz",
3023 "integrity": "sha512-c6uvgvTJBspTDxtVnPgrBKmLgcpW3Fp72NVKDLg6oT4QjQbhGtvrkHMhGYMK1sh4vjBHOBmuUalyt9hSzV37fQ==",
3024 "dev": true,
3025 "license": "Apache-2.0",
3026 "dependencies": {
3027 "bare-inspect": "^3.1.2"
3028 }
3029 },
3030 "node_modules/browserslist": {
3031 "version": "4.29.3",
3032 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.3.tgz",
3033 "integrity": "sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==",
3034 "funding": [
3035 {
3036 "type": "opencollective",
3037 "url": "https://opencollective.com/browserslist"
3038 },
3039 {
3040 "type": "tidelift",
3041 "url": "https://tidelift.com/funding/github/npm/browserslist"
3042 },
3043 {
3044 "type": "github",
3045 "url": "https://github.com/sponsors/ai"
3046 }
3047 ],
3048 "license": "MIT",
3049 "peer": true,
3050 "dependencies": {
3051 "baseline-browser-mapping": "^2.11.26",
3052 "caniuse-lite": "^1.0.30001813",
3053 "electron-to-chromium": "^1.5.439",
3054 "node-releases": "^2.0.57",
3055 "update-browserslist-db": "^1.3.3"
3056 },
3057 "bin": {
3058 "browserslist": "cli.js"
3059 },
3060 "engines": {
3061 "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
3062 }
3063 },
3064 "node_modules/bser": {
3065 "version": "2.1.1",
3066 "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
3067 "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
3068 "license": "Apache-2.0",
3069 "dependencies": {
3070 "node-int64": "^0.4.0"
3071 }
3072 },
3073 "node_modules/buffer": {
3074 "version": "5.7.1",
3075 "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
3076 "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
3077 "devOptional": true,
3078 "funding": [
3079 {
3080 "type": "github",
3081 "url": "https://github.com/sponsors/feross"
3082 },
3083 {
3084 "type": "patreon",
3085 "url": "https://www.patreon.com/feross"
3086 },
3087 {
3088 "type": "consulting",
3089 "url": "https://feross.org/support"
3090 }
3091 ],
3092 "license": "MIT",
3093 "dependencies": {
3094 "base64-js": "^1.3.1",
3095 "ieee754": "^1.1.13"
3096 }
3097 },
3098 "node_modules/buffer-from": {
3099 "version": "1.1.2",
3100 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
3101 "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
3102 "license": "MIT"
3103 },
3104 "node_modules/bytes": {
3105 "version": "3.1.2",
3106 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
3107 "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
3108 "devOptional": true,
3109 "license": "MIT",
3110 "engines": {
3111 "node": ">= 0.8"
3112 }
3113 },
3114 "node_modules/call-bind-apply-helpers": {
3115 "version": "1.0.2",
3116 "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
3117 "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
3118 "devOptional": true,
3119 "license": "MIT",
3120 "dependencies": {
3121 "es-errors": "^1.3.0",
3122 "function-bind": "^1.1.2"
3123 },
3124 "engines": {
3125 "node": ">= 0.4"
3126 }
3127 },
3128 "node_modules/call-bound": {
3129 "version": "1.0.4",
3130 "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
3131 "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
3132 "devOptional": true,
3133 "license": "MIT",
3134 "dependencies": {
3135 "call-bind-apply-helpers": "^1.0.2",
3136 "get-intrinsic": "^1.3.0"
3137 },
3138 "engines": {
3139 "node": ">= 0.4"
3140 },
3141 "funding": {
3142 "url": "https://github.com/sponsors/ljharb"
3143 }
3144 },
3145 "node_modules/callsites": {
3146 "version": "3.1.0",
3147 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
3148 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
3149 "devOptional": true,
3150 "license": "MIT",
3151 "engines": {
3152 "node": ">=6"
3153 }
3154 },
3155 "node_modules/camelcase": {
3156 "version": "6.3.0",
3157 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
3158 "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
3159 "license": "MIT",
3160 "engines": {
3161 "node": ">=10"
3162 },
3163 "funding": {
3164 "url": "https://github.com/sponsors/sindresorhus"
3165 }
3166 },
3167 "node_modules/caniuse-lite": {
3168 "version": "1.0.30001814",
3169 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001814.tgz",
3170 "integrity": "sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==",
3171 "funding": [
3172 {
3173 "type": "opencollective",
3174 "url": "https://opencollective.com/browserslist"
3175 },
3176 {
3177 "type": "tidelift",
3178 "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
3179 },
3180 {
3181 "type": "github",
3182 "url": "https://github.com/sponsors/ai"
3183 }
3184 ],
3185 "license": "CC-BY-4.0"
3186 },
3187 "node_modules/chalk": {
3188 "version": "4.1.2",
3189 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
3190 "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
3191 "license": "MIT",
3192 "dependencies": {
3193 "ansi-styles": "^4.1.0",
3194 "supports-color": "^7.1.0"
3195 },
3196 "engines": {
3197 "node": ">=10"
3198 },
3199 "funding": {
3200 "url": "https://github.com/chalk/chalk?sponsor=1"
3201 }
3202 },
3203 "node_modules/chrome-launcher": {
3204 "version": "0.15.2",
3205 "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz",
3206 "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==",
3207 "license": "Apache-2.0",
3208 "dependencies": {
3209 "@types/node": "*",
3210 "escape-string-regexp": "^4.0.0",
3211 "is-wsl": "^2.2.0",
3212 "lighthouse-logger": "^1.0.0"
3213 },
3214 "bin": {
3215 "print-chrome-path": "bin/print-chrome-path.js"
3216 },
3217 "engines": {
3218 "node": ">=12.13.0"
3219 }
3220 },
3221 "node_modules/chrome-launcher/node_modules/is-wsl": {
3222 "version": "2.2.0",
3223 "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
3224 "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
3225 "license": "MIT",
3226 "dependencies": {
3227 "is-docker": "^2.0.0"
3228 },
3229 "engines": {
3230 "node": ">=8"
3231 }
3232 },
3233 "node_modules/chromium-edge-launcher": {
3234 "version": "0.3.0",
3235 "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.3.0.tgz",
3236 "integrity": "sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==",
3237 "license": "Apache-2.0",
3238 "dependencies": {
3239 "@types/node": "*",
3240 "escape-string-regexp": "^4.0.0",
3241 "is-wsl": "^2.2.0",
3242 "lighthouse-logger": "^1.0.0",
3243 "mkdirp": "^1.0.4"
3244 }
3245 },
3246 "node_modules/chromium-edge-launcher/node_modules/is-wsl": {
3247 "version": "2.2.0",
3248 "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
3249 "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
3250 "license": "MIT",
3251 "dependencies": {
3252 "is-docker": "^2.0.0"
3253 },
3254 "engines": {
3255 "node": ">=8"
3256 }
3257 },
3258 "node_modules/ci-info": {
3259 "version": "2.0.0",
3260 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
3261 "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
3262 "license": "MIT"
3263 },
3264 "node_modules/cli-cursor": {
3265 "version": "3.1.0",
3266 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
3267 "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
3268 "devOptional": true,
3269 "license": "MIT",
3270 "dependencies": {
3271 "restore-cursor": "^3.1.0"
3272 },
3273 "engines": {
3274 "node": ">=8"
3275 }
3276 },
3277 "node_modules/cli-spinners": {
3278 "version": "2.9.2",
3279 "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
3280 "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
3281 "devOptional": true,
3282 "license": "MIT",
3283 "engines": {
3284 "node": ">=6"
3285 },
3286 "funding": {
3287 "url": "https://github.com/sponsors/sindresorhus"
3288 }
3289 },
3290 "node_modules/cliui": {
3291 "version": "8.0.1",
3292 "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
3293 "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
3294 "license": "ISC",
3295 "dependencies": {
3296 "string-width": "^4.2.0",
3297 "strip-ansi": "^6.0.1",
3298 "wrap-ansi": "^7.0.0"
3299 },
3300 "engines": {
3301 "node": ">=12"
3302 }
3303 },
3304 "node_modules/cliui/node_modules/strip-ansi": {
3305 "version": "6.0.1",
3306 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3307 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3308 "license": "MIT",
3309 "dependencies": {
3310 "ansi-regex": "^5.0.1"
3311 },
3312 "engines": {
3313 "node": ">=8"
3314 }
3315 },
3316 "node_modules/clone": {
3317 "version": "1.0.4",
3318 "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
3319 "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
3320 "devOptional": true,
3321 "license": "MIT",
3322 "engines": {
3323 "node": ">=0.8"
3324 }
3325 },
3326 "node_modules/color-convert": {
3327 "version": "2.0.1",
3328 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
3329 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
3330 "license": "MIT",
3331 "dependencies": {
3332 "color-name": "~1.1.4"
3333 },
3334 "engines": {
3335 "node": ">=7.0.0"
3336 }
3337 },
3338 "node_modules/color-name": {
3339 "version": "1.1.4",
3340 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
3341 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
3342 "license": "MIT"
3343 },
3344 "node_modules/colorette": {
3345 "version": "1.4.0",
3346 "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
3347 "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
3348 "devOptional": true,
3349 "license": "MIT"
3350 },
3351 "node_modules/command-exists": {
3352 "version": "1.2.9",
3353 "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
3354 "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
3355 "devOptional": true,
3356 "license": "MIT"
3357 },
3358 "node_modules/commander": {
3359 "version": "9.5.0",
3360 "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
3361 "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
3362 "devOptional": true,
3363 "license": "MIT",
3364 "engines": {
3365 "node": "^12.20.0 || >=14"
3366 }
3367 },
3368 "node_modules/compact-encoding": {
3369 "version": "3.5.2",
3370 "resolved": "https://registry.npmjs.org/compact-encoding/-/compact-encoding-3.5.2.tgz",
3371 "integrity": "sha512-rgGcWdfxyuLwJHMUXI0OrYGpJe3VN4RZyovbxWVlxPYIsUZutOTfP3shmDyDi/iaybwcxMsTJDDuxQa4xRG0RQ==",
3372 "license": "Apache-2.0",
3373 "dependencies": {
3374 "b4a": "^1.3.0"
3375 }
3376 },
3377 "node_modules/compressible": {
3378 "version": "2.0.18",
3379 "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
3380 "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
3381 "devOptional": true,
3382 "license": "MIT",
3383 "dependencies": {
3384 "mime-db": ">= 1.43.0 < 2"
3385 },
3386 "engines": {
3387 "node": ">= 0.6"
3388 }
3389 },
3390 "node_modules/compression": {
3391 "version": "1.8.2",
3392 "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.2.tgz",
3393 "integrity": "sha512-o8vI5RE5A6EVVOd9o41jKp41aJom+QTEO/Bx8MYNjexMo/Bv2WOjUfZr+aL0WnYSgymUy6zeguqLTsIhV0gMvQ==",
3394 "devOptional": true,
3395 "license": "MIT",
3396 "dependencies": {
3397 "bytes": "3.1.2",
3398 "compressible": "~2.0.18",
3399 "debug": "2.6.9",
3400 "destroy": "1.2.0",
3401 "negotiator": "~0.6.4",
3402 "on-headers": "~1.1.0",
3403 "safe-buffer": "5.2.1",
3404 "vary": "~1.1.2"
3405 },
3406 "engines": {
3407 "node": ">= 0.8.0"
3408 },
3409 "funding": {
3410 "type": "opencollective",
3411 "url": "https://opencollective.com/express"
3412 }
3413 },
3414 "node_modules/compression/node_modules/debug": {
3415 "version": "2.6.9",
3416 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
3417 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
3418 "devOptional": true,
3419 "license": "MIT",
3420 "dependencies": {
3421 "ms": "2.0.0"
3422 }
3423 },
3424 "node_modules/compression/node_modules/ms": {
3425 "version": "2.0.0",
3426 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3427 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
3428 "devOptional": true,
3429 "license": "MIT"
3430 },
3431 "node_modules/connect": {
3432 "version": "3.7.0",
3433 "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
3434 "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
3435 "license": "MIT",
3436 "dependencies": {
3437 "debug": "2.6.9",
3438 "finalhandler": "1.1.2",
3439 "parseurl": "~1.3.3",
3440 "utils-merge": "1.0.1"
3441 },
3442 "engines": {
3443 "node": ">= 0.10.0"
3444 }
3445 },
3446 "node_modules/connect/node_modules/debug": {
3447 "version": "2.6.9",
3448 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
3449 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
3450 "license": "MIT",
3451 "dependencies": {
3452 "ms": "2.0.0"
3453 }
3454 },
3455 "node_modules/connect/node_modules/ms": {
3456 "version": "2.0.0",
3457 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3458 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
3459 "license": "MIT"
3460 },
3461 "node_modules/content-type": {
3462 "version": "2.1.0",
3463 "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz",
3464 "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==",
3465 "license": "MIT",
3466 "engines": {
3467 "node": ">=18"
3468 },
3469 "funding": {
3470 "type": "opencollective",
3471 "url": "https://opencollective.com/express"
3472 }
3473 },
3474 "node_modules/convert-source-map": {
3475 "version": "2.0.0",
3476 "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
3477 "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
3478 "license": "MIT"
3479 },
3480 "node_modules/core-js-compat": {
3481 "version": "3.50.0",
3482 "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz",
3483 "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==",
3484 "devOptional": true,
3485 "license": "MIT",
3486 "dependencies": {
3487 "browserslist": "^4.28.7"
3488 },
3489 "engines": {
3490 "node": ">=6.4.0"
3491 },
3492 "funding": {
3493 "type": "opencollective",
3494 "url": "https://opencollective.com/core-js"
3495 }
3496 },
3497 "node_modules/cosmiconfig": {
3498 "version": "9.0.2",
3499 "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz",
3500 "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==",
3501 "devOptional": true,
3502 "license": "MIT",
3503 "dependencies": {
3504 "env-paths": "^2.2.1",
3505 "import-fresh": "^3.3.0",
3506 "js-yaml": "^4.1.0",
3507 "parse-json": "^5.2.0"
3508 },
3509 "engines": {
3510 "node": ">=14"
3511 },
3512 "funding": {
3513 "url": "https://github.com/sponsors/d-fischer"
3514 },
3515 "peerDependencies": {
3516 "typescript": ">=4.9.5"
3517 },
3518 "peerDependenciesMeta": {
3519 "typescript": {
3520 "optional": true
3521 }
3522 }
3523 },
3524 "node_modules/cross-spawn": {
3525 "version": "7.0.6",
3526 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
3527 "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
3528 "license": "MIT",
3529 "dependencies": {
3530 "path-key": "^3.1.0",
3531 "shebang-command": "^2.0.0",
3532 "which": "^2.0.1"
3533 },
3534 "engines": {
3535 "node": ">= 8"
3536 }
3537 },
3538 "node_modules/cthuloid-web": {
3539 "resolved": "../webui",
3540 "link": true
3541 },
3542 "node_modules/dayjs": {
3543 "version": "1.11.23",
3544 "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz",
3545 "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==",
3546 "devOptional": true,
3547 "license": "MIT"
3548 },
3549 "node_modules/debug": {
3550 "version": "4.4.3",
3551 "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
3552 "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
3553 "license": "MIT",
3554 "dependencies": {
3555 "ms": "^2.1.3"
3556 },
3557 "engines": {
3558 "node": ">=6.0"
3559 },
3560 "peerDependenciesMeta": {
3561 "supports-color": {
3562 "optional": true
3563 }
3564 }
3565 },
3566 "node_modules/decamelize": {
3567 "version": "1.2.0",
3568 "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
3569 "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
3570 "devOptional": true,
3571 "license": "MIT",
3572 "engines": {
3573 "node": ">=0.10.0"
3574 }
3575 },
3576 "node_modules/deepmerge": {
3577 "version": "4.3.1",
3578 "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
3579 "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
3580 "devOptional": true,
3581 "license": "MIT",
3582 "engines": {
3583 "node": ">=0.10.0"
3584 }
3585 },
3586 "node_modules/defaults": {
3587 "version": "1.0.4",
3588 "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
3589 "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
3590 "devOptional": true,
3591 "license": "MIT",
3592 "dependencies": {
3593 "clone": "^1.0.2"
3594 },
3595 "funding": {
3596 "url": "https://github.com/sponsors/sindresorhus"
3597 }
3598 },
3599 "node_modules/depd": {
3600 "version": "2.0.0",
3601 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
3602 "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
3603 "license": "MIT",
3604 "engines": {
3605 "node": ">= 0.8"
3606 }
3607 },
3608 "node_modules/destroy": {
3609 "version": "1.2.0",
3610 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
3611 "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
3612 "license": "MIT",
3613 "engines": {
3614 "node": ">= 0.8",
3615 "npm": "1.2.8000 || >= 1.4.16"
3616 }
3617 },
3618 "node_modules/dunder-proto": {
3619 "version": "1.0.1",
3620 "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
3621 "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
3622 "devOptional": true,
3623 "license": "MIT",
3624 "dependencies": {
3625 "call-bind-apply-helpers": "^1.0.1",
3626 "es-errors": "^1.3.0",
3627 "gopd": "^1.2.0"
3628 },
3629 "engines": {
3630 "node": ">= 0.4"
3631 }
3632 },
3633 "node_modules/ee-first": {
3634 "version": "1.1.1",
3635 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
3636 "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
3637 "license": "MIT"
3638 },
3639 "node_modules/electron-to-chromium": {
3640 "version": "1.5.444",
3641 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.444.tgz",
3642 "integrity": "sha512-5ss/uJfoDYDHT0lfJzT6FbcskIzROIOPf0BbbFkGcvDzoJU7i//9GDrwwIHQVmIsrAGiF3ihpADBRIsrEFt1rQ==",
3643 "license": "ISC"
3644 },
3645 "node_modules/emoji-regex": {
3646 "version": "8.0.0",
3647 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3648 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3649 "license": "MIT"
3650 },
3651 "node_modules/encodeurl": {
3652 "version": "1.0.2",
3653 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
3654 "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
3655 "license": "MIT",
3656 "engines": {
3657 "node": ">= 0.8"
3658 }
3659 },
3660 "node_modules/env-paths": {
3661 "version": "2.2.1",
3662 "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
3663 "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
3664 "devOptional": true,
3665 "license": "MIT",
3666 "engines": {
3667 "node": ">=6"
3668 }
3669 },
3670 "node_modules/envinfo": {
3671 "version": "7.21.0",
3672 "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz",
3673 "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==",
3674 "devOptional": true,
3675 "license": "MIT",
3676 "bin": {
3677 "envinfo": "dist/cli.js"
3678 },
3679 "engines": {
3680 "node": ">=4"
3681 }
3682 },
3683 "node_modules/error-ex": {
3684 "version": "1.3.4",
3685 "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
3686 "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
3687 "devOptional": true,
3688 "license": "MIT",
3689 "dependencies": {
3690 "is-arrayish": "^0.2.1"
3691 }
3692 },
3693 "node_modules/error-stack-parser": {
3694 "version": "2.1.4",
3695 "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
3696 "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
3697 "license": "MIT",
3698 "dependencies": {
3699 "stackframe": "^1.3.4"
3700 }
3701 },
3702 "node_modules/errorhandler": {
3703 "version": "1.5.2",
3704 "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz",
3705 "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==",
3706 "devOptional": true,
3707 "license": "MIT",
3708 "dependencies": {
3709 "accepts": "~1.3.8",
3710 "escape-html": "~1.0.3"
3711 },
3712 "engines": {
3713 "node": ">= 0.8"
3714 },
3715 "funding": {
3716 "type": "opencollective",
3717 "url": "https://opencollective.com/express"
3718 }
3719 },
3720 "node_modules/es-define-property": {
3721 "version": "1.0.1",
3722 "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
3723 "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
3724 "devOptional": true,
3725 "license": "MIT",
3726 "engines": {
3727 "node": ">= 0.4"
3728 }
3729 },
3730 "node_modules/es-errors": {
3731 "version": "1.3.0",
3732 "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
3733 "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
3734 "devOptional": true,
3735 "license": "MIT",
3736 "engines": {
3737 "node": ">= 0.4"
3738 }
3739 },
3740 "node_modules/es-object-atoms": {
3741 "version": "1.1.2",
3742 "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
3743 "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
3744 "devOptional": true,
3745 "license": "MIT",
3746 "dependencies": {
3747 "es-errors": "^1.3.0"
3748 },
3749 "engines": {
3750 "node": ">= 0.4"
3751 }
3752 },
3753 "node_modules/escalade": {
3754 "version": "3.2.0",
3755 "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
3756 "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
3757 "license": "MIT",
3758 "engines": {
3759 "node": ">=6"
3760 }
3761 },
3762 "node_modules/escape-html": {
3763 "version": "1.0.3",
3764 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
3765 "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
3766 "license": "MIT"
3767 },
3768 "node_modules/escape-string-regexp": {
3769 "version": "4.0.0",
3770 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
3771 "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
3772 "license": "MIT",
3773 "engines": {
3774 "node": ">=10"
3775 },
3776 "funding": {
3777 "url": "https://github.com/sponsors/sindresorhus"
3778 }
3779 },
3780 "node_modules/etag": {
3781 "version": "1.8.1",
3782 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
3783 "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
3784 "license": "MIT",
3785 "engines": {
3786 "node": ">= 0.6"
3787 }
3788 },
3789 "node_modules/event-target-shim": {
3790 "version": "5.0.1",
3791 "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
3792 "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
3793 "license": "MIT",
3794 "engines": {
3795 "node": ">=6"
3796 }
3797 },
3798 "node_modules/events-universal": {
3799 "version": "1.0.1",
3800 "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
3801 "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
3802 "license": "Apache-2.0",
3803 "dependencies": {
3804 "bare-events": "^2.7.0"
3805 }
3806 },
3807 "node_modules/execa": {
3808 "version": "5.1.1",
3809 "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
3810 "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
3811 "devOptional": true,
3812 "license": "MIT",
3813 "dependencies": {
3814 "cross-spawn": "^7.0.3",
3815 "get-stream": "^6.0.0",
3816 "human-signals": "^2.1.0",
3817 "is-stream": "^2.0.0",
3818 "merge-stream": "^2.0.0",
3819 "npm-run-path": "^4.0.1",
3820 "onetime": "^5.1.2",
3821 "signal-exit": "^3.0.3",
3822 "strip-final-newline": "^2.0.0"
3823 },
3824 "engines": {
3825 "node": ">=10"
3826 },
3827 "funding": {
3828 "url": "https://github.com/sindresorhus/execa?sponsor=1"
3829 }
3830 },
3831 "node_modules/exponential-backoff": {
3832 "version": "3.1.3",
3833 "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
3834 "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
3835 "license": "Apache-2.0"
3836 },
3837 "node_modules/fast-fifo": {
3838 "version": "1.3.2",
3839 "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
3840 "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
3841 "license": "MIT"
3842 },
3843 "node_modules/fast-glob": {
3844 "version": "3.3.3",
3845 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
3846 "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
3847 "devOptional": true,
3848 "license": "MIT",
3849 "dependencies": {
3850 "@nodelib/fs.stat": "^2.0.2",
3851 "@nodelib/fs.walk": "^1.2.3",
3852 "glob-parent": "^5.1.2",
3853 "merge2": "^1.3.0",
3854 "micromatch": "^4.0.8"
3855 },
3856 "engines": {
3857 "node": ">=8.6.0"
3858 }
3859 },
3860 "node_modules/fast-xml-builder": {
3861 "version": "1.3.1",
3862 "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.1.tgz",
3863 "integrity": "sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug==",
3864 "devOptional": true,
3865 "funding": [
3866 {
3867 "type": "github",
3868 "url": "https://github.com/sponsors/NaturalIntelligence"
3869 }
3870 ],
3871 "license": "MIT",
3872 "dependencies": {
3873 "path-expression-matcher": "^1.6.2",
3874 "xml-naming": "^0.3.0"
3875 }
3876 },
3877 "node_modules/fast-xml-parser": {
3878 "version": "5.11.2",
3879 "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.11.2.tgz",
3880 "integrity": "sha512-R9iDuNrQYeQut46cn2r2wHKn4HYzVDvDm5J1wW+koZewykv0yuO2HChTYeZtrULyHIDM9cj9TUXloCsueCQUog==",
3881 "devOptional": true,
3882 "funding": [
3883 {
3884 "type": "github",
3885 "url": "https://github.com/sponsors/NaturalIntelligence"
3886 }
3887 ],
3888 "license": "MIT",
3889 "dependencies": {
3890 "@nodable/entities": "^3.0.1",
3891 "fast-xml-builder": "^1.2.0",
3892 "is-unsafe": "^2.0.0",
3893 "path-expression-matcher": "^1.6.2",
3894 "strnum": "^2.4.2",
3895 "xml-naming": "^0.3.0"
3896 },
3897 "bin": {
3898 "fxparser": "src/cli/cli.js"
3899 }
3900 },
3901 "node_modules/fastq": {
3902 "version": "1.20.3",
3903 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz",
3904 "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==",
3905 "devOptional": true,
3906 "license": "ISC",
3907 "dependencies": {
3908 "reusify": "^1.0.4"
3909 }
3910 },
3911 "node_modules/fb-dotslash": {
3912 "version": "0.5.8",
3913 "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz",
3914 "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==",
3915 "license": "(MIT OR Apache-2.0)",
3916 "bin": {
3917 "dotslash": "bin/dotslash"
3918 },
3919 "engines": {
3920 "node": ">=20"
3921 }
3922 },
3923 "node_modules/fb-watchman": {
3924 "version": "2.0.2",
3925 "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
3926 "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
3927 "license": "Apache-2.0",
3928 "dependencies": {
3929 "bser": "2.1.1"
3930 }
3931 },
3932 "node_modules/fdir": {
3933 "version": "6.5.0",
3934 "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
3935 "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
3936 "license": "MIT",
3937 "engines": {
3938 "node": ">=12.0.0"
3939 },
3940 "peerDependencies": {
3941 "picomatch": "^3 || ^4"
3942 },
3943 "peerDependenciesMeta": {
3944 "picomatch": {
3945 "optional": true
3946 }
3947 }
3948 },
3949 "node_modules/fill-range": {
3950 "version": "7.1.1",
3951 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
3952 "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
3953 "license": "MIT",
3954 "dependencies": {
3955 "to-regex-range": "^5.0.1"
3956 },
3957 "engines": {
3958 "node": ">=8"
3959 }
3960 },
3961 "node_modules/finalhandler": {
3962 "version": "1.1.2",
3963 "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
3964 "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
3965 "license": "MIT",
3966 "dependencies": {
3967 "debug": "2.6.9",
3968 "encodeurl": "~1.0.2",
3969 "escape-html": "~1.0.3",
3970 "on-finished": "~2.3.0",
3971 "parseurl": "~1.3.3",
3972 "statuses": "~1.5.0",
3973 "unpipe": "~1.0.0"
3974 },
3975 "engines": {
3976 "node": ">= 0.8"
3977 }
3978 },
3979 "node_modules/finalhandler/node_modules/debug": {
3980 "version": "2.6.9",
3981 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
3982 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
3983 "license": "MIT",
3984 "dependencies": {
3985 "ms": "2.0.0"
3986 }
3987 },
3988 "node_modules/finalhandler/node_modules/ms": {
3989 "version": "2.0.0",
3990 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3991 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
3992 "license": "MIT"
3993 },
3994 "node_modules/finalhandler/node_modules/on-finished": {
3995 "version": "2.3.0",
3996 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
3997 "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
3998 "license": "MIT",
3999 "dependencies": {
4000 "ee-first": "1.1.1"
4001 },
4002 "engines": {
4003 "node": ">= 0.8"
4004 }
4005 },
4006 "node_modules/find-up": {
4007 "version": "5.0.0",
4008 "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
4009 "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
4010 "devOptional": true,
4011 "license": "MIT",
4012 "dependencies": {
4013 "locate-path": "^6.0.0",
4014 "path-exists": "^4.0.0"
4015 },
4016 "engines": {
4017 "node": ">=10"
4018 },
4019 "funding": {
4020 "url": "https://github.com/sponsors/sindresorhus"
4021 }
4022 },
4023 "node_modules/flow-enums-runtime": {
4024 "version": "0.0.6",
4025 "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz",
4026 "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==",
4027 "license": "MIT"
4028 },
4029 "node_modules/fresh": {
4030 "version": "0.5.2",
4031 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
4032 "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
4033 "license": "MIT",
4034 "engines": {
4035 "node": ">= 0.6"
4036 }
4037 },
4038 "node_modules/fs-extra": {
4039 "version": "8.1.0",
4040 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
4041 "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
4042 "devOptional": true,
4043 "license": "MIT",
4044 "dependencies": {
4045 "graceful-fs": "^4.2.0",
4046 "jsonfile": "^4.0.0",
4047 "universalify": "^0.1.0"
4048 },
4049 "engines": {
4050 "node": ">=6 <7 || >=8"
4051 }
4052 },
4053 "node_modules/function-bind": {
4054 "version": "1.1.2",
4055 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
4056 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
4057 "devOptional": true,
4058 "license": "MIT",
4059 "funding": {
4060 "url": "https://github.com/sponsors/ljharb"
4061 }
4062 },
4063 "node_modules/gensync": {
4064 "version": "1.0.0-beta.2",
4065 "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
4066 "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
4067 "license": "MIT",
4068 "engines": {
4069 "node": ">=6.9.0"
4070 }
4071 },
4072 "node_modules/get-caller-file": {
4073 "version": "2.0.5",
4074 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
4075 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
4076 "license": "ISC",
4077 "engines": {
4078 "node": "6.* || 8.* || >= 10.*"
4079 }
4080 },
4081 "node_modules/get-intrinsic": {
4082 "version": "1.3.0",
4083 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
4084 "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
4085 "devOptional": true,
4086 "license": "MIT",
4087 "dependencies": {
4088 "call-bind-apply-helpers": "^1.0.2",
4089 "es-define-property": "^1.0.1",
4090 "es-errors": "^1.3.0",
4091 "es-object-atoms": "^1.1.1",
4092 "function-bind": "^1.1.2",
4093 "get-proto": "^1.0.1",
4094 "gopd": "^1.2.0",
4095 "has-symbols": "^1.1.0",
4096 "hasown": "^2.0.2",
4097 "math-intrinsics": "^1.1.0"
4098 },
4099 "engines": {
4100 "node": ">= 0.4"
4101 },
4102 "funding": {
4103 "url": "https://github.com/sponsors/ljharb"
4104 }
4105 },
4106 "node_modules/get-proto": {
4107 "version": "1.0.1",
4108 "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
4109 "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
4110 "devOptional": true,
4111 "license": "MIT",
4112 "dependencies": {
4113 "dunder-proto": "^1.0.1",
4114 "es-object-atoms": "^1.0.0"
4115 },
4116 "engines": {
4117 "node": ">= 0.4"
4118 }
4119 },
4120 "node_modules/get-stream": {
4121 "version": "6.0.1",
4122 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
4123 "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
4124 "devOptional": true,
4125 "license": "MIT",
4126 "engines": {
4127 "node": ">=10"
4128 },
4129 "funding": {
4130 "url": "https://github.com/sponsors/sindresorhus"
4131 }
4132 },
4133 "node_modules/glob-parent": {
4134 "version": "5.1.2",
4135 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4136 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4137 "devOptional": true,
4138 "license": "ISC",
4139 "dependencies": {
4140 "is-glob": "^4.0.1"
4141 },
4142 "engines": {
4143 "node": ">= 6"
4144 }
4145 },
4146 "node_modules/globbie": {
4147 "version": "1.0.6",
4148 "resolved": "https://registry.npmjs.org/globbie/-/globbie-1.0.6.tgz",
4149 "integrity": "sha512-GcxSSfWinZNZNW3+RsPBi2nW4jJcUJsOKiJvuXoeO3Y8pdd045NVPILCAoNCzYUsPw5XAUA/GXwRXF+ABcAeOQ==",
4150 "dev": true,
4151 "license": "Apache-2.0",
4152 "dependencies": {
4153 "bare-fs": "^4.7.4",
4154 "bare-path": "^3.1.1",
4155 "bare-process": "^4.5.1",
4156 "picomatch": "^4.0.5"
4157 }
4158 },
4159 "node_modules/gopd": {
4160 "version": "1.2.0",
4161 "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
4162 "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
4163 "devOptional": true,
4164 "license": "MIT",
4165 "engines": {
4166 "node": ">= 0.4"
4167 },
4168 "funding": {
4169 "url": "https://github.com/sponsors/ljharb"
4170 }
4171 },
4172 "node_modules/graceful-fs": {
4173 "version": "4.2.11",
4174 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
4175 "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
4176 "license": "ISC"
4177 },
4178 "node_modules/has-flag": {
4179 "version": "4.0.0",
4180 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
4181 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
4182 "license": "MIT",
4183 "engines": {
4184 "node": ">=8"
4185 }
4186 },
4187 "node_modules/has-symbols": {
4188 "version": "1.1.0",
4189 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
4190 "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
4191 "devOptional": true,
4192 "license": "MIT",
4193 "engines": {
4194 "node": ">= 0.4"
4195 },
4196 "funding": {
4197 "url": "https://github.com/sponsors/ljharb"
4198 }
4199 },
4200 "node_modules/hasown": {
4201 "version": "2.0.4",
4202 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
4203 "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
4204 "devOptional": true,
4205 "license": "MIT",
4206 "dependencies": {
4207 "function-bind": "^1.1.2"
4208 },
4209 "engines": {
4210 "node": ">= 0.4"
4211 }
4212 },
4213 "node_modules/hermes-compiler": {
4214 "version": "250829098.0.17",
4215 "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.17.tgz",
4216 "integrity": "sha512-qG1PXzTEtriF6oQLZF3vyHhSMxOdW5h2TqqLri0rdpstPustd2fSvRZQMVAPdlhgFwBfYnj3OUZtiO6LjYsEFw==",
4217 "license": "MIT"
4218 },
4219 "node_modules/hermes-estree": {
4220 "version": "0.36.0",
4221 "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.36.0.tgz",
4222 "integrity": "sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==",
4223 "license": "MIT"
4224 },
4225 "node_modules/hermes-parser": {
4226 "version": "0.36.0",
4227 "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.36.0.tgz",
4228 "integrity": "sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==",
4229 "license": "MIT",
4230 "dependencies": {
4231 "hermes-estree": "0.36.0"
4232 }
4233 },
4234 "node_modules/http-errors": {
4235 "version": "2.0.1",
4236 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
4237 "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
4238 "license": "MIT",
4239 "dependencies": {
4240 "depd": "~2.0.0",
4241 "inherits": "~2.0.4",
4242 "setprototypeof": "~1.2.0",
4243 "statuses": "~2.0.2",
4244 "toidentifier": "~1.0.1"
4245 },
4246 "engines": {
4247 "node": ">= 0.8"
4248 },
4249 "funding": {
4250 "type": "opencollective",
4251 "url": "https://opencollective.com/express"
4252 }
4253 },
4254 "node_modules/http-errors/node_modules/statuses": {
4255 "version": "2.0.2",
4256 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
4257 "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
4258 "license": "MIT",
4259 "engines": {
4260 "node": ">= 0.8"
4261 }
4262 },
4263 "node_modules/https-proxy-agent": {
4264 "version": "7.0.6",
4265 "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
4266 "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
4267 "license": "MIT",
4268 "dependencies": {
4269 "agent-base": "^7.1.2",
4270 "debug": "4"
4271 },
4272 "engines": {
4273 "node": ">= 14"
4274 }
4275 },
4276 "node_modules/human-signals": {
4277 "version": "2.1.0",
4278 "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
4279 "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
4280 "devOptional": true,
4281 "license": "Apache-2.0",
4282 "engines": {
4283 "node": ">=10.17.0"
4284 }
4285 },
4286 "node_modules/iconv-lite": {
4287 "version": "0.7.3",
4288 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz",
4289 "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==",
4290 "devOptional": true,
4291 "license": "MIT",
4292 "dependencies": {
4293 "safer-buffer": ">= 2.1.2 < 3.0.0"
4294 },
4295 "engines": {
4296 "node": ">=0.10.0"
4297 },
4298 "funding": {
4299 "type": "opencollective",
4300 "url": "https://opencollective.com/express"
4301 }
4302 },
4303 "node_modules/ieee754": {
4304 "version": "1.2.1",
4305 "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
4306 "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
4307 "devOptional": true,
4308 "funding": [
4309 {
4310 "type": "github",
4311 "url": "https://github.com/sponsors/feross"
4312 },
4313 {
4314 "type": "patreon",
4315 "url": "https://www.patreon.com/feross"
4316 },
4317 {
4318 "type": "consulting",
4319 "url": "https://feross.org/support"
4320 }
4321 ],
4322 "license": "BSD-3-Clause"
4323 },
4324 "node_modules/import-fresh": {
4325 "version": "3.3.1",
4326 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
4327 "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
4328 "devOptional": true,
4329 "license": "MIT",
4330 "dependencies": {
4331 "parent-module": "^1.0.0",
4332 "resolve-from": "^4.0.0"
4333 },
4334 "engines": {
4335 "node": ">=6"
4336 },
4337 "funding": {
4338 "url": "https://github.com/sponsors/sindresorhus"
4339 }
4340 },
4341 "node_modules/inherits": {
4342 "version": "2.0.4",
4343 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
4344 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
4345 "license": "ISC"
4346 },
4347 "node_modules/invariant": {
4348 "version": "2.2.4",
4349 "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
4350 "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
4351 "license": "MIT",
4352 "dependencies": {
4353 "loose-envify": "^1.0.0"
4354 }
4355 },
4356 "node_modules/is-arrayish": {
4357 "version": "0.2.1",
4358 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
4359 "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
4360 "devOptional": true,
4361 "license": "MIT"
4362 },
4363 "node_modules/is-core-module": {
4364 "version": "2.17.0",
4365 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.17.0.tgz",
4366 "integrity": "sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==",
4367 "devOptional": true,
4368 "license": "MIT",
4369 "dependencies": {
4370 "hasown": "^2.0.4"
4371 },
4372 "engines": {
4373 "node": ">= 0.4"
4374 },
4375 "funding": {
4376 "url": "https://github.com/sponsors/ljharb"
4377 }
4378 },
4379 "node_modules/is-docker": {
4380 "version": "2.2.1",
4381 "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
4382 "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
4383 "license": "MIT",
4384 "bin": {
4385 "is-docker": "cli.js"
4386 },
4387 "engines": {
4388 "node": ">=8"
4389 },
4390 "funding": {
4391 "url": "https://github.com/sponsors/sindresorhus"
4392 }
4393 },
4394 "node_modules/is-extglob": {
4395 "version": "2.1.1",
4396 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
4397 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
4398 "devOptional": true,
4399 "license": "MIT",
4400 "engines": {
4401 "node": ">=0.10.0"
4402 }
4403 },
4404 "node_modules/is-fullwidth-code-point": {
4405 "version": "2.0.0",
4406 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
4407 "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
4408 "devOptional": true,
4409 "license": "MIT",
4410 "engines": {
4411 "node": ">=4"
4412 }
4413 },
4414 "node_modules/is-glob": {
4415 "version": "4.0.3",
4416 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
4417 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
4418 "devOptional": true,
4419 "license": "MIT",
4420 "dependencies": {
4421 "is-extglob": "^2.1.1"
4422 },
4423 "engines": {
4424 "node": ">=0.10.0"
4425 }
4426 },
4427 "node_modules/is-interactive": {
4428 "version": "1.0.0",
4429 "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
4430 "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
4431 "devOptional": true,
4432 "license": "MIT",
4433 "engines": {
4434 "node": ">=8"
4435 }
4436 },
4437 "node_modules/is-number": {
4438 "version": "7.0.0",
4439 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
4440 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
4441 "license": "MIT",
4442 "engines": {
4443 "node": ">=0.12.0"
4444 }
4445 },
4446 "node_modules/is-stream": {
4447 "version": "2.0.1",
4448 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
4449 "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
4450 "devOptional": true,
4451 "license": "MIT",
4452 "engines": {
4453 "node": ">=8"
4454 },
4455 "funding": {
4456 "url": "https://github.com/sponsors/sindresorhus"
4457 }
4458 },
4459 "node_modules/is-unicode-supported": {
4460 "version": "0.1.0",
4461 "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
4462 "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
4463 "devOptional": true,
4464 "license": "MIT",
4465 "engines": {
4466 "node": ">=10"
4467 },
4468 "funding": {
4469 "url": "https://github.com/sponsors/sindresorhus"
4470 }
4471 },
4472 "node_modules/is-unsafe": {
4473 "version": "2.0.2",
4474 "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.2.tgz",
4475 "integrity": "sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==",
4476 "devOptional": true,
4477 "funding": [
4478 {
4479 "type": "github",
4480 "url": "https://github.com/sponsors/NaturalIntelligence"
4481 }
4482 ],
4483 "license": "MIT"
4484 },
4485 "node_modules/is-wsl": {
4486 "version": "1.1.0",
4487 "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
4488 "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
4489 "devOptional": true,
4490 "license": "MIT",
4491 "engines": {
4492 "node": ">=4"
4493 }
4494 },
4495 "node_modules/isexe": {
4496 "version": "2.0.0",
4497 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
4498 "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
4499 "license": "ISC"
4500 },
4501 "node_modules/jest-get-type": {
4502 "version": "29.6.3",
4503 "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
4504 "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
4505 "license": "MIT",
4506 "engines": {
4507 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
4508 }
4509 },
4510 "node_modules/jest-util": {
4511 "version": "29.7.0",
4512 "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
4513 "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
4514 "license": "MIT",
4515 "dependencies": {
4516 "@jest/types": "^29.6.3",
4517 "@types/node": "*",
4518 "chalk": "^4.0.0",
4519 "ci-info": "^3.2.0",
4520 "graceful-fs": "^4.2.9",
4521 "picomatch": "^2.2.3"
4522 },
4523 "engines": {
4524 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
4525 }
4526 },
4527 "node_modules/jest-util/node_modules/ci-info": {
4528 "version": "3.9.0",
4529 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
4530 "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
4531 "funding": [
4532 {
4533 "type": "github",
4534 "url": "https://github.com/sponsors/sibiraj-s"
4535 }
4536 ],
4537 "license": "MIT",
4538 "engines": {
4539 "node": ">=8"
4540 }
4541 },
4542 "node_modules/jest-util/node_modules/picomatch": {
4543 "version": "2.3.2",
4544 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
4545 "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
4546 "license": "MIT",
4547 "engines": {
4548 "node": ">=8.6"
4549 },
4550 "funding": {
4551 "url": "https://github.com/sponsors/jonschlinkert"
4552 }
4553 },
4554 "node_modules/jest-validate": {
4555 "version": "29.7.0",
4556 "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
4557 "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
4558 "license": "MIT",
4559 "dependencies": {
4560 "@jest/types": "^29.6.3",
4561 "camelcase": "^6.2.0",
4562 "chalk": "^4.0.0",
4563 "jest-get-type": "^29.6.3",
4564 "leven": "^3.1.0",
4565 "pretty-format": "^29.7.0"
4566 },
4567 "engines": {
4568 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
4569 }
4570 },
4571 "node_modules/jest-worker": {
4572 "version": "29.7.0",
4573 "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
4574 "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
4575 "license": "MIT",
4576 "dependencies": {
4577 "@types/node": "*",
4578 "jest-util": "^29.7.0",
4579 "merge-stream": "^2.0.0",
4580 "supports-color": "^8.0.0"
4581 },
4582 "engines": {
4583 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
4584 }
4585 },
4586 "node_modules/jest-worker/node_modules/supports-color": {
4587 "version": "8.1.1",
4588 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
4589 "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
4590 "license": "MIT",
4591 "dependencies": {
4592 "has-flag": "^4.0.0"
4593 },
4594 "engines": {
4595 "node": ">=10"
4596 },
4597 "funding": {
4598 "url": "https://github.com/chalk/supports-color?sponsor=1"
4599 }
4600 },
4601 "node_modules/joi": {
4602 "version": "17.13.8",
4603 "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.8.tgz",
4604 "integrity": "sha512-iPKOGmiRw1jxf/JOPwxmCcUQAOdF359mdzYiP2DJ+TMX0YK2zjK3D+zYOaGjpumWxOFF/l2xVWjRVK5bGSLdEw==",
4605 "devOptional": true,
4606 "license": "BSD-3-Clause",
4607 "dependencies": {
4608 "@hapi/hoek": "^9.3.0",
4609 "@hapi/topo": "^5.1.0",
4610 "@sideway/address": "^4.1.5",
4611 "@sideway/formula": "^3.0.1",
4612 "@sideway/pinpoint": "^2.0.0"
4613 }
4614 },
4615 "node_modules/js-tokens": {
4616 "version": "4.0.0",
4617 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
4618 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
4619 "license": "MIT"
4620 },
4621 "node_modules/js-yaml": {
4622 "version": "4.3.2",
4623 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz",
4624 "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==",
4625 "devOptional": true,
4626 "funding": [
4627 {
4628 "type": "github",
4629 "url": "https://github.com/sponsors/puzrin"
4630 },
4631 {
4632 "type": "github",
4633 "url": "https://github.com/sponsors/nodeca"
4634 }
4635 ],
4636 "license": "MIT",
4637 "dependencies": {
4638 "argparse": "^2.0.1"
4639 },
4640 "bin": {
4641 "js-yaml": "bin/js-yaml.js"
4642 }
4643 },
4644 "node_modules/jsc-safe-url": {
4645 "version": "0.2.4",
4646 "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz",
4647 "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==",
4648 "license": "0BSD"
4649 },
4650 "node_modules/jsesc": {
4651 "version": "3.1.0",
4652 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
4653 "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
4654 "license": "MIT",
4655 "bin": {
4656 "jsesc": "bin/jsesc"
4657 },
4658 "engines": {
4659 "node": ">=6"
4660 }
4661 },
4662 "node_modules/json-parse-even-better-errors": {
4663 "version": "2.3.1",
4664 "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
4665 "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
4666 "devOptional": true,
4667 "license": "MIT"
4668 },
4669 "node_modules/json5": {
4670 "version": "2.2.3",
4671 "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
4672 "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
4673 "license": "MIT",
4674 "bin": {
4675 "json5": "lib/cli.js"
4676 },
4677 "engines": {
4678 "node": ">=6"
4679 }
4680 },
4681 "node_modules/jsonfile": {
4682 "version": "4.0.0",
4683 "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
4684 "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
4685 "devOptional": true,
4686 "license": "MIT",
4687 "optionalDependencies": {
4688 "graceful-fs": "^4.1.6"
4689 }
4690 },
4691 "node_modules/kleur": {
4692 "version": "3.0.3",
4693 "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
4694 "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
4695 "devOptional": true,
4696 "license": "MIT",
4697 "engines": {
4698 "node": ">=6"
4699 }
4700 },
4701 "node_modules/launch-editor": {
4702 "version": "2.14.1",
4703 "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.1.tgz",
4704 "integrity": "sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==",
4705 "devOptional": true,
4706 "license": "MIT",
4707 "dependencies": {
4708 "picocolors": "^1.1.1",
4709 "shell-quote": "^1.8.4"
4710 }
4711 },
4712 "node_modules/leven": {
4713 "version": "3.1.0",
4714 "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
4715 "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
4716 "license": "MIT",
4717 "engines": {
4718 "node": ">=6"
4719 }
4720 },
4721 "node_modules/lighthouse-logger": {
4722 "version": "1.4.2",
4723 "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
4724 "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==",
4725 "license": "Apache-2.0",
4726 "dependencies": {
4727 "debug": "^2.6.9",
4728 "marky": "^1.2.2"
4729 }
4730 },
4731 "node_modules/lighthouse-logger/node_modules/debug": {
4732 "version": "2.6.9",
4733 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4734 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4735 "license": "MIT",
4736 "dependencies": {
4737 "ms": "2.0.0"
4738 }
4739 },
4740 "node_modules/lighthouse-logger/node_modules/ms": {
4741 "version": "2.0.0",
4742 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4743 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
4744 "license": "MIT"
4745 },
4746 "node_modules/lines-and-columns": {
4747 "version": "1.2.4",
4748 "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
4749 "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
4750 "devOptional": true,
4751 "license": "MIT"
4752 },
4753 "node_modules/locate-path": {
4754 "version": "6.0.0",
4755 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
4756 "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
4757 "devOptional": true,
4758 "license": "MIT",
4759 "dependencies": {
4760 "p-locate": "^5.0.0"
4761 },
4762 "engines": {
4763 "node": ">=10"
4764 },
4765 "funding": {
4766 "url": "https://github.com/sponsors/sindresorhus"
4767 }
4768 },
4769 "node_modules/lodash.debounce": {
4770 "version": "4.0.8",
4771 "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
4772 "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
4773 "devOptional": true,
4774 "license": "MIT"
4775 },
4776 "node_modules/lodash.throttle": {
4777 "version": "4.1.1",
4778 "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
4779 "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
4780 "license": "MIT"
4781 },
4782 "node_modules/log-symbols": {
4783 "version": "4.1.0",
4784 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
4785 "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
4786 "devOptional": true,
4787 "license": "MIT",
4788 "dependencies": {
4789 "chalk": "^4.1.0",
4790 "is-unicode-supported": "^0.1.0"
4791 },
4792 "engines": {
4793 "node": ">=10"
4794 },
4795 "funding": {
4796 "url": "https://github.com/sponsors/sindresorhus"
4797 }
4798 },
4799 "node_modules/logkitty": {
4800 "version": "0.7.1",
4801 "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
4802 "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
4803 "devOptional": true,
4804 "license": "MIT",
4805 "dependencies": {
4806 "ansi-fragments": "^0.2.1",
4807 "dayjs": "^1.8.15",
4808 "yargs": "^15.1.0"
4809 },
4810 "bin": {
4811 "logkitty": "bin/logkitty.js"
4812 }
4813 },
4814 "node_modules/logkitty/node_modules/camelcase": {
4815 "version": "5.3.1",
4816 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
4817 "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
4818 "devOptional": true,
4819 "license": "MIT",
4820 "engines": {
4821 "node": ">=6"
4822 }
4823 },
4824 "node_modules/logkitty/node_modules/cliui": {
4825 "version": "6.0.0",
4826 "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
4827 "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
4828 "devOptional": true,
4829 "license": "ISC",
4830 "dependencies": {
4831 "string-width": "^4.2.0",
4832 "strip-ansi": "^6.0.0",
4833 "wrap-ansi": "^6.2.0"
4834 }
4835 },
4836 "node_modules/logkitty/node_modules/find-up": {
4837 "version": "4.1.0",
4838 "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
4839 "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
4840 "devOptional": true,
4841 "license": "MIT",
4842 "dependencies": {
4843 "locate-path": "^5.0.0",
4844 "path-exists": "^4.0.0"
4845 },
4846 "engines": {
4847 "node": ">=8"
4848 }
4849 },
4850 "node_modules/logkitty/node_modules/locate-path": {
4851 "version": "5.0.0",
4852 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
4853 "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
4854 "devOptional": true,
4855 "license": "MIT",
4856 "dependencies": {
4857 "p-locate": "^4.1.0"
4858 },
4859 "engines": {
4860 "node": ">=8"
4861 }
4862 },
4863 "node_modules/logkitty/node_modules/p-limit": {
4864 "version": "2.3.0",
4865 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
4866 "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
4867 "devOptional": true,
4868 "license": "MIT",
4869 "dependencies": {
4870 "p-try": "^2.0.0"
4871 },
4872 "engines": {
4873 "node": ">=6"
4874 },
4875 "funding": {
4876 "url": "https://github.com/sponsors/sindresorhus"
4877 }
4878 },
4879 "node_modules/logkitty/node_modules/p-locate": {
4880 "version": "4.1.0",
4881 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
4882 "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
4883 "devOptional": true,
4884 "license": "MIT",
4885 "dependencies": {
4886 "p-limit": "^2.2.0"
4887 },
4888 "engines": {
4889 "node": ">=8"
4890 }
4891 },
4892 "node_modules/logkitty/node_modules/strip-ansi": {
4893 "version": "6.0.1",
4894 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4895 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
4896 "devOptional": true,
4897 "license": "MIT",
4898 "dependencies": {
4899 "ansi-regex": "^5.0.1"
4900 },
4901 "engines": {
4902 "node": ">=8"
4903 }
4904 },
4905 "node_modules/logkitty/node_modules/wrap-ansi": {
4906 "version": "6.2.0",
4907 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
4908 "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
4909 "devOptional": true,
4910 "license": "MIT",
4911 "dependencies": {
4912 "ansi-styles": "^4.0.0",
4913 "string-width": "^4.1.0",
4914 "strip-ansi": "^6.0.0"
4915 },
4916 "engines": {
4917 "node": ">=8"
4918 }
4919 },
4920 "node_modules/logkitty/node_modules/y18n": {
4921 "version": "4.0.3",
4922 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
4923 "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
4924 "devOptional": true,
4925 "license": "ISC"
4926 },
4927 "node_modules/logkitty/node_modules/yargs": {
4928 "version": "15.4.1",
4929 "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
4930 "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
4931 "devOptional": true,
4932 "license": "MIT",
4933 "dependencies": {
4934 "cliui": "^6.0.0",
4935 "decamelize": "^1.2.0",
4936 "find-up": "^4.1.0",
4937 "get-caller-file": "^2.0.1",
4938 "require-directory": "^2.1.1",
4939 "require-main-filename": "^2.0.0",
4940 "set-blocking": "^2.0.0",
4941 "string-width": "^4.2.0",
4942 "which-module": "^2.0.0",
4943 "y18n": "^4.0.0",
4944 "yargs-parser": "^18.1.2"
4945 },
4946 "engines": {
4947 "node": ">=8"
4948 }
4949 },
4950 "node_modules/logkitty/node_modules/yargs-parser": {
4951 "version": "18.1.3",
4952 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
4953 "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
4954 "devOptional": true,
4955 "license": "ISC",
4956 "dependencies": {
4957 "camelcase": "^5.0.0",
4958 "decamelize": "^1.2.0"
4959 },
4960 "engines": {
4961 "node": ">=6"
4962 }
4963 },
4964 "node_modules/loose-envify": {
4965 "version": "1.4.0",
4966 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
4967 "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
4968 "license": "MIT",
4969 "dependencies": {
4970 "js-tokens": "^3.0.0 || ^4.0.0"
4971 },
4972 "bin": {
4973 "loose-envify": "cli.js"
4974 }
4975 },
4976 "node_modules/lru-cache": {
4977 "version": "5.1.1",
4978 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
4979 "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
4980 "license": "ISC",
4981 "dependencies": {
4982 "yallist": "^3.0.2"
4983 }
4984 },
4985 "node_modules/makeerror": {
4986 "version": "1.0.12",
4987 "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
4988 "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
4989 "license": "BSD-3-Clause",
4990 "dependencies": {
4991 "tmpl": "1.0.5"
4992 }
4993 },
4994 "node_modules/marky": {
4995 "version": "1.3.0",
4996 "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz",
4997 "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==",
4998 "license": "Apache-2.0"
4999 },
5000 "node_modules/math-intrinsics": {
5001 "version": "1.1.0",
5002 "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
5003 "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
5004 "devOptional": true,
5005 "license": "MIT",
5006 "engines": {
5007 "node": ">= 0.4"
5008 }
5009 },
5010 "node_modules/media-typer": {
5011 "version": "1.1.1",
5012 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz",
5013 "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==",
5014 "devOptional": true,
5015 "license": "MIT",
5016 "engines": {
5017 "node": ">= 0.8"
5018 },
5019 "funding": {
5020 "type": "opencollective",
5021 "url": "https://opencollective.com/express"
5022 }
5023 },
5024 "node_modules/memoize-one": {
5025 "version": "5.2.1",
5026 "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
5027 "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==",
5028 "license": "MIT"
5029 },
5030 "node_modules/merge-stream": {
5031 "version": "2.0.0",
5032 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
5033 "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
5034 "license": "MIT"
5035 },
5036 "node_modules/merge2": {
5037 "version": "1.4.1",
5038 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
5039 "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
5040 "devOptional": true,
5041 "license": "MIT",
5042 "engines": {
5043 "node": ">= 8"
5044 }
5045 },
5046 "node_modules/metro": {
5047 "version": "0.84.6",
5048 "resolved": "https://registry.npmjs.org/metro/-/metro-0.84.6.tgz",
5049 "integrity": "sha512-ty/tx/imE5Ph2gvPU788Ckim6RAC2tyZxLz2hWRgC9U7/fGKV7qY/slADy0qHPEw9cpUgc4BfmV3oUsYwm7oeg==",
5050 "license": "MIT",
5051 "dependencies": {
5052 "@babel/code-frame": "^7.29.0",
5053 "@babel/core": "^7.25.2",
5054 "@babel/generator": "^7.29.1",
5055 "@babel/parser": "^7.29.0",
5056 "@babel/template": "^7.28.6",
5057 "@babel/traverse": "^7.29.0",
5058 "@babel/types": "^7.29.0",
5059 "accepts": "^2.0.0",
5060 "ci-info": "^2.0.0",
5061 "connect": "^3.6.5",
5062 "debug": "^4.4.0",
5063 "error-stack-parser": "^2.0.6",
5064 "flow-enums-runtime": "^0.0.6",
5065 "graceful-fs": "^4.2.4",
5066 "hermes-parser": "0.35.0",
5067 "invariant": "^2.2.4",
5068 "jest-worker": "^29.7.0",
5069 "jsc-safe-url": "^0.2.2",
5070 "lodash.throttle": "^4.1.1",
5071 "metro-babel-transformer": "0.84.6",
5072 "metro-cache": "0.84.6",
5073 "metro-cache-key": "0.84.6",
5074 "metro-config": "0.84.6",
5075 "metro-core": "0.84.6",
5076 "metro-file-map": "0.84.6",
5077 "metro-resolver": "0.84.6",
5078 "metro-runtime": "0.84.6",
5079 "metro-source-map": "0.84.6",
5080 "metro-symbolicate": "0.84.6",
5081 "metro-transform-plugins": "0.84.6",
5082 "metro-transform-worker": "0.84.6",
5083 "mime-types": "^3.0.1",
5084 "nullthrows": "^1.1.1",
5085 "serialize-error": "^2.1.0",
5086 "source-map": "^0.5.6",
5087 "throat": "^5.0.0",
5088 "ws": "^7.5.10",
5089 "yargs": "^17.6.2"
5090 },
5091 "bin": {
5092 "metro": "src/cli.js"
5093 },
5094 "engines": {
5095 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5096 }
5097 },
5098 "node_modules/metro-babel-transformer": {
5099 "version": "0.84.6",
5100 "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.84.6.tgz",
5101 "integrity": "sha512-B1ozl6KxFHbQjXZ2U8WiTPWXylqiD3V4EXyV5r0fqETOrqIrJlBvbVTD82UxIN+B3Vpe4l8G1tb15ocd2RyOQA==",
5102 "license": "MIT",
5103 "dependencies": {
5104 "@babel/core": "^7.25.2",
5105 "flow-enums-runtime": "^0.0.6",
5106 "hermes-parser": "0.35.0",
5107 "metro-cache-key": "0.84.6",
5108 "nullthrows": "^1.1.1"
5109 },
5110 "engines": {
5111 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5112 }
5113 },
5114 "node_modules/metro-babel-transformer/node_modules/hermes-estree": {
5115 "version": "0.35.0",
5116 "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz",
5117 "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==",
5118 "license": "MIT"
5119 },
5120 "node_modules/metro-babel-transformer/node_modules/hermes-parser": {
5121 "version": "0.35.0",
5122 "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz",
5123 "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==",
5124 "license": "MIT",
5125 "dependencies": {
5126 "hermes-estree": "0.35.0"
5127 }
5128 },
5129 "node_modules/metro-cache": {
5130 "version": "0.84.6",
5131 "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.84.6.tgz",
5132 "integrity": "sha512-KBJVpb02oKNO+jlWQ1Aax7cd11YP0MClDaMgx6C4MhyZ9g95J/dC1Bo6sCzXaU9L9h/w5cQfT5zDkGW5sOj99A==",
5133 "license": "MIT",
5134 "dependencies": {
5135 "exponential-backoff": "^3.1.1",
5136 "flow-enums-runtime": "^0.0.6",
5137 "https-proxy-agent": "^7.0.5",
5138 "metro-core": "0.84.6"
5139 },
5140 "engines": {
5141 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5142 }
5143 },
5144 "node_modules/metro-cache-key": {
5145 "version": "0.84.6",
5146 "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.84.6.tgz",
5147 "integrity": "sha512-6tyXt1BZ/3U183XV48oif7Nm65TE+pTo0Vs31u4FxMgqiYQR/SiSr3RoXn3pmy4pd280ZmLmct0x3jZpu0pV4A==",
5148 "license": "MIT",
5149 "dependencies": {
5150 "flow-enums-runtime": "^0.0.6"
5151 },
5152 "engines": {
5153 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5154 }
5155 },
5156 "node_modules/metro-config": {
5157 "version": "0.84.6",
5158 "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.84.6.tgz",
5159 "integrity": "sha512-cD2mLEofcuV26kxSV4hfV1Pbuh6igdUhYQriO8ZVeJ7HyZfq4/wqHV0gSR7fEO8NUp9odr60/Kzm5YakmghWwQ==",
5160 "license": "MIT",
5161 "dependencies": {
5162 "connect": "^3.6.5",
5163 "flow-enums-runtime": "^0.0.6",
5164 "jest-validate": "^29.7.0",
5165 "metro": "0.84.6",
5166 "metro-cache": "0.84.6",
5167 "metro-core": "0.84.6",
5168 "metro-runtime": "0.84.6",
5169 "yaml": "^2.6.1"
5170 },
5171 "engines": {
5172 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5173 }
5174 },
5175 "node_modules/metro-core": {
5176 "version": "0.84.6",
5177 "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.84.6.tgz",
5178 "integrity": "sha512-ZqYskM8+f3PFMosBDJd8DLqRvT1ltRGhWL/ZfTpBvf4SoadO30VVrdhAoHFVGz3G1CJpWa3fgZH7nnnX/ybllA==",
5179 "license": "MIT",
5180 "dependencies": {
5181 "flow-enums-runtime": "^0.0.6",
5182 "lodash.throttle": "^4.1.1",
5183 "metro-resolver": "0.84.6"
5184 },
5185 "engines": {
5186 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5187 }
5188 },
5189 "node_modules/metro-file-map": {
5190 "version": "0.84.6",
5191 "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.84.6.tgz",
5192 "integrity": "sha512-ov9VywWBsHPt54Zc7/DxWvqjTwxuZvhfeyHg8ZAMGKtf2PcH1wS3EnoBH7In53Rspk/eXVWAO5+avxunPn081w==",
5193 "license": "MIT",
5194 "dependencies": {
5195 "debug": "^4.4.0",
5196 "fb-watchman": "^2.0.0",
5197 "flow-enums-runtime": "^0.0.6",
5198 "graceful-fs": "^4.2.4",
5199 "invariant": "^2.2.4",
5200 "jest-worker": "^29.7.0",
5201 "micromatch": "^4.0.4",
5202 "nullthrows": "^1.1.1",
5203 "walker": "^1.0.7"
5204 },
5205 "engines": {
5206 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5207 }
5208 },
5209 "node_modules/metro-minify-terser": {
5210 "version": "0.84.6",
5211 "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.84.6.tgz",
5212 "integrity": "sha512-SqhB/Kxrw0XfyW0k8mEscqX/CQopm6Fp3EpdSIPzvKfGgQp9bTMahg9PAdVsXUmIWwErbmFw1VqB+VFBOKksUw==",
5213 "license": "MIT",
5214 "dependencies": {
5215 "flow-enums-runtime": "^0.0.6",
5216 "terser": "^5.15.0"
5217 },
5218 "engines": {
5219 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5220 }
5221 },
5222 "node_modules/metro-resolver": {
5223 "version": "0.84.6",
5224 "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.84.6.tgz",
5225 "integrity": "sha512-PplpGc/OCLxgKeLNsLQO/VHsYDIvkcGGr3zNT7UanHCGRqhxKv245o+naV8cRI4/pcLqyc+9j+J0AJbT3Kp5Sg==",
5226 "license": "MIT",
5227 "dependencies": {
5228 "flow-enums-runtime": "^0.0.6"
5229 },
5230 "engines": {
5231 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5232 }
5233 },
5234 "node_modules/metro-runtime": {
5235 "version": "0.84.6",
5236 "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.84.6.tgz",
5237 "integrity": "sha512-47EYO/DOai0PA3GoAyDpyXOgHNMwbl/Z9dQlQineDLHkpD42xOwMrIx1crT0+n6F+aGoEyxZmeFwfMzaIqVqKQ==",
5238 "license": "MIT",
5239 "dependencies": {
5240 "@babel/runtime": "^7.25.0",
5241 "flow-enums-runtime": "^0.0.6"
5242 },
5243 "engines": {
5244 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5245 }
5246 },
5247 "node_modules/metro-source-map": {
5248 "version": "0.84.6",
5249 "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.84.6.tgz",
5250 "integrity": "sha512-4p/EplRbgNxhdqA6kAj1AmIq9qqYXYSAjgxuZ73rYA+p037xDDrxK8CyDKNfbn1k6aMuVt8LV0fpt7NHUTKiZw==",
5251 "license": "MIT",
5252 "dependencies": {
5253 "@babel/traverse": "^7.29.0",
5254 "@babel/types": "^7.29.0",
5255 "flow-enums-runtime": "^0.0.6",
5256 "invariant": "^2.2.4",
5257 "metro-symbolicate": "0.84.6",
5258 "nullthrows": "^1.1.1",
5259 "ob1": "0.84.6",
5260 "source-map": "^0.5.6",
5261 "vlq": "^1.0.0"
5262 },
5263 "engines": {
5264 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5265 }
5266 },
5267 "node_modules/metro-symbolicate": {
5268 "version": "0.84.6",
5269 "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.84.6.tgz",
5270 "integrity": "sha512-wJFyyF5ysbVyoYVWGL6GwVMiNnGllwDU2gF096376fl0fc8IFUlADSyNlswj31K9og2sOilXe/FdyWFPczPUYg==",
5271 "license": "MIT",
5272 "dependencies": {
5273 "flow-enums-runtime": "^0.0.6",
5274 "invariant": "^2.2.4",
5275 "metro-source-map": "0.84.6",
5276 "nullthrows": "^1.1.1",
5277 "source-map": "^0.5.6",
5278 "vlq": "^1.0.0"
5279 },
5280 "bin": {
5281 "metro-symbolicate": "src/index.js"
5282 },
5283 "engines": {
5284 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5285 }
5286 },
5287 "node_modules/metro-transform-plugins": {
5288 "version": "0.84.6",
5289 "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.84.6.tgz",
5290 "integrity": "sha512-pROPMFaj25Y9+3LlLqpBRz/7B/2YPnfEQz/z3juYxkh3FGQ+3c/Qh4E+khPSTdwTw0M6LitLYHMqaHMbQmuBJw==",
5291 "license": "MIT",
5292 "dependencies": {
5293 "@babel/core": "^7.25.2",
5294 "@babel/generator": "^7.29.1",
5295 "@babel/template": "^7.28.6",
5296 "@babel/traverse": "^7.29.0",
5297 "flow-enums-runtime": "^0.0.6",
5298 "nullthrows": "^1.1.1"
5299 },
5300 "engines": {
5301 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5302 }
5303 },
5304 "node_modules/metro-transform-worker": {
5305 "version": "0.84.6",
5306 "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.84.6.tgz",
5307 "integrity": "sha512-xLTVrOENaHR9DiuhnHS+zcle0rKsCy2CpXSIx7xD+zhJs+qVRNUyV7Z1zIt/0P/d0cSGVx846R+dIjHEudhcww==",
5308 "license": "MIT",
5309 "dependencies": {
5310 "@babel/core": "^7.25.2",
5311 "@babel/generator": "^7.29.1",
5312 "@babel/parser": "^7.29.0",
5313 "@babel/types": "^7.29.0",
5314 "flow-enums-runtime": "^0.0.6",
5315 "metro": "0.84.6",
5316 "metro-babel-transformer": "0.84.6",
5317 "metro-cache": "0.84.6",
5318 "metro-cache-key": "0.84.6",
5319 "metro-minify-terser": "0.84.6",
5320 "metro-source-map": "0.84.6",
5321 "metro-transform-plugins": "0.84.6",
5322 "nullthrows": "^1.1.1"
5323 },
5324 "engines": {
5325 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5326 }
5327 },
5328 "node_modules/metro/node_modules/accepts": {
5329 "version": "2.0.0",
5330 "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
5331 "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
5332 "license": "MIT",
5333 "dependencies": {
5334 "mime-types": "^3.0.0",
5335 "negotiator": "^1.0.0"
5336 },
5337 "engines": {
5338 "node": ">= 0.6"
5339 }
5340 },
5341 "node_modules/metro/node_modules/hermes-estree": {
5342 "version": "0.35.0",
5343 "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz",
5344 "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==",
5345 "license": "MIT"
5346 },
5347 "node_modules/metro/node_modules/hermes-parser": {
5348 "version": "0.35.0",
5349 "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz",
5350 "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==",
5351 "license": "MIT",
5352 "dependencies": {
5353 "hermes-estree": "0.35.0"
5354 }
5355 },
5356 "node_modules/metro/node_modules/mime-types": {
5357 "version": "3.0.2",
5358 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
5359 "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
5360 "license": "MIT",
5361 "dependencies": {
5362 "mime-db": "^1.54.0"
5363 },
5364 "engines": {
5365 "node": ">=18"
5366 },
5367 "funding": {
5368 "type": "opencollective",
5369 "url": "https://opencollective.com/express"
5370 }
5371 },
5372 "node_modules/metro/node_modules/negotiator": {
5373 "version": "1.1.0",
5374 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz",
5375 "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==",
5376 "license": "MIT",
5377 "dependencies": {
5378 "content-type": "^2.1.0"
5379 },
5380 "engines": {
5381 "node": ">=18"
5382 },
5383 "funding": {
5384 "type": "opencollective",
5385 "url": "https://opencollective.com/express"
5386 }
5387 },
5388 "node_modules/metro/node_modules/ws": {
5389 "version": "7.5.13",
5390 "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz",
5391 "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==",
5392 "license": "MIT",
5393 "engines": {
5394 "node": ">=8.3.0"
5395 },
5396 "peerDependencies": {
5397 "bufferutil": "^4.0.1",
5398 "utf-8-validate": "^5.0.2"
5399 },
5400 "peerDependenciesMeta": {
5401 "bufferutil": {
5402 "optional": true
5403 },
5404 "utf-8-validate": {
5405 "optional": true
5406 }
5407 }
5408 },
5409 "node_modules/micromatch": {
5410 "version": "4.0.8",
5411 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
5412 "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
5413 "license": "MIT",
5414 "dependencies": {
5415 "braces": "^3.0.3",
5416 "picomatch": "^2.3.1"
5417 },
5418 "engines": {
5419 "node": ">=8.6"
5420 }
5421 },
5422 "node_modules/micromatch/node_modules/picomatch": {
5423 "version": "2.3.2",
5424 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
5425 "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
5426 "license": "MIT",
5427 "engines": {
5428 "node": ">=8.6"
5429 },
5430 "funding": {
5431 "url": "https://github.com/sponsors/jonschlinkert"
5432 }
5433 },
5434 "node_modules/mime": {
5435 "version": "2.6.0",
5436 "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
5437 "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
5438 "devOptional": true,
5439 "license": "MIT",
5440 "bin": {
5441 "mime": "cli.js"
5442 },
5443 "engines": {
5444 "node": ">=4.0.0"
5445 }
5446 },
5447 "node_modules/mime-db": {
5448 "version": "1.54.0",
5449 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
5450 "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
5451 "license": "MIT",
5452 "engines": {
5453 "node": ">= 0.6"
5454 }
5455 },
5456 "node_modules/mime-types": {
5457 "version": "2.1.35",
5458 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
5459 "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
5460 "devOptional": true,
5461 "license": "MIT",
5462 "dependencies": {
5463 "mime-db": "1.52.0"
5464 },
5465 "engines": {
5466 "node": ">= 0.6"
5467 }
5468 },
5469 "node_modules/mime-types/node_modules/mime-db": {
5470 "version": "1.52.0",
5471 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
5472 "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
5473 "devOptional": true,
5474 "license": "MIT",
5475 "engines": {
5476 "node": ">= 0.6"
5477 }
5478 },
5479 "node_modules/mimic-fn": {
5480 "version": "2.1.0",
5481 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
5482 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
5483 "devOptional": true,
5484 "license": "MIT",
5485 "engines": {
5486 "node": ">=6"
5487 }
5488 },
5489 "node_modules/mkdirp": {
5490 "version": "1.0.4",
5491 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
5492 "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
5493 "license": "MIT",
5494 "bin": {
5495 "mkdirp": "bin/cmd.js"
5496 },
5497 "engines": {
5498 "node": ">=10"
5499 }
5500 },
5501 "node_modules/ms": {
5502 "version": "2.1.3",
5503 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
5504 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
5505 "license": "MIT"
5506 },
5507 "node_modules/negotiator": {
5508 "version": "0.6.4",
5509 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
5510 "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
5511 "devOptional": true,
5512 "license": "MIT",
5513 "engines": {
5514 "node": ">= 0.6"
5515 }
5516 },
5517 "node_modules/nocache": {
5518 "version": "3.0.4",
5519 "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz",
5520 "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==",
5521 "devOptional": true,
5522 "license": "MIT",
5523 "engines": {
5524 "node": ">=12.0.0"
5525 }
5526 },
5527 "node_modules/node-int64": {
5528 "version": "0.4.0",
5529 "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
5530 "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
5531 "license": "MIT"
5532 },
5533 "node_modules/node-releases": {
5534 "version": "2.0.57",
5535 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.57.tgz",
5536 "integrity": "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==",
5537 "license": "MIT",
5538 "engines": {
5539 "node": ">=18"
5540 }
5541 },
5542 "node_modules/node-stream-zip": {
5543 "version": "1.16.0",
5544 "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.16.0.tgz",
5545 "integrity": "sha512-ObaRrRoR8T68wF6suxHd7R4XQNamij6ZQHrwG7Dx1D2zeHcDNLsIOBcWrIwtDm7AsCXBguaPHgXhcjxDa2szrg==",
5546 "devOptional": true,
5547 "license": "MIT",
5548 "engines": {
5549 "node": ">=0.12.0"
5550 },
5551 "funding": {
5552 "type": "github",
5553 "url": "https://github.com/sponsors/antelle"
5554 }
5555 },
5556 "node_modules/npm-run-path": {
5557 "version": "4.0.1",
5558 "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
5559 "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
5560 "devOptional": true,
5561 "license": "MIT",
5562 "dependencies": {
5563 "path-key": "^3.0.0"
5564 },
5565 "engines": {
5566 "node": ">=8"
5567 }
5568 },
5569 "node_modules/nullthrows": {
5570 "version": "1.1.1",
5571 "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
5572 "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
5573 "license": "MIT"
5574 },
5575 "node_modules/ob1": {
5576 "version": "0.84.6",
5577 "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.84.6.tgz",
5578 "integrity": "sha512-+s+6zjd0X68hfAcn92NsEPXnSYOF3O7exw/Fj4UfRTB+UL+Tdjdkzu5/4WquXlzqgvNm8FWuuW6/0Yd8S2rYxw==",
5579 "license": "MIT",
5580 "dependencies": {
5581 "flow-enums-runtime": "^0.0.6"
5582 },
5583 "engines": {
5584 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
5585 }
5586 },
5587 "node_modules/object-inspect": {
5588 "version": "1.13.4",
5589 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
5590 "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
5591 "devOptional": true,
5592 "license": "MIT",
5593 "engines": {
5594 "node": ">= 0.4"
5595 },
5596 "funding": {
5597 "url": "https://github.com/sponsors/ljharb"
5598 }
5599 },
5600 "node_modules/on-finished": {
5601 "version": "2.4.1",
5602 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
5603 "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
5604 "license": "MIT",
5605 "dependencies": {
5606 "ee-first": "1.1.1"
5607 },
5608 "engines": {
5609 "node": ">= 0.8"
5610 }
5611 },
5612 "node_modules/on-headers": {
5613 "version": "1.1.0",
5614 "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
5615 "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
5616 "devOptional": true,
5617 "license": "MIT",
5618 "engines": {
5619 "node": ">= 0.8"
5620 }
5621 },
5622 "node_modules/onetime": {
5623 "version": "5.1.2",
5624 "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
5625 "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
5626 "devOptional": true,
5627 "license": "MIT",
5628 "dependencies": {
5629 "mimic-fn": "^2.1.0"
5630 },
5631 "engines": {
5632 "node": ">=6"
5633 },
5634 "funding": {
5635 "url": "https://github.com/sponsors/sindresorhus"
5636 }
5637 },
5638 "node_modules/open": {
5639 "version": "6.4.0",
5640 "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
5641 "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
5642 "devOptional": true,
5643 "license": "MIT",
5644 "dependencies": {
5645 "is-wsl": "^1.1.0"
5646 },
5647 "engines": {
5648 "node": ">=8"
5649 }
5650 },
5651 "node_modules/ora": {
5652 "version": "5.4.1",
5653 "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
5654 "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
5655 "devOptional": true,
5656 "license": "MIT",
5657 "dependencies": {
5658 "bl": "^4.1.0",
5659 "chalk": "^4.1.0",
5660 "cli-cursor": "^3.1.0",
5661 "cli-spinners": "^2.5.0",
5662 "is-interactive": "^1.0.0",
5663 "is-unicode-supported": "^0.1.0",
5664 "log-symbols": "^4.1.0",
5665 "strip-ansi": "^6.0.0",
5666 "wcwidth": "^1.0.1"
5667 },
5668 "engines": {
5669 "node": ">=10"
5670 },
5671 "funding": {
5672 "url": "https://github.com/sponsors/sindresorhus"
5673 }
5674 },
5675 "node_modules/ora/node_modules/strip-ansi": {
5676 "version": "6.0.1",
5677 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
5678 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
5679 "devOptional": true,
5680 "license": "MIT",
5681 "dependencies": {
5682 "ansi-regex": "^5.0.1"
5683 },
5684 "engines": {
5685 "node": ">=8"
5686 }
5687 },
5688 "node_modules/p-limit": {
5689 "version": "3.1.0",
5690 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
5691 "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
5692 "devOptional": true,
5693 "license": "MIT",
5694 "dependencies": {
5695 "yocto-queue": "^0.1.0"
5696 },
5697 "engines": {
5698 "node": ">=10"
5699 },
5700 "funding": {
5701 "url": "https://github.com/sponsors/sindresorhus"
5702 }
5703 },
5704 "node_modules/p-locate": {
5705 "version": "5.0.0",
5706 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
5707 "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
5708 "devOptional": true,
5709 "license": "MIT",
5710 "dependencies": {
5711 "p-limit": "^3.0.2"
5712 },
5713 "engines": {
5714 "node": ">=10"
5715 },
5716 "funding": {
5717 "url": "https://github.com/sponsors/sindresorhus"
5718 }
5719 },
5720 "node_modules/p-try": {
5721 "version": "2.2.0",
5722 "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
5723 "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
5724 "devOptional": true,
5725 "license": "MIT",
5726 "engines": {
5727 "node": ">=6"
5728 }
5729 },
5730 "node_modules/paparam": {
5731 "version": "1.13.0",
5732 "resolved": "https://registry.npmjs.org/paparam/-/paparam-1.13.0.tgz",
5733 "integrity": "sha512-WV8vCnEBPKcSSEIDSaAetppO+C0+OUJ6gjO1BGbhvIp2jc8zfV9C/8NARjEGgnUo5DDwdNsGOrFTZKLFTTeB0A==",
5734 "license": "Apache-2.0"
5735 },
5736 "node_modules/parent-module": {
5737 "version": "1.0.1",
5738 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
5739 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
5740 "devOptional": true,
5741 "license": "MIT",
5742 "dependencies": {
5743 "callsites": "^3.0.0"
5744 },
5745 "engines": {
5746 "node": ">=6"
5747 }
5748 },
5749 "node_modules/parse-json": {
5750 "version": "5.2.0",
5751 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
5752 "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
5753 "devOptional": true,
5754 "license": "MIT",
5755 "dependencies": {
5756 "@babel/code-frame": "^7.0.0",
5757 "error-ex": "^1.3.1",
5758 "json-parse-even-better-errors": "^2.3.0",
5759 "lines-and-columns": "^1.1.6"
5760 },
5761 "engines": {
5762 "node": ">=8"
5763 },
5764 "funding": {
5765 "url": "https://github.com/sponsors/sindresorhus"
5766 }
5767 },
5768 "node_modules/parseurl": {
5769 "version": "1.3.3",
5770 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
5771 "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
5772 "license": "MIT",
5773 "engines": {
5774 "node": ">= 0.8"
5775 }
5776 },
5777 "node_modules/path-exists": {
5778 "version": "4.0.0",
5779 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
5780 "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
5781 "devOptional": true,
5782 "license": "MIT",
5783 "engines": {
5784 "node": ">=8"
5785 }
5786 },
5787 "node_modules/path-expression-matcher": {
5788 "version": "1.6.2",
5789 "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz",
5790 "integrity": "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==",
5791 "devOptional": true,
5792 "funding": [
5793 {
5794 "type": "github",
5795 "url": "https://github.com/sponsors/NaturalIntelligence"
5796 }
5797 ],
5798 "license": "MIT",
5799 "engines": {
5800 "node": ">=14.0.0"
5801 }
5802 },
5803 "node_modules/path-key": {
5804 "version": "3.1.1",
5805 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
5806 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
5807 "license": "MIT",
5808 "engines": {
5809 "node": ">=8"
5810 }
5811 },
5812 "node_modules/path-parse": {
5813 "version": "1.0.7",
5814 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5815 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
5816 "devOptional": true,
5817 "license": "MIT"
5818 },
5819 "node_modules/picocolors": {
5820 "version": "1.1.1",
5821 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
5822 "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
5823 "license": "ISC"
5824 },
5825 "node_modules/picomatch": {
5826 "version": "4.0.7",
5827 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
5828 "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
5829 "license": "MIT",
5830 "peer": true,
5831 "engines": {
5832 "node": ">=12"
5833 },
5834 "funding": {
5835 "url": "https://github.com/sponsors/jonschlinkert"
5836 }
5837 },
5838 "node_modules/pretty-format": {
5839 "version": "29.7.0",
5840 "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
5841 "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
5842 "license": "MIT",
5843 "dependencies": {
5844 "@jest/schemas": "^29.6.3",
5845 "ansi-styles": "^5.0.0",
5846 "react-is": "^18.0.0"
5847 },
5848 "engines": {
5849 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
5850 }
5851 },
5852 "node_modules/pretty-format/node_modules/ansi-styles": {
5853 "version": "5.2.0",
5854 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
5855 "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
5856 "license": "MIT",
5857 "engines": {
5858 "node": ">=10"
5859 },
5860 "funding": {
5861 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
5862 }
5863 },
5864 "node_modules/promaphore": {
5865 "version": "1.0.0",
5866 "resolved": "https://registry.npmjs.org/promaphore/-/promaphore-1.0.0.tgz",
5867 "integrity": "sha512-Eg8401+KJddVvDULkpy8bR964GMX8xMPegL6NdxTeBH2Wa3L86cZlEHizbkFJikr5u+E3wFoR5dLWJ+1OPyEfw==",
5868 "dev": true,
5869 "license": "MIT"
5870 },
5871 "node_modules/promise": {
5872 "version": "8.3.0",
5873 "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
5874 "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
5875 "license": "MIT",
5876 "dependencies": {
5877 "asap": "~2.0.6"
5878 }
5879 },
5880 "node_modules/prompts": {
5881 "version": "2.4.2",
5882 "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
5883 "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
5884 "devOptional": true,
5885 "license": "MIT",
5886 "dependencies": {
5887 "kleur": "^3.0.3",
5888 "sisteransi": "^1.0.5"
5889 },
5890 "engines": {
5891 "node": ">= 6"
5892 }
5893 },
5894 "node_modules/qs": {
5895 "version": "6.16.0",
5896 "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz",
5897 "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==",
5898 "devOptional": true,
5899 "license": "BSD-3-Clause",
5900 "dependencies": {
5901 "es-define-property": "^1.0.1",
5902 "side-channel": "^1.1.1"
5903 },
5904 "engines": {
5905 "node": ">=0.6"
5906 },
5907 "funding": {
5908 "url": "https://github.com/sponsors/ljharb"
5909 }
5910 },
5911 "node_modules/queue-microtask": {
5912 "version": "1.2.3",
5913 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
5914 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
5915 "devOptional": true,
5916 "funding": [
5917 {
5918 "type": "github",
5919 "url": "https://github.com/sponsors/feross"
5920 },
5921 {
5922 "type": "patreon",
5923 "url": "https://www.patreon.com/feross"
5924 },
5925 {
5926 "type": "consulting",
5927 "url": "https://feross.org/support"
5928 }
5929 ],
5930 "license": "MIT"
5931 },
5932 "node_modules/range-parser": {
5933 "version": "1.2.1",
5934 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
5935 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
5936 "license": "MIT",
5937 "engines": {
5938 "node": ">= 0.6"
5939 }
5940 },
5941 "node_modules/raw-body": {
5942 "version": "3.0.2",
5943 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
5944 "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
5945 "devOptional": true,
5946 "license": "MIT",
5947 "dependencies": {
5948 "bytes": "~3.1.2",
5949 "http-errors": "~2.0.1",
5950 "iconv-lite": "~0.7.0",
5951 "unpipe": "~1.0.0"
5952 },
5953 "engines": {
5954 "node": ">= 0.10"
5955 }
5956 },
5957 "node_modules/react": {
5958 "version": "19.3.0",
5959 "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz",
5960 "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==",
5961 "license": "MIT",
5962 "peer": true,
5963 "engines": {
5964 "node": ">=0.10.0"
5965 }
5966 },
5967 "node_modules/react-devtools-core": {
5968 "version": "6.1.5",
5969 "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz",
5970 "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==",
5971 "license": "MIT",
5972 "dependencies": {
5973 "shell-quote": "^1.6.1",
5974 "ws": "^7"
5975 }
5976 },
5977 "node_modules/react-devtools-core/node_modules/ws": {
5978 "version": "7.5.13",
5979 "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz",
5980 "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==",
5981 "license": "MIT",
5982 "engines": {
5983 "node": ">=8.3.0"
5984 },
5985 "peerDependencies": {
5986 "bufferutil": "^4.0.1",
5987 "utf-8-validate": "^5.0.2"
5988 },
5989 "peerDependenciesMeta": {
5990 "bufferutil": {
5991 "optional": true
5992 },
5993 "utf-8-validate": {
5994 "optional": true
5995 }
5996 }
5997 },
5998 "node_modules/react-is": {
5999 "version": "18.3.1",
6000 "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
6001 "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
6002 "license": "MIT"
6003 },
6004 "node_modules/react-native": {
6005 "version": "0.86.3",
6006 "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.86.3.tgz",
6007 "integrity": "sha512-JR5s3bM9ezud+Mw24GlNXNfthqPIKwrQgPPJcam+L97t2sKjjEavhCzBn+fyqZZRcM5+XlhYxpTxVkK7e1n38Q==",
6008 "license": "MIT",
6009 "peer": true,
6010 "dependencies": {
6011 "@react-native/assets-registry": "0.86.3",
6012 "@react-native/codegen": "0.86.3",
6013 "@react-native/community-cli-plugin": "0.86.3",
6014 "@react-native/gradle-plugin": "0.86.3",
6015 "@react-native/js-polyfills": "0.86.3",
6016 "@react-native/normalize-colors": "0.86.3",
6017 "@react-native/virtualized-lists": "0.86.3",
6018 "abort-controller": "^3.0.0",
6019 "anser": "^1.4.9",
6020 "ansi-regex": "^5.0.0",
6021 "babel-plugin-syntax-hermes-parser": "0.36.0",
6022 "base64-js": "^1.5.1",
6023 "commander": "^12.0.0",
6024 "flow-enums-runtime": "^0.0.6",
6025 "hermes-compiler": "250829098.0.17",
6026 "invariant": "^2.2.4",
6027 "memoize-one": "^5.0.0",
6028 "metro-runtime": "^0.84.3",
6029 "metro-source-map": "^0.84.3",
6030 "nullthrows": "^1.1.1",
6031 "pretty-format": "^29.7.0",
6032 "promise": "^8.3.0",
6033 "react-devtools-core": "^6.1.5",
6034 "react-refresh": "^0.14.0",
6035 "regenerator-runtime": "^0.13.2",
6036 "scheduler": "0.27.0",
6037 "semver": "^7.1.3",
6038 "stacktrace-parser": "^0.1.10",
6039 "tinyglobby": "^0.2.15",
6040 "whatwg-fetch": "^3.0.0",
6041 "ws": "^7.5.10",
6042 "yargs": "^17.6.2"
6043 },
6044 "bin": {
6045 "react-native": "cli.js"
6046 },
6047 "engines": {
6048 "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
6049 },
6050 "peerDependencies": {
6051 "@react-native/jest-preset": "0.86.3",
6052 "@types/react": "^19.1.1",
6053 "react": "^19.2.3"
6054 },
6055 "peerDependenciesMeta": {
6056 "@react-native/jest-preset": {
6057 "optional": true
6058 },
6059 "@types/react": {
6060 "optional": true
6061 }
6062 }
6063 },
6064 "node_modules/react-native-bare-kit": {
6065 "version": "0.14.5",
6066 "resolved": "https://registry.npmjs.org/react-native-bare-kit/-/react-native-bare-kit-0.14.5.tgz",
6067 "integrity": "sha512-AEHi23oGYiSGBnDu2XepLEPy4BquW1fJmtPDhkzo0GtkpNsfzsU60d8xPm30HCXBLdXVZfPzvOBbroHGOf7N1w==",
6068 "license": "Apache-2.0",
6069 "dependencies": {
6070 "bare-events": "^2.6.1",
6071 "bare-link": "^3.0.1",
6072 "streamx": "^2.21.0"
6073 },
6074 "peerDependencies": {
6075 "react": "*",
6076 "react-native": "*"
6077 }
6078 },
6079 "node_modules/react-native-fs": {
6080 "version": "2.20.0",
6081 "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.20.0.tgz",
6082 "integrity": "sha512-VkTBzs7fIDUiy/XajOSNk0XazFE9l+QlMAce7lGuebZcag5CnjszB+u4BdqzwaQOdcYb5wsJIsqq4kxInIRpJQ==",
6083 "license": "MIT",
6084 "dependencies": {
6085 "base-64": "^0.1.0",
6086 "utf8": "^3.0.0"
6087 },
6088 "peerDependencies": {
6089 "react-native": "*",
6090 "react-native-windows": "*"
6091 },
6092 "peerDependenciesMeta": {
6093 "react-native-windows": {
6094 "optional": true
6095 }
6096 }
6097 },
6098 "node_modules/react-native-webview": {
6099 "version": "14.0.1",
6100 "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-14.0.1.tgz",
6101 "integrity": "sha512-lBUuvFk459Mo+5vUNqwzGvn+I8rDJE6zvOulG2hWWudeEOJfWTsQwOfuYnRu+27djUIXrESFfC+EQE3PGu+FWA==",
6102 "license": "MIT",
6103 "dependencies": {
6104 "escape-string-regexp": "^4.0.0",
6105 "invariant": "2.2.4"
6106 },
6107 "peerDependencies": {
6108 "react": "*",
6109 "react-native": "*"
6110 }
6111 },
6112 "node_modules/react-native/node_modules/commander": {
6113 "version": "12.1.0",
6114 "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
6115 "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
6116 "license": "MIT",
6117 "engines": {
6118 "node": ">=18"
6119 }
6120 },
6121 "node_modules/react-native/node_modules/ws": {
6122 "version": "7.5.13",
6123 "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz",
6124 "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==",
6125 "license": "MIT",
6126 "engines": {
6127 "node": ">=8.3.0"
6128 },
6129 "peerDependencies": {
6130 "bufferutil": "^4.0.1",
6131 "utf-8-validate": "^5.0.2"
6132 },
6133 "peerDependenciesMeta": {
6134 "bufferutil": {
6135 "optional": true
6136 },
6137 "utf-8-validate": {
6138 "optional": true
6139 }
6140 }
6141 },
6142 "node_modules/react-refresh": {
6143 "version": "0.14.2",
6144 "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
6145 "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
6146 "license": "MIT",
6147 "engines": {
6148 "node": ">=0.10.0"
6149 }
6150 },
6151 "node_modules/readable-stream": {
6152 "version": "3.6.2",
6153 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
6154 "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
6155 "devOptional": true,
6156 "license": "MIT",
6157 "dependencies": {
6158 "inherits": "^2.0.3",
6159 "string_decoder": "^1.1.1",
6160 "util-deprecate": "^1.0.1"
6161 },
6162 "engines": {
6163 "node": ">= 6"
6164 }
6165 },
6166 "node_modules/regenerate": {
6167 "version": "1.4.2",
6168 "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
6169 "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
6170 "devOptional": true,
6171 "license": "MIT"
6172 },
6173 "node_modules/regenerate-unicode-properties": {
6174 "version": "10.3.0",
6175 "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.3.0.tgz",
6176 "integrity": "sha512-9ns8odR8e9q3otKeHj3DE80jZYKg6zVeZKE+zQmRKXFoVUcuiTGeO6iusDhPRoIQQPVPRvH+SfBhrTud4eczuw==",
6177 "devOptional": true,
6178 "license": "MIT",
6179 "dependencies": {
6180 "regenerate": "^1.4.2"
6181 },
6182 "engines": {
6183 "node": ">=4"
6184 }
6185 },
6186 "node_modules/regenerator-runtime": {
6187 "version": "0.13.11",
6188 "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
6189 "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
6190 "license": "MIT"
6191 },
6192 "node_modules/regexpu-core": {
6193 "version": "6.5.2",
6194 "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.5.2.tgz",
6195 "integrity": "sha512-zkmVH92DlzjSFc4xKGZp/2BXIFrDIdBQBC8gUXKCsMgKYb1bkCkxfSuoW1werDjaTEMTbULkHtKFHe1L+Abnaw==",
6196 "devOptional": true,
6197 "license": "MIT",
6198 "dependencies": {
6199 "regenerate": "^1.4.2",
6200 "regenerate-unicode-properties": "^10.3.0",
6201 "regjsgen": "^0.8.0",
6202 "regjsparser": "^0.13.0",
6203 "unicode-match-property-ecmascript": "^2.0.0",
6204 "unicode-match-property-value-ecmascript": "^2.2.1"
6205 },
6206 "engines": {
6207 "node": ">=4"
6208 }
6209 },
6210 "node_modules/regjsgen": {
6211 "version": "0.8.0",
6212 "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
6213 "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
6214 "devOptional": true,
6215 "license": "MIT"
6216 },
6217 "node_modules/regjsparser": {
6218 "version": "0.13.3",
6219 "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.3.tgz",
6220 "integrity": "sha512-ycwFAS14Jw4mppvmK4GR/J6u3WpWpjkEApehuHtLc/8VpPNpDMbQ4WjqwplXifGeyKOzHSFLmSPqzksDQE2Sfg==",
6221 "devOptional": true,
6222 "license": "BSD-2-Clause",
6223 "dependencies": {
6224 "jsesc": "~3.1.0"
6225 },
6226 "bin": {
6227 "regjsparser": "bin/parser"
6228 }
6229 },
6230 "node_modules/require-addon": {
6231 "version": "1.3.0",
6232 "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.3.0.tgz",
6233 "integrity": "sha512-j8pifaPNZI7ShKY3ihXZwF0qaEjua8zmlqPvDil0a8SBnyRvjCbAiEQuzO0UcoXH1sqU5U/ilXSjYd1W5NYwAA==",
6234 "license": "Apache-2.0",
6235 "dependencies": {
6236 "bare-addon-resolve": "^1.3.0"
6237 },
6238 "engines": {
6239 "bare": ">=1.10.0"
6240 }
6241 },
6242 "node_modules/require-directory": {
6243 "version": "2.1.1",
6244 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
6245 "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
6246 "license": "MIT",
6247 "engines": {
6248 "node": ">=0.10.0"
6249 }
6250 },
6251 "node_modules/require-main-filename": {
6252 "version": "2.0.0",
6253 "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
6254 "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
6255 "devOptional": true,
6256 "license": "ISC"
6257 },
6258 "node_modules/resolve": {
6259 "version": "1.22.12",
6260 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
6261 "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
6262 "devOptional": true,
6263 "license": "MIT",
6264 "dependencies": {
6265 "es-errors": "^1.3.0",
6266 "is-core-module": "^2.16.1",
6267 "path-parse": "^1.0.7",
6268 "supports-preserve-symlinks-flag": "^1.0.0"
6269 },
6270 "bin": {
6271 "resolve": "bin/resolve"
6272 },
6273 "engines": {
6274 "node": ">= 0.4"
6275 },
6276 "funding": {
6277 "url": "https://github.com/sponsors/ljharb"
6278 }
6279 },
6280 "node_modules/resolve-from": {
6281 "version": "4.0.0",
6282 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
6283 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
6284 "devOptional": true,
6285 "license": "MIT",
6286 "engines": {
6287 "node": ">=4"
6288 }
6289 },
6290 "node_modules/restore-cursor": {
6291 "version": "3.1.0",
6292 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
6293 "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
6294 "devOptional": true,
6295 "license": "MIT",
6296 "dependencies": {
6297 "onetime": "^5.1.0",
6298 "signal-exit": "^3.0.2"
6299 },
6300 "engines": {
6301 "node": ">=8"
6302 }
6303 },
6304 "node_modules/reusify": {
6305 "version": "1.1.0",
6306 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
6307 "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
6308 "devOptional": true,
6309 "license": "MIT",
6310 "engines": {
6311 "iojs": ">=1.0.0",
6312 "node": ">=0.10.0"
6313 }
6314 },
6315 "node_modules/run-parallel": {
6316 "version": "1.2.0",
6317 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
6318 "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
6319 "devOptional": true,
6320 "funding": [
6321 {
6322 "type": "github",
6323 "url": "https://github.com/sponsors/feross"
6324 },
6325 {
6326 "type": "patreon",
6327 "url": "https://www.patreon.com/feross"
6328 },
6329 {
6330 "type": "consulting",
6331 "url": "https://feross.org/support"
6332 }
6333 ],
6334 "license": "MIT",
6335 "dependencies": {
6336 "queue-microtask": "^1.2.2"
6337 }
6338 },
6339 "node_modules/safe-buffer": {
6340 "version": "5.2.1",
6341 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
6342 "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
6343 "devOptional": true,
6344 "funding": [
6345 {
6346 "type": "github",
6347 "url": "https://github.com/sponsors/feross"
6348 },
6349 {
6350 "type": "patreon",
6351 "url": "https://www.patreon.com/feross"
6352 },
6353 {
6354 "type": "consulting",
6355 "url": "https://feross.org/support"
6356 }
6357 ],
6358 "license": "MIT"
6359 },
6360 "node_modules/safer-buffer": {
6361 "version": "2.1.2",
6362 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
6363 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
6364 "devOptional": true,
6365 "license": "MIT"
6366 },
6367 "node_modules/same-object": {
6368 "version": "1.0.2",
6369 "resolved": "https://registry.npmjs.org/same-object/-/same-object-1.0.2.tgz",
6370 "integrity": "sha512-csHWhvUsLbIOHDM/nP+KHWM+BLPsIzWkFa8HbzaI0G7BqKXgx+7FJpKTGgLXyz5amfdY2OVBcmXTqYOMEk04og==",
6371 "dev": true,
6372 "license": "MIT"
6373 },
6374 "node_modules/scheduler": {
6375 "version": "0.27.0",
6376 "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
6377 "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
6378 "license": "MIT"
6379 },
6380 "node_modules/semver": {
6381 "version": "7.8.5",
6382 "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
6383 "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
6384 "license": "ISC",
6385 "bin": {
6386 "semver": "bin/semver.js"
6387 },
6388 "engines": {
6389 "node": ">=10"
6390 }
6391 },
6392 "node_modules/send": {
6393 "version": "0.19.2",
6394 "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
6395 "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
6396 "license": "MIT",
6397 "dependencies": {
6398 "debug": "2.6.9",
6399 "depd": "2.0.0",
6400 "destroy": "1.2.0",
6401 "encodeurl": "~2.0.0",
6402 "escape-html": "~1.0.3",
6403 "etag": "~1.8.1",
6404 "fresh": "~0.5.2",
6405 "http-errors": "~2.0.1",
6406 "mime": "1.6.0",
6407 "ms": "2.1.3",
6408 "on-finished": "~2.4.1",
6409 "range-parser": "~1.2.1",
6410 "statuses": "~2.0.2"
6411 },
6412 "engines": {
6413 "node": ">= 0.8.0"
6414 }
6415 },
6416 "node_modules/send/node_modules/debug": {
6417 "version": "2.6.9",
6418 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
6419 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
6420 "license": "MIT",
6421 "dependencies": {
6422 "ms": "2.0.0"
6423 }
6424 },
6425 "node_modules/send/node_modules/debug/node_modules/ms": {
6426 "version": "2.0.0",
6427 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
6428 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
6429 "license": "MIT"
6430 },
6431 "node_modules/send/node_modules/encodeurl": {
6432 "version": "2.0.0",
6433 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
6434 "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
6435 "license": "MIT",
6436 "engines": {
6437 "node": ">= 0.8"
6438 }
6439 },
6440 "node_modules/send/node_modules/mime": {
6441 "version": "1.6.0",
6442 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
6443 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
6444 "license": "MIT",
6445 "bin": {
6446 "mime": "cli.js"
6447 },
6448 "engines": {
6449 "node": ">=4"
6450 }
6451 },
6452 "node_modules/send/node_modules/statuses": {
6453 "version": "2.0.2",
6454 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
6455 "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
6456 "license": "MIT",
6457 "engines": {
6458 "node": ">= 0.8"
6459 }
6460 },
6461 "node_modules/serialize-error": {
6462 "version": "2.1.0",
6463 "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
6464 "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
6465 "license": "MIT",
6466 "engines": {
6467 "node": ">=0.10.0"
6468 }
6469 },
6470 "node_modules/serve-static": {
6471 "version": "1.16.3",
6472 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
6473 "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
6474 "license": "MIT",
6475 "dependencies": {
6476 "encodeurl": "~2.0.0",
6477 "escape-html": "~1.0.3",
6478 "parseurl": "~1.3.3",
6479 "send": "~0.19.1"
6480 },
6481 "engines": {
6482 "node": ">= 0.8.0"
6483 }
6484 },
6485 "node_modules/serve-static/node_modules/encodeurl": {
6486 "version": "2.0.0",
6487 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
6488 "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
6489 "license": "MIT",
6490 "engines": {
6491 "node": ">= 0.8"
6492 }
6493 },
6494 "node_modules/set-blocking": {
6495 "version": "2.0.0",
6496 "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
6497 "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
6498 "devOptional": true,
6499 "license": "ISC"
6500 },
6501 "node_modules/setprototypeof": {
6502 "version": "1.2.0",
6503 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
6504 "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
6505 "license": "ISC"
6506 },
6507 "node_modules/shebang-command": {
6508 "version": "2.0.0",
6509 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
6510 "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
6511 "license": "MIT",
6512 "dependencies": {
6513 "shebang-regex": "^3.0.0"
6514 },
6515 "engines": {
6516 "node": ">=8"
6517 }
6518 },
6519 "node_modules/shebang-regex": {
6520 "version": "3.0.0",
6521 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
6522 "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
6523 "license": "MIT",
6524 "engines": {
6525 "node": ">=8"
6526 }
6527 },
6528 "node_modules/shell-quote": {
6529 "version": "1.12.0",
6530 "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.12.0.tgz",
6531 "integrity": "sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==",
6532 "license": "MIT",
6533 "engines": {
6534 "node": ">= 0.4"
6535 },
6536 "funding": {
6537 "url": "https://github.com/sponsors/ljharb"
6538 }
6539 },
6540 "node_modules/side-channel": {
6541 "version": "1.1.1",
6542 "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
6543 "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
6544 "devOptional": true,
6545 "license": "MIT",
6546 "dependencies": {
6547 "es-errors": "^1.3.0",
6548 "object-inspect": "^1.13.4",
6549 "side-channel-list": "^1.0.1",
6550 "side-channel-map": "^1.0.1",
6551 "side-channel-weakmap": "^1.0.2"
6552 },
6553 "engines": {
6554 "node": ">= 0.4"
6555 },
6556 "funding": {
6557 "url": "https://github.com/sponsors/ljharb"
6558 }
6559 },
6560 "node_modules/side-channel-list": {
6561 "version": "1.0.1",
6562 "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
6563 "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
6564 "devOptional": true,
6565 "license": "MIT",
6566 "dependencies": {
6567 "es-errors": "^1.3.0",
6568 "object-inspect": "^1.13.4"
6569 },
6570 "engines": {
6571 "node": ">= 0.4"
6572 },
6573 "funding": {
6574 "url": "https://github.com/sponsors/ljharb"
6575 }
6576 },
6577 "node_modules/side-channel-map": {
6578 "version": "1.0.1",
6579 "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
6580 "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
6581 "devOptional": true,
6582 "license": "MIT",
6583 "dependencies": {
6584 "call-bound": "^1.0.2",
6585 "es-errors": "^1.3.0",
6586 "get-intrinsic": "^1.2.5",
6587 "object-inspect": "^1.13.3"
6588 },
6589 "engines": {
6590 "node": ">= 0.4"
6591 },
6592 "funding": {
6593 "url": "https://github.com/sponsors/ljharb"
6594 }
6595 },
6596 "node_modules/side-channel-weakmap": {
6597 "version": "1.0.2",
6598 "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
6599 "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
6600 "devOptional": true,
6601 "license": "MIT",
6602 "dependencies": {
6603 "call-bound": "^1.0.2",
6604 "es-errors": "^1.3.0",
6605 "get-intrinsic": "^1.2.5",
6606 "object-inspect": "^1.13.3",
6607 "side-channel-map": "^1.0.1"
6608 },
6609 "engines": {
6610 "node": ">= 0.4"
6611 },
6612 "funding": {
6613 "url": "https://github.com/sponsors/ljharb"
6614 }
6615 },
6616 "node_modules/signal-exit": {
6617 "version": "3.0.7",
6618 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
6619 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
6620 "devOptional": true,
6621 "license": "ISC"
6622 },
6623 "node_modules/sisteransi": {
6624 "version": "1.0.5",
6625 "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
6626 "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
6627 "devOptional": true,
6628 "license": "MIT"
6629 },
6630 "node_modules/slice-ansi": {
6631 "version": "2.1.0",
6632 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
6633 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
6634 "devOptional": true,
6635 "license": "MIT",
6636 "dependencies": {
6637 "ansi-styles": "^3.2.0",
6638 "astral-regex": "^1.0.0",
6639 "is-fullwidth-code-point": "^2.0.0"
6640 },
6641 "engines": {
6642 "node": ">=6"
6643 }
6644 },
6645 "node_modules/slice-ansi/node_modules/ansi-styles": {
6646 "version": "3.2.1",
6647 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
6648 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
6649 "devOptional": true,
6650 "license": "MIT",
6651 "dependencies": {
6652 "color-convert": "^1.9.0"
6653 },
6654 "engines": {
6655 "node": ">=4"
6656 }
6657 },
6658 "node_modules/slice-ansi/node_modules/color-convert": {
6659 "version": "1.9.3",
6660 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
6661 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
6662 "devOptional": true,
6663 "license": "MIT",
6664 "dependencies": {
6665 "color-name": "1.1.3"
6666 }
6667 },
6668 "node_modules/slice-ansi/node_modules/color-name": {
6669 "version": "1.1.3",
6670 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
6671 "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
6672 "devOptional": true,
6673 "license": "MIT"
6674 },
6675 "node_modules/sodium-native": {
6676 "version": "5.1.0",
6677 "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.1.0.tgz",
6678 "integrity": "sha512-3RxgyWyJlhTsABPnJVpCI5CoTDANZTqqFrEPqr+kjfnRaBihpVtMUE3yTF40ukdoB1APXeoBNKF3MzZAIHg39g==",
6679 "dev": true,
6680 "license": "MIT",
6681 "dependencies": {
6682 "bare-assert": "^1.2.0",
6683 "require-addon": "^1.1.0",
6684 "which-runtime": "^1.2.1"
6685 },
6686 "engines": {
6687 "bare": ">=1.16.0"
6688 }
6689 },
6690 "node_modules/sodium-native/node_modules/bare-assert": {
6691 "version": "1.2.0",
6692 "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.2.0.tgz",
6693 "integrity": "sha512-c6uvgvTJBspTDxtVnPgrBKmLgcpW3Fp72NVKDLg6oT4QjQbhGtvrkHMhGYMK1sh4vjBHOBmuUalyt9hSzV37fQ==",
6694 "dev": true,
6695 "license": "Apache-2.0",
6696 "dependencies": {
6697 "bare-inspect": "^3.1.2"
6698 }
6699 },
6700 "node_modules/source-map": {
6701 "version": "0.5.7",
6702 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
6703 "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
6704 "license": "BSD-3-Clause",
6705 "engines": {
6706 "node": ">=0.10.0"
6707 }
6708 },
6709 "node_modules/source-map-support": {
6710 "version": "0.5.21",
6711 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
6712 "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
6713 "license": "MIT",
6714 "dependencies": {
6715 "buffer-from": "^1.0.0",
6716 "source-map": "^0.6.0"
6717 }
6718 },
6719 "node_modules/source-map-support/node_modules/source-map": {
6720 "version": "0.6.1",
6721 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6722 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6723 "license": "BSD-3-Clause",
6724 "engines": {
6725 "node": ">=0.10.0"
6726 }
6727 },
6728 "node_modules/stackframe": {
6729 "version": "1.3.4",
6730 "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
6731 "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
6732 "license": "MIT"
6733 },
6734 "node_modules/stacktrace-parser": {
6735 "version": "0.1.11",
6736 "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz",
6737 "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==",
6738 "license": "MIT",
6739 "dependencies": {
6740 "type-fest": "^0.7.1"
6741 },
6742 "engines": {
6743 "node": ">=6"
6744 }
6745 },
6746 "node_modules/statuses": {
6747 "version": "1.5.0",
6748 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
6749 "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
6750 "license": "MIT",
6751 "engines": {
6752 "node": ">= 0.6"
6753 }
6754 },
6755 "node_modules/streamx": {
6756 "version": "2.28.1",
6757 "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.1.tgz",
6758 "integrity": "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==",
6759 "license": "MIT",
6760 "dependencies": {
6761 "events-universal": "^1.0.0",
6762 "fast-fifo": "^1.3.2",
6763 "text-decoder": "^1.1.0"
6764 }
6765 },
6766 "node_modules/string_decoder": {
6767 "version": "1.3.0",
6768 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
6769 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
6770 "devOptional": true,
6771 "license": "MIT",
6772 "dependencies": {
6773 "safe-buffer": "~5.2.0"
6774 }
6775 },
6776 "node_modules/string-width": {
6777 "version": "4.2.3",
6778 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
6779 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
6780 "license": "MIT",
6781 "dependencies": {
6782 "emoji-regex": "^8.0.0",
6783 "is-fullwidth-code-point": "^3.0.0",
6784 "strip-ansi": "^6.0.1"
6785 },
6786 "engines": {
6787 "node": ">=8"
6788 }
6789 },
6790 "node_modules/string-width/node_modules/is-fullwidth-code-point": {
6791 "version": "3.0.0",
6792 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
6793 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
6794 "license": "MIT",
6795 "engines": {
6796 "node": ">=8"
6797 }
6798 },
6799 "node_modules/string-width/node_modules/strip-ansi": {
6800 "version": "6.0.1",
6801 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
6802 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
6803 "license": "MIT",
6804 "dependencies": {
6805 "ansi-regex": "^5.0.1"
6806 },
6807 "engines": {
6808 "node": ">=8"
6809 }
6810 },
6811 "node_modules/strip-ansi": {
6812 "version": "5.2.0",
6813 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
6814 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
6815 "devOptional": true,
6816 "license": "MIT",
6817 "dependencies": {
6818 "ansi-regex": "^4.1.0"
6819 },
6820 "engines": {
6821 "node": ">=6"
6822 }
6823 },
6824 "node_modules/strip-ansi/node_modules/ansi-regex": {
6825 "version": "4.1.1",
6826 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
6827 "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
6828 "devOptional": true,
6829 "license": "MIT",
6830 "engines": {
6831 "node": ">=6"
6832 }
6833 },
6834 "node_modules/strip-final-newline": {
6835 "version": "2.0.0",
6836 "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
6837 "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
6838 "devOptional": true,
6839 "license": "MIT",
6840 "engines": {
6841 "node": ">=6"
6842 }
6843 },
6844 "node_modules/strnum": {
6845 "version": "2.4.2",
6846 "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.2.tgz",
6847 "integrity": "sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw==",
6848 "devOptional": true,
6849 "funding": [
6850 {
6851 "type": "github",
6852 "url": "https://github.com/sponsors/NaturalIntelligence"
6853 }
6854 ],
6855 "license": "MIT",
6856 "dependencies": {
6857 "anynum": "^1.0.1"
6858 }
6859 },
6860 "node_modules/supports-color": {
6861 "version": "7.2.0",
6862 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
6863 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
6864 "license": "MIT",
6865 "dependencies": {
6866 "has-flag": "^4.0.0"
6867 },
6868 "engines": {
6869 "node": ">=8"
6870 }
6871 },
6872 "node_modules/supports-preserve-symlinks-flag": {
6873 "version": "1.0.0",
6874 "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
6875 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
6876 "devOptional": true,
6877 "license": "MIT",
6878 "engines": {
6879 "node": ">= 0.4"
6880 },
6881 "funding": {
6882 "url": "https://github.com/sponsors/ljharb"
6883 }
6884 },
6885 "node_modules/teex": {
6886 "version": "1.0.1",
6887 "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
6888 "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
6889 "license": "MIT",
6890 "dependencies": {
6891 "streamx": "^2.12.5"
6892 }
6893 },
6894 "node_modules/terser": {
6895 "version": "5.51.2",
6896 "resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz",
6897 "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==",
6898 "license": "BSD-2-Clause",
6899 "dependencies": {
6900 "@jridgewell/source-map": "^0.3.3",
6901 "acorn": "^8.15.0",
6902 "commander": "^2.20.0",
6903 "source-map-support": "~0.5.20"
6904 },
6905 "bin": {
6906 "terser": "bin/terser"
6907 },
6908 "engines": {
6909 "node": ">=10"
6910 }
6911 },
6912 "node_modules/terser/node_modules/commander": {
6913 "version": "2.20.3",
6914 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
6915 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
6916 "license": "MIT"
6917 },
6918 "node_modules/test-tmp": {
6919 "version": "1.4.0",
6920 "resolved": "https://registry.npmjs.org/test-tmp/-/test-tmp-1.4.0.tgz",
6921 "integrity": "sha512-GVggxGg+jXqP2Wbju50JVLo+9E+nIOPPyWqgr63EbOnNItIKu1cEbJpTWAJeflnyGqXOtcMI7ijHRp88GUkfDA==",
6922 "dev": true,
6923 "license": "MIT",
6924 "dependencies": {
6925 "bare-fs": "^4.0.1",
6926 "bare-os": "^3.3.0",
6927 "bare-path": "^3.0.0"
6928 }
6929 },
6930 "node_modules/text-decoder": {
6931 "version": "1.2.7",
6932 "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz",
6933 "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==",
6934 "license": "Apache-2.0",
6935 "dependencies": {
6936 "b4a": "^1.6.4"
6937 }
6938 },
6939 "node_modules/throat": {
6940 "version": "5.0.0",
6941 "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
6942 "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
6943 "license": "MIT"
6944 },
6945 "node_modules/tinyglobby": {
6946 "version": "0.2.17",
6947 "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
6948 "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
6949 "license": "MIT",
6950 "dependencies": {
6951 "fdir": "^6.5.0",
6952 "picomatch": "^4.0.4"
6953 },
6954 "engines": {
6955 "node": ">=12.0.0"
6956 },
6957 "funding": {
6958 "url": "https://github.com/sponsors/SuperchupuDev"
6959 }
6960 },
6961 "node_modules/tmatch": {
6962 "version": "5.0.0",
6963 "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-5.0.0.tgz",
6964 "integrity": "sha512-Ib9OtBkpHn07tXP04SlN1SYRxFgTk6wSM2EBmjjxug4u5RXPRVLkdFJSS1PmrQidaSB8Lru9nRtViQBsbxzE5Q==",
6965 "dev": true,
6966 "license": "ISC",
6967 "engines": {
6968 "node": ">=8"
6969 }
6970 },
6971 "node_modules/tmpl": {
6972 "version": "1.0.5",
6973 "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
6974 "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
6975 "license": "BSD-3-Clause"
6976 },
6977 "node_modules/to-regex-range": {
6978 "version": "5.0.1",
6979 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
6980 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
6981 "license": "MIT",
6982 "dependencies": {
6983 "is-number": "^7.0.0"
6984 },
6985 "engines": {
6986 "node": ">=8.0"
6987 }
6988 },
6989 "node_modules/toidentifier": {
6990 "version": "1.0.1",
6991 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
6992 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
6993 "license": "MIT",
6994 "engines": {
6995 "node": ">=0.6"
6996 }
6997 },
6998 "node_modules/type-fest": {
6999 "version": "0.7.1",
7000 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
7001 "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
7002 "license": "(MIT OR CC0-1.0)",
7003 "engines": {
7004 "node": ">=8"
7005 }
7006 },
7007 "node_modules/type-is": {
7008 "version": "2.1.0",
7009 "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
7010 "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==",
7011 "devOptional": true,
7012 "license": "MIT",
7013 "dependencies": {
7014 "content-type": "^2.0.0",
7015 "media-typer": "^1.1.0",
7016 "mime-types": "^3.0.0"
7017 },
7018 "engines": {
7019 "node": ">= 18"
7020 },
7021 "funding": {
7022 "type": "opencollective",
7023 "url": "https://opencollective.com/express"
7024 }
7025 },
7026 "node_modules/type-is/node_modules/mime-types": {
7027 "version": "3.0.2",
7028 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
7029 "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
7030 "devOptional": true,
7031 "license": "MIT",
7032 "dependencies": {
7033 "mime-db": "^1.54.0"
7034 },
7035 "engines": {
7036 "node": ">=18"
7037 },
7038 "funding": {
7039 "type": "opencollective",
7040 "url": "https://opencollective.com/express"
7041 }
7042 },
7043 "node_modules/undici-types": {
7044 "version": "8.9.0",
7045 "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
7046 "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
7047 "license": "MIT"
7048 },
7049 "node_modules/unicode-canonical-property-names-ecmascript": {
7050 "version": "2.0.1",
7051 "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
7052 "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
7053 "devOptional": true,
7054 "license": "MIT",
7055 "engines": {
7056 "node": ">=4"
7057 }
7058 },
7059 "node_modules/unicode-match-property-ecmascript": {
7060 "version": "2.0.0",
7061 "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
7062 "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
7063 "devOptional": true,
7064 "license": "MIT",
7065 "dependencies": {
7066 "unicode-canonical-property-names-ecmascript": "^2.0.0",
7067 "unicode-property-aliases-ecmascript": "^2.0.0"
7068 },
7069 "engines": {
7070 "node": ">=4"
7071 }
7072 },
7073 "node_modules/unicode-match-property-value-ecmascript": {
7074 "version": "2.2.1",
7075 "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
7076 "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
7077 "devOptional": true,
7078 "license": "MIT",
7079 "engines": {
7080 "node": ">=4"
7081 }
7082 },
7083 "node_modules/unicode-property-aliases-ecmascript": {
7084 "version": "2.2.0",
7085 "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz",
7086 "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==",
7087 "devOptional": true,
7088 "license": "MIT",
7089 "engines": {
7090 "node": ">=4"
7091 }
7092 },
7093 "node_modules/universalify": {
7094 "version": "0.1.2",
7095 "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
7096 "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
7097 "devOptional": true,
7098 "license": "MIT",
7099 "engines": {
7100 "node": ">= 4.0.0"
7101 }
7102 },
7103 "node_modules/unpipe": {
7104 "version": "1.0.0",
7105 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
7106 "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
7107 "license": "MIT",
7108 "engines": {
7109 "node": ">= 0.8"
7110 }
7111 },
7112 "node_modules/update-browserslist-db": {
7113 "version": "1.3.3",
7114 "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz",
7115 "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==",
7116 "funding": [
7117 {
7118 "type": "opencollective",
7119 "url": "https://opencollective.com/browserslist"
7120 },
7121 {
7122 "type": "tidelift",
7123 "url": "https://tidelift.com/funding/github/npm/browserslist"
7124 },
7125 {
7126 "type": "github",
7127 "url": "https://github.com/sponsors/ai"
7128 }
7129 ],
7130 "license": "MIT",
7131 "dependencies": {
7132 "escalade": "^3.2.0",
7133 "picocolors": "^1.1.1"
7134 },
7135 "bin": {
7136 "update-browserslist-db": "cli.js"
7137 },
7138 "peerDependencies": {
7139 "browserslist": ">= 4.21.0"
7140 }
7141 },
7142 "node_modules/utf8": {
7143 "version": "3.0.0",
7144 "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
7145 "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==",
7146 "license": "MIT"
7147 },
7148 "node_modules/util-deprecate": {
7149 "version": "1.0.2",
7150 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
7151 "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
7152 "devOptional": true,
7153 "license": "MIT"
7154 },
7155 "node_modules/utils-merge": {
7156 "version": "1.0.1",
7157 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
7158 "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
7159 "license": "MIT",
7160 "engines": {
7161 "node": ">= 0.4.0"
7162 }
7163 },
7164 "node_modules/v8-to-istanbul": {
7165 "version": "9.3.0",
7166 "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
7167 "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
7168 "dev": true,
7169 "license": "ISC",
7170 "dependencies": {
7171 "@jridgewell/trace-mapping": "^0.3.12",
7172 "@types/istanbul-lib-coverage": "^2.0.1",
7173 "convert-source-map": "^2.0.0"
7174 },
7175 "engines": {
7176 "node": ">=10.12.0"
7177 }
7178 },
7179 "node_modules/vary": {
7180 "version": "1.1.2",
7181 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
7182 "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
7183 "devOptional": true,
7184 "license": "MIT",
7185 "engines": {
7186 "node": ">= 0.8"
7187 }
7188 },
7189 "node_modules/vlq": {
7190 "version": "1.0.1",
7191 "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
7192 "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==",
7193 "license": "MIT"
7194 },
7195 "node_modules/walker": {
7196 "version": "1.0.8",
7197 "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
7198 "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
7199 "license": "Apache-2.0",
7200 "dependencies": {
7201 "makeerror": "1.0.12"
7202 }
7203 },
7204 "node_modules/wcwidth": {
7205 "version": "1.0.1",
7206 "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
7207 "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
7208 "devOptional": true,
7209 "license": "MIT",
7210 "dependencies": {
7211 "defaults": "^1.0.3"
7212 }
7213 },
7214 "node_modules/whatwg-fetch": {
7215 "version": "3.6.20",
7216 "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
7217 "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
7218 "license": "MIT"
7219 },
7220 "node_modules/which": {
7221 "version": "2.0.2",
7222 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
7223 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
7224 "license": "ISC",
7225 "dependencies": {
7226 "isexe": "^2.0.0"
7227 },
7228 "bin": {
7229 "node-which": "bin/node-which"
7230 },
7231 "engines": {
7232 "node": ">= 8"
7233 }
7234 },
7235 "node_modules/which-module": {
7236 "version": "2.0.1",
7237 "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
7238 "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
7239 "devOptional": true,
7240 "license": "ISC"
7241 },
7242 "node_modules/which-runtime": {
7243 "version": "1.4.0",
7244 "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.4.0.tgz",
7245 "integrity": "sha512-0ugbP4CJW4e2D20jvEcC4973dCgIaHI4Rw1PT+26U9zEve7FyYdWAIwUnoeOYvoCfn+wXHoHTKb1KhkYlb60Pw==",
7246 "dev": true,
7247 "license": "Apache-2.0"
7248 },
7249 "node_modules/wrap-ansi": {
7250 "version": "7.0.0",
7251 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
7252 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
7253 "license": "MIT",
7254 "dependencies": {
7255 "ansi-styles": "^4.0.0",
7256 "string-width": "^4.1.0",
7257 "strip-ansi": "^6.0.0"
7258 },
7259 "engines": {
7260 "node": ">=10"
7261 },
7262 "funding": {
7263 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
7264 }
7265 },
7266 "node_modules/wrap-ansi/node_modules/strip-ansi": {
7267 "version": "6.0.1",
7268 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
7269 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
7270 "license": "MIT",
7271 "dependencies": {
7272 "ansi-regex": "^5.0.1"
7273 },
7274 "engines": {
7275 "node": ">=8"
7276 }
7277 },
7278 "node_modules/ws": {
7279 "version": "6.2.6",
7280 "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.6.tgz",
7281 "integrity": "sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==",
7282 "devOptional": true,
7283 "license": "MIT",
7284 "dependencies": {
7285 "async-limiter": "~1.0.0"
7286 }
7287 },
7288 "node_modules/xml-naming": {
7289 "version": "0.3.0",
7290 "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz",
7291 "integrity": "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==",
7292 "devOptional": true,
7293 "funding": [
7294 {
7295 "type": "github",
7296 "url": "https://github.com/sponsors/NaturalIntelligence"
7297 }
7298 ],
7299 "license": "MIT",
7300 "engines": {
7301 "node": ">=16.0.0"
7302 }
7303 },
7304 "node_modules/y18n": {
7305 "version": "5.0.8",
7306 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
7307 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
7308 "license": "ISC",
7309 "engines": {
7310 "node": ">=10"
7311 }
7312 },
7313 "node_modules/yallist": {
7314 "version": "3.1.1",
7315 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
7316 "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
7317 "license": "ISC"
7318 },
7319 "node_modules/yaml": {
7320 "version": "2.9.1",
7321 "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz",
7322 "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==",
7323 "license": "ISC",
7324 "bin": {
7325 "yaml": "bin.mjs"
7326 },
7327 "engines": {
7328 "node": ">= 14.6"
7329 },
7330 "funding": {
7331 "url": "https://github.com/sponsors/eemeli"
7332 }
7333 },
7334 "node_modules/yargs": {
7335 "version": "17.7.3",
7336 "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
7337 "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
7338 "license": "MIT",
7339 "dependencies": {
7340 "cliui": "^8.0.1",
7341 "escalade": "^3.1.1",
7342 "get-caller-file": "^2.0.5",
7343 "require-directory": "^2.1.1",
7344 "string-width": "^4.2.3",
7345 "y18n": "^5.0.5",
7346 "yargs-parser": "^21.1.1"
7347 },
7348 "engines": {
7349 "node": ">=12"
7350 }
7351 },
7352 "node_modules/yargs-parser": {
7353 "version": "21.1.1",
7354 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
7355 "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
7356 "license": "ISC",
7357 "engines": {
7358 "node": ">=12"
7359 }
7360 },
7361 "node_modules/yocto-queue": {
7362 "version": "0.1.0",
7363 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
7364 "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
7365 "devOptional": true,
7366 "license": "MIT",
7367 "engines": {
7368 "node": ">=10"
7369 },
7370 "funding": {
7371 "url": "https://github.com/sponsors/sindresorhus"
7372 }
7373 }
7374 }
7375}
android/package.json +38 -0
……@@ -0,0 +1,38 @@
1{
2 "name": "cthuloid-android",
3 "version": "0.1.0",
4 "description": "Cthuloid Lights for Android: the cthuloid-web controller in a bare-kit worklet, its page in a WebView.",
5 "type": "module",
6 "private": true,
7 "scripts": {
8 "gen:assets": "bare node_modules/cthuloid-web/scripts/gen-assets-cli.js",
9 "pack:worklet": "bare-pack --preset android --out android/app/src/main/assets/worklet.bundle lib/worklet.js",
10 "stage:addons": "node scripts/stage-addons.mjs",
11 "prebuild:android": "npm run gen:assets && npm run pack:worklet && npm run stamp:worklet && npm run stage:addons",
12 "test": "brittle-bare test/*.test.js",
13 "stamp:worklet": "node -e \"require('fs').writeFileSync('android/app/src/main/assets/worklet.bundle.stamp', String(Date.now()))\""
14 },
15 "dependencies": {
16 "bare-fs": "^4.8.1",
17 "bare-path": "^3.1.2",
18 "cthuloid-web": "file:../webui",
19 "react": "^19.2.8",
20 "react-native": "^0.86.2",
21 "react-native-bare-kit": "0.14.5",
22 "react-native-fs": "^2.20.0",
23 "react-native-webview": "^14.0.1"
24 },
25 "devDependencies": {
26 "@react-native-community/cli": "^20.2.0",
27 "@react-native/babel-preset": "^0.86.2",
28 "@react-native/metro-config": "^0.86.2",
29 "bare-link": "*",
30 "bare-pack": "*",
31 "brittle": "4.1.1"
32 },
33 "overrides": {
34 "bare-type": "1.1.1",
35 "bare-structured-clone": "1.6.0",
36 "bare-assert": "1.2.0"
37 }
38}
android/scripts/stage-addons.mjs +201 -0
……@@ -0,0 +1,201 @@
1// Adapted from favela-surface-android/scripts/stage-addons.mjs (2026-10-02): the loader-bundle union
2// and the apk-addons.json asset are removed (they serve favela's OTA, which v1 does not have);
3// staging, the demanded-addon check and the ELF NEEDED keep-list are unchanged.
4// Stage exactly the native addons the packed worklet bundle DEMANDS — no more.
5//
6// ⛔ WHY THIS EXISTS: bare-link walks the PACKAGE graph (every dependency whose package.json says
7// `addon: true`), while bare-pack resolves the MODULE graph reachable from lib/node.js. Those are not
8// the same set, and the difference is not small: measured on 0.0.1, bare-link staged 61 arm64 libs
9// while the bundle demanded 40. The 21 extra were 50 MB of APK — including four stale rocksdb-native
10// versions (3.15.0, 3.15.2, 3.16.0, 3.17.1) reached only through the symlinked sibling checkouts,
11// which each carry their own independently-installed node_modules. The bundle itself was already
12// clean: favela-android's `overrides` pin one rocksdb, so only 3.17.2 is reachable from the entry.
13//
14// So the fix is NOT to re-point the pack at a deduped tree — the pack was never the problem. It is to
15// stop shipping addons nothing loads.
16//
17// THE BUNDLE IS THE CONTRACT. Its header names each addon as `linked:lib<name>.<version>.so`, and at
18// runtime bare-kit dlopen's exactly those. Anything staged beyond that list is dead weight; anything
19// missing from it is a dlopen failure on device. Deriving the set from the bundle means it cannot
20// drift as dependencies move — a hardcoded exclude list would go stale silently, which is the failure
21// mode worth designing against.
22//
23// ⛔ THIS SCRIPT DOES NOT PRUNE, AND MUST NOT. bare-kit's own android/build.gradle declares
24// task link(type: Exec) { commandLine "node", "link.mjs" }
25// preBuild.dependsOn link
26// so gradle re-stages all four hosts before EVERY build. Anything deleted here is restored before
27// packaging — measured: pruning to 40 libs produced a byte-identical APK. The exclusion therefore
28// lives at packaging time, in app/build.gradle's jniLibs.excludes, where nothing can restage behind
29// it. What this script does is populate the dir (so build.gradle can enumerate it at configure time)
30// and FAIL FAST if the bundle demands an addon that has no prebuild.
31//
32// Run AFTER `npm run pack:worklet` (it reads the bundle) and BEFORE the gradle build. Idempotent.
33import fs from 'fs'
34import path from 'path'
35import { fileURLToPath } from 'url'
36import link from 'bare-link'
37
38const root = path.join(path.dirname(fileURLToPath(import.meta.url)), '..')
39// ⚠ THIS COMMENT USED TO SAY app/worklet.bundle, AND IT IS NOW WRONG. The Metro-asset route it
40// describes never worked: `import bundle from './worklet.bundle'` yields Metro's numeric ASSET ID, not
41// bytes, so bare-kit rejected it with "Source must be a string or TypedArray. Received type number (1)".
42// The bundle now ships as an ANDROID asset and app/worklet.js reads its bytes at runtime.
43//
44// Reading the old path left this script staging against whatever stale bundle happened to sit there —
45// it reported "40 demanded" while the real bundle demanded 38, i.e. it was answering about a build that
46// no longer existed. Same stale-path class as the one fixed in android/app/build.gradle.
47const bundlePath = path.join(root, 'android/app/src/main/assets/worklet.bundle')
48
49// The WIRED staging dir is bare-kit's own module, not the app's: react-native-bare-kit/android/
50// build.gradle declares `jniLibs.srcDirs "src/main/addons"` relative to ITSELF. A previous
51// scripts/link-addons.mjs staged into android/app/src/main/addons, which no sourceSets references —
52// proven inert (APKs built with and without it were byte-identical). Do not "fix" this path back.
53const out = path.join(root, 'node_modules/react-native-bare-kit/android/src/main/addons')
54
55// arm64 only, matching abiFilters in app/build.gradle. An emulator build (spikes 3/5) wants
56// `--hosts android-x64` here AND the matching abiFilters change.
57const hostArg = process.argv.indexOf('--hosts')
58const hosts = hostArg === -1 ? ['android-arm64'] : process.argv[hostArg + 1].split(',')
59
60// Bundle layout (bare-bundle toBuffer): ASCII decimal header length, then that many bytes of JSON.
61// Parsed by hand so this script needs no dependency bare-pack does not already bring.
62function demandedAddons (file) {
63 const buf = fs.readFileSync(file)
64 const nl = buf.indexOf(10)
65 if (nl === -1) throw new Error('malformed bundle: no header length delimiter')
66 const len = parseInt(buf.subarray(0, nl).toString(), 10)
67 if (!Number.isInteger(len) || len <= 0) throw new Error('malformed bundle: bad header length')
68 const header = JSON.parse(buf.subarray(nl, nl + len).toString().trim())
69 if (!Array.isArray(header.addons)) throw new Error('malformed bundle: no addons list')
70 return new Set(header.addons.map((a) => a.replace(/^linked:/, '')))
71}
72
73if (!fs.existsSync(bundlePath)) {
74 console.error('no worklet bundle at ' + path.relative(root, bundlePath))
75 console.error('run `npm run pack:worklet` first — this script stages what that bundle demands.')
76 process.exit(1)
77}
78
79const want = demandedAddons(bundlePath)
80console.log(`bundle demands ${want.size} addon(s)`)
81
82for await (const _ of link(root, { hosts, out })) { /* bare-link stages the superset */ }
83
84// ⛔ VERIFY THE ABIs WE SHIP, NOT WHATEVER DIRECTORIES EXIST. This loop used to check every directory
85// under `out`, and `out` lives in node_modules, which the CI copies wholesale from the live checkout —
86// so it still holds armeabi-v7a/x86/x86_64 from before the arm64-only decision (62 .so each). Staging
87// only refreshes arm64, so the moment a demanded addon's version CHANGED, the stale dirs no longer had
88// the file under its new name and the build failed on three ABIs this APK does not contain:
89//
90// DEMANDED BUT NOT STAGED: armeabi-v7a/libbare-dns.2.2.0.so, x86/…, x86_64/…
91//
92// (bare-link names prebuilds lib<name>.<version>.so, so a dependency bump renames the file — which is
93// what turned dormant leftovers into a build failure on the bare-dns 2.1.4 → 2.2.0 upgrade.)
94//
95// abiFilters keeps those ABIs out of the APK regardless, so a missing .so there cannot dlopen-fail on
96// any device we ship to. Checking them was asserting on leftovers, not on the build.
97const ABI_FOR_HOST = {
98 'android-arm64': 'arm64-v8a',
99 'android-arm': 'armeabi-v7a',
100 'android-ia32': 'x86',
101 'android-x64': 'x86_64'
102}
103const shipped = new Set(hosts.map((h) => ABI_FOR_HOST[h] || h))
104
105// Report the split per ABI and verify the contract. Only .so files are considered — bare-kit also
106// consumes *.classes.jar from this dir.
107const missing = []
108
109// A shipped ABI with no directory at all is the failure this check exists for, and an empty `out`
110// would otherwise pass silently — the loop below would simply iterate over nothing.
111for (const abi of shipped) {
112 if (!fs.existsSync(path.join(out, abi))) missing.push(`${abi}/ (nothing staged for a shipped ABI)`)
113}
114
115for (const abi of fs.readdirSync(out)) {
116 const abiDir = path.join(out, abi)
117 if (!fs.statSync(abiDir).isDirectory()) continue
118
119 const present = new Set()
120 let excess = 0
121 let excessBytes = 0
122
123 for (const file of fs.readdirSync(abiDir)) {
124 if (!file.endsWith('.so')) continue
125 if (want.has(file)) { present.add(file); continue }
126 excess++
127 excessBytes += fs.statSync(path.join(abiDir, file)).size
128 }
129
130 // NB: excessBytes is the UNSTRIPPED on-disk size. AGP strips native debug symbols when packaging a
131 // release, so the APK saving is smaller than this — measured 50.8 MB staged vs 38.1 MB of actual
132 // arm64 APK entries. Quote the APK delta, not this, when reporting size wins.
133 console.log(
134 ` ${abi}: ${present.size}/${want.size} demanded staged, ` +
135 `${excess} excess excluded at packaging (${(excessBytes / 1048576).toFixed(1)} MB on disk, pre-strip)` +
136 (shipped.has(abi) ? '' : ' — NOT SHIPPED (abiFilters), not verified')
137 )
138
139 // A demanded addon with no staged .so is a dlopen failure at runtime, on a device, with no
140 // build-time signal. Fail here instead — but only for an ABI that reaches a device.
141 if (!shipped.has(abi)) continue
142 for (const w of want) if (!present.has(w)) missing.push(`${abi}/${w}`)
143}
144
145if (missing.length) {
146 console.error('\nDEMANDED BUT NOT STAGED — these would fail to dlopen on device:')
147 for (const m of missing) console.error(' ' + m)
148 process.exit(1)
149}
150
151// ── NATIVE DEPENDENCY CLOSURE ────────────────────────────────────────────────────────────────────────
152//
153// ⛔ THE BUNDLE HEADER IS NOT THE WHOLE TRUTH. It names the addons the JS MODULE graph demands. A
154// demanded addon can link against ANOTHER .so that no JS module imports — `libbare-fs.4.7.3.so` needs
155// `libbare-buffer.3.6.1.so`, which appears nowhere in the header because only 3.6.2 is imported from JS.
156//
157// android/app/build.gradle excluded every staged lib absent from the header, and its comment claimed
158// that "can shrink the APK but never break a load". It broke exactly one load: pairing died with
159// ADDON_NOT_FOUND on bare-fs 4.7.3 — resolution SUCCEEDED and produced the right linked name, then
160// dlopen failed on the missing transitive dependency, which bare reports as a resolution error.
161//
162// So the keep-set is the demanded addons PLUS the transitive closure of their ELF NEEDED entries. This
163// is written to a file gradle reads, rather than reimplementing ELF parsing in Groovy.
164import { execFileSync } from 'child_process'
165
166function neededOf (soPath) {
167 try {
168 const out = execFileSync('readelf', ['-d', soPath], { encoding: 'utf8' })
169 return [...out.matchAll(/NEEDED\).*?\[([^\]]+)\]/g)].map((m) => m[1])
170 } catch { return [] } // no readelf → keep everything (see below); never silently narrow the set
171}
172
173let readelfOk = true
174try { execFileSync('readelf', ['--version'], { stdio: 'ignore' }) } catch { readelfOk = false }
175
176const keepByAbi = {}
177for (const abi of fs.readdirSync(out)) {
178 const dir = path.join(out, abi)
179 if (!fs.statSync(dir).isDirectory()) continue
180 const present = new Set(fs.readdirSync(dir).filter((f) => f.endsWith('.so')))
181 const keep = new Set([...want].filter((d) => present.has(d)))
182 // Walk NEEDED transitively over what is actually staged.
183 const queue = [...keep]
184 while (queue.length) {
185 const so = queue.pop()
186 for (const dep of neededOf(path.join(dir, so))) {
187 if (present.has(dep) && !keep.has(dep)) { keep.add(dep); queue.push(dep) }
188 }
189 }
190 keepByAbi[abi] = [...keep].sort()
191 const extra = keepByAbi[abi].filter((k) => !want.has(k))
192 if (extra.length) console.log(` ${abi}: +${extra.length} kept as NATIVE dependencies of demanded addons — ${extra.join(', ')}`)
193}
194
195if (!readelfOk) {
196 console.warn(' ⚠ readelf unavailable — cannot compute the native closure. Writing NO keep-list so gradle keeps everything; a smaller APK is not worth an unloadable addon.')
197}
198const keepPath = path.join(root, 'android/app/addon-keep.json')
199fs.writeFileSync(keepPath, JSON.stringify(readelfOk ? keepByAbi : {}, null, 2) + '\n')
200console.log(' keep-list ->', path.relative(root, keepPath))
201
android/scripts/verify-apk-addons.mjs +105 -0
……@@ -0,0 +1,105 @@
1// Copied from favela-surface-android/scripts/verify-apk-addons.mjs (2026-10-02), unchanged.
2// Verify the BUILT APK, not the intent to build it.
3//
4// ⛔ WHY THIS EXISTS. Every other check in this repo asks whether the right decision was made:
5// stage-addons.mjs asserts the demanded set is staged and writes a keep-list that includes the
6// transitive ELF closure; app/build.gradle excludes what the keep-list omits. Both reported success on
7// 0.0.32 and 0.0.33 — "58/58 demanded staged", "+3 kept as NATIVE dependencies", "61 kept, 10
8// excluded" — and the APK they produced could not boot:
9//
10// ADDON_NOT_FOUND: Cannot find addon '.' imported from .../hyper-proto-peer/node_modules/bare-signals/binding.js
11// Candidates:
12// - linked:libbare-signals.4.2.0.so
13//
14// The candidate resolved. `libbare-signals.4.2.0.so` was in the APK. It declares
15// `NEEDED libbare-os.3.8.7.so`, that file was NOT in the APK, dlopen failed on the missing dependency,
16// and bare reports a failed load as a failed resolution. The app crash-looped on its own bundle, on a
17// handset, where there is no adb and no UI left to say why.
18//
19// The keep-list HAD libbare-os.3.8.7.so. build.gradle dropped it anyway, because it collected excluded
20// names into one flat set across all four ABIs and excluded them as `**/<name>` — so a library arm64
21// keeps and x86 does not is excluded from arm64 too. Nothing that inspects a decision could have caught
22// that: the decision was right and the packaging disagreed with it.
23//
24// So this reads the artifact. It is the last step between a build and a phone.
25//
26// ⚠ NO ALLOWLIST OF SYSTEM LIBRARIES, deliberately — one would go stale silently, which is the failure
27// mode this repo keeps designing against. Both rules below are grounded in files that exist:
28//
29// 1. A NEEDED entry naming a file that IS staged in bare-kit's addons dir but is NOT in the APK.
30// That is a packaging error, exactly the one above. libc.so and friends are not in that dir, so
31// they cannot trip it.
32// 2. A NEEDED entry that is in neither, and carries a bare-link version soname (`lib<x>.1.2.3.so`).
33// That is an addon nothing ever staged. No platform library is named that way.
34//
35// Usage: node scripts/verify-apk-addons.mjs <apk> [--abi arm64-v8a]
36import fs from 'fs'
37import os from 'os'
38import path from 'path'
39import { execFileSync } from 'child_process'
40import { fileURLToPath } from 'url'
41
42const root = path.join(path.dirname(fileURLToPath(import.meta.url)), '..')
43const apk = process.argv[2]
44const abiArg = process.argv.indexOf('--abi')
45const abi = abiArg === -1 ? 'arm64-v8a' : process.argv[abiArg + 1]
46
47if (!apk || !fs.existsSync(apk)) {
48 console.error('usage: node scripts/verify-apk-addons.mjs <apk> [--abi arm64-v8a]')
49 process.exit(1)
50}
51
52// The staging dir bare-kit packages FROM — the population this APK was drawn out of. A name present
53// here and absent from the APK was removed by packaging, which is rule 1.
54const stagedDir = path.join(root, 'node_modules/react-native-bare-kit/android/src/main/addons', abi)
55const staged = fs.existsSync(stagedDir)
56 ? new Set(fs.readdirSync(stagedDir).filter((f) => f.endsWith('.so')))
57 : new Set()
58
59const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'verify-apk-addons-'))
60try {
61 execFileSync('unzip', ['-o', '-q', apk, `lib/${abi}/*`, '-d', tmp], { stdio: 'inherit' })
62} catch {
63 console.error(`no lib/${abi}/ entries in ${path.basename(apk)} — nothing to verify, which is itself wrong`)
64 process.exit(1)
65}
66
67const libDir = path.join(tmp, 'lib', abi)
68if (!fs.existsSync(libDir)) {
69 console.error(`no lib/${abi}/ in the APK`)
70 process.exit(1)
71}
72const present = new Set(fs.readdirSync(libDir).filter((f) => f.endsWith('.so')))
73
74// ⛔ readelf ABSENT MUST FAIL, not pass. stage-addons.mjs may keep everything when it cannot compute the
75// closure — a safe direction, because it over-ships. Here the safe direction is the opposite: a check
76// that cannot run has proven nothing, and saying so is the whole point of the file.
77try { execFileSync('readelf', ['--version'], { stdio: 'ignore' }) } catch {
78 console.error('readelf unavailable — cannot verify the APK\'s native closure, and an unverified APK is what this step exists to stop')
79 process.exit(1)
80}
81
82const VERSIONED = /^lib.+\.\d+\.\d+\.\d+\.so$/
83
84const broken = []
85for (const so of [...present].sort()) {
86 const out = execFileSync('readelf', ['-d', path.join(libDir, so)], { encoding: 'utf8' })
87 for (const m of out.matchAll(/NEEDED\).*?\[([^\]]+)\]/g)) {
88 const dep = m[1]
89 if (present.has(dep)) continue
90 if (staged.has(dep)) broken.push({ so, dep, why: 'staged for this build but excluded from the APK' })
91 else if (VERSIONED.test(dep)) broken.push({ so, dep, why: 'never staged — no prebuild for it anywhere' })
92 }
93}
94
95console.log(`verify-apk-addons: ${present.size} native libs in lib/${abi}/, ${staged.size} staged`)
96
97if (broken.length) {
98 console.error('\nUNSATISFIED NEEDED — these WILL fail to dlopen on a device:')
99 for (const b of broken) console.error(` ${b.so} NEEDS ${b.dep} — ${b.why}`)
100 console.error('\nbare reports a failed dlopen as ADDON_NOT_FOUND on the addon that pulled it in, so the')
101 console.error('symptom on the handset is a crash loop naming the WRONG library. Do not ship this APK.')
102 process.exit(1)
103}
104
105console.log(' every NEEDED entry is satisfied inside the APK')
android/test/worklet.test.js +43 -0
……@@ -0,0 +1,43 @@
1// The worklet entry, run under desktop Bare (no BareKit): it must serve the page
2// from the EMBEDDED assets and the controller API, and reuse its port on restart.
3import test from 'brittle'
4import http from 'bare-http1'
5import fs from 'bare-fs'
6import os from 'bare-os'
7import path from 'bare-path'
8
9globalThis.CTHULOID_NO_AUTOSTART = true
10const { start } = await import('../lib/worklet.js')
11
12const STATIC = path.join(path.dirname(new URL(import.meta.url).pathname), '..', '..', 'webui', 'static')
13
14function get (url) {
15 return new Promise((resolve, reject) => {
16 http.request(url, (res) => {
17 const chunks = []
18 res.on('data', (d) => chunks.push(d))
19 res.on('end', () => resolve({ status: res.statusCode, body: Buffer.concat(chunks).toString() }))
20 }).on('error', reject).end()
21 })
22}
23
24test('serves the page from embedded assets and the API', async (t) => {
25 const storage = path.join(os.tmpdir(), 'cthuloid-worklet-' + Date.now())
26 const { app, url } = await start(storage)
27 t.ok(/^http:\/\/127\.0\.0\.1:\d+\/$/.test(url), url)
28 const page = await get(url)
29 t.is(page.status, 200)
30 t.is(page.body, fs.readFileSync(path.join(STATIC, 'index.html'), 'utf8'), 'page = static/index.html')
31 const st = await get(url + 'api/state')
32 t.is(JSON.parse(st.body).connected, false, 'starts disconnected')
33 await app.close()
34})
35
36test('a restart reuses the port, so the WebView URL survives', async (t) => {
37 const storage = path.join(os.tmpdir(), 'cthuloid-worklet-' + Date.now() + '-r')
38 const a = await start(storage)
39 await a.app.close()
40 const b = await start(storage)
41 t.is(b.url, a.url)
42 await b.app.close()
43})