this repo has no description

lint/prettier

+2 -5
.eslintrc.js
··· 1 - module.exports = { 2 - root: true, 3 - extends: ['universe/native', 'universe/web'], 4 - ignorePatterns: ['build'], 5 - }; 1 + // @generated by expo-module-scripts 2 + module.exports = require('expo-module-scripts/eslintrc.base.js')
+8
babel.config.js
··· 1 + module.exports = { 2 + overrides: [ 3 + { 4 + include: /\/node_modules\//, 5 + presets: ['module:@react-native/babel-preset'], 6 + }, 7 + ], 8 + }
+39
eslint.config.mjs
··· 1 + import { fixupConfigRules } from '@eslint/compat' 2 + import babelParser from '@babel/eslint-parser' 3 + import { FlatCompat } from '@eslint/eslintrc' 4 + import js from '@eslint/js' 5 + import prettier from 'eslint-plugin-prettier' 6 + import { defineConfig } from 'eslint/config' 7 + import path from 'node:path' 8 + import { fileURLToPath } from 'node:url' 9 + 10 + const __filename = fileURLToPath(import.meta.url) 11 + const __dirname = path.dirname(__filename) 12 + const compat = new FlatCompat({ 13 + baseDirectory: __dirname, 14 + recommendedConfig: js.configs.recommended, 15 + allConfig: js.configs.all, 16 + }) 17 + 18 + export default defineConfig([ 19 + { 20 + extends: fixupConfigRules(compat.extends('@react-native', 'prettier')), 21 + plugins: { prettier }, 22 + rules: { 23 + 'react/react-in-jsx-scope': 'off', 24 + 'prettier/prettier': [ 25 + 'error', 26 + { 27 + quoteProps: 'consistent', 28 + singleQuote: true, 29 + tabWidth: 2, 30 + trailingComma: 'es5', 31 + useTabs: false, 32 + }, 33 + ], 34 + }, 35 + }, 36 + { 37 + ignores: ['node_modules/', 'lib/'], 38 + }, 39 + ])
+78 -78
example/App.tsx
··· 1 - import React from "react"; 2 - import { Text, View, StyleSheet, Button, Alert, TextInput } from "react-native"; 1 + import React from 'react' 2 + import { Text, View, StyleSheet, Button, Alert, TextInput } from 'react-native' 3 3 import { 4 4 digest, 5 5 getRandomValues, 6 6 createJwt, 7 7 generateJwk, 8 8 ReactNativeOAuthClient, 9 - } from "expo-atproto-auth"; 10 - import { OAuthSession } from "@atproto/oauth-client"; 11 - import { Agent } from "@atproto/api"; 12 - import type { ReactNativeKey } from "expo-atproto-auth"; 13 - import * as Browser from "expo-web-browser"; 9 + } from 'expo-atproto-auth' 10 + import { OAuthSession } from '@atproto/oauth-client' 11 + import { Agent } from '@atproto/api' 12 + import type { ReactNativeKey } from 'expo-atproto-auth' 13 + import * as Browser from 'expo-web-browser' 14 14 15 15 const client = new ReactNativeOAuthClient({ 16 16 clientMetadata: { 17 - client_id: "https://hailey.at/oauth-client-metadata.json", 18 - client_name: "React Native OAuth Client Demo", 19 - client_uri: "https://hailey.at", 20 - redirect_uris: ["at.hailey:/auth/callback"], 21 - scope: "atproto transition:generic", 22 - token_endpoint_auth_method: "none", 23 - response_types: ["code"], 24 - grant_types: ["authorization_code", "refresh_token"], 25 - application_type: "native", 17 + client_id: 'https://hailey.at/oauth-client-metadata.json', 18 + client_name: 'React Native OAuth Client Demo', 19 + client_uri: 'https://hailey.at', 20 + redirect_uris: ['at.hailey:/auth/callback'], 21 + scope: 'atproto transition:generic', 22 + token_endpoint_auth_method: 'none', 23 + response_types: ['code'], 24 + grant_types: ['authorization_code', 'refresh_token'], 25 + application_type: 'native', 26 26 dpop_bound_access_tokens: true, 27 27 }, 28 - handleResolver: "https://bsky.social", 29 - }); 28 + handleResolver: 'https://bsky.social', 29 + }) 30 30 31 31 export default function App() { 32 - const [values, setValues] = React.useState<Uint8Array>(); 33 - const [sha, setSha] = React.useState<Uint8Array>(); 34 - const [jwt, setJwt] = React.useState<string>(); 32 + const [values, setValues] = React.useState<Uint8Array>() 33 + const [sha, setSha] = React.useState<Uint8Array>() 34 + const [jwt, setJwt] = React.useState<string>() 35 35 const [privateJwk, setPrivateJwk] = React.useState< 36 36 ReactNativeKey | undefined 37 - >(); 38 - const [session, setSession] = React.useState<OAuthSession>(); 39 - const [input, setInput] = React.useState<string>(); 40 - const [agent, setAgent] = React.useState<Agent>(); 37 + >() 38 + const [session, setSession] = React.useState<OAuthSession>() 39 + const [input, setInput] = React.useState<string>() 40 + const [agent, setAgent] = React.useState<Agent>() 41 41 42 42 return ( 43 43 <View style={styles.container}> 44 - <Text>Current Account: {session ? session.did : "No Account"}</Text> 44 + <Text>Current Account: {session ? session.did : 'No Account'}</Text> 45 45 <Text>Values: {values}</Text> 46 46 <Button 47 47 title="Generate Random Values" 48 48 onPress={() => { 49 - const newValues = getRandomValues(400); 50 - setValues(newValues); 49 + const newValues = getRandomValues(400) 50 + setValues(newValues) 51 51 }} 52 52 /> 53 53 <Text>SHA: {sha}</Text> ··· 55 55 title="SHA from values" 56 56 onPress={() => { 57 57 if (!values) { 58 - return; 58 + return 59 59 } 60 - let newSha: Uint8Array | undefined; 60 + let newSha: Uint8Array | undefined 61 61 try { 62 - newSha = digest(values, "sha256"); 62 + newSha = digest(values, 'sha256') 63 63 } catch (e: any) { 64 - Alert.alert("Error", e.toString()); 65 - return; 64 + Alert.alert('Error', e.toString()) 65 + return 66 66 } 67 - setSha(newSha); 67 + setSha(newSha) 68 68 }} 69 69 /> 70 70 <Text>JWT: {jwt}</Text> ··· 72 72 title="Create JWT" 73 73 onPress={() => { 74 74 if (!privateJwk) { 75 - return; 75 + return 76 76 } 77 77 78 - let newJwt: string | undefined; 78 + let newJwt: string | undefined 79 79 try { 80 - newJwt = createJwt("", "", privateJwk); 80 + newJwt = createJwt('', '', privateJwk) 81 81 } catch (e: any) { 82 - Alert.alert("Error", e.toString()); 83 - return; 82 + Alert.alert('Error', e.toString()) 83 + return 84 84 } 85 - setJwt(newJwt); 85 + setJwt(newJwt) 86 86 }} 87 87 /> 88 88 <Text>Priv Key: {privateJwk?.kid}</Text> 89 89 <Button 90 90 title="Create JWK" 91 91 onPress={() => { 92 - let newJwk: ReactNativeKey | undefined; 92 + let newJwk: ReactNativeKey | undefined 93 93 try { 94 - newJwk = generateJwk("ES256"); 94 + newJwk = generateJwk('ES256') 95 95 } catch (e: any) { 96 - Alert.alert("Error", e.toString()); 97 - return; 96 + Alert.alert('Error', e.toString()) 97 + return 98 98 } 99 - setPrivateJwk(newJwk); 99 + setPrivateJwk(newJwk) 100 100 }} 101 101 /> 102 102 ··· 109 109 <Button 110 110 title="Open Sign In" 111 111 onPress={async () => { 112 - let url: URL; 112 + let url: URL 113 113 try { 114 - url = await client.authorize(input ?? ""); 114 + url = await client.authorize(input ?? '') 115 115 } catch (e: any) { 116 - Alert.alert("Error", e.toString()); 117 - return; 116 + Alert.alert('Error', e.toString()) 117 + return 118 118 } 119 119 const res = await Browser.openAuthSessionAsync( 120 120 url.toString(), 121 - "at.hailey://auth/callback", 122 - ); 121 + 'at.hailey://auth/callback' 122 + ) 123 123 124 - if (res.type === "success") { 125 - const resUrl = new URL(res.url); 124 + if (res.type === 'success') { 125 + const resUrl = new URL(res.url) 126 126 try { 127 - const params = new URLSearchParams(resUrl.hash.substring(1)); 128 - const callbackRes = await client.callback(params); 129 - setSession(callbackRes.session); 127 + const params = new URLSearchParams(resUrl.hash.substring(1)) 128 + const callbackRes = await client.callback(params) 129 + setSession(callbackRes.session) 130 130 131 - const agent = new Agent(callbackRes.session); 132 - setAgent(agent); 131 + const newAgent = new Agent(callbackRes.session) 132 + setAgent(newAgent) 133 133 } catch (e: any) { 134 - Alert.alert("Error", e.toString()); 134 + Alert.alert('Error', e.toString()) 135 135 } 136 136 } else { 137 - Alert.alert("Error", `Received non-success status: ${res.type}`); 137 + Alert.alert('Error', `Received non-success status: ${res.type}`) 138 138 } 139 139 }} 140 140 /> ··· 143 143 title="Restore from DID" 144 144 onPress={async () => { 145 145 try { 146 - const restoreRes = await client.restore(input ?? ""); 147 - setSession(restoreRes); 146 + const restoreRes = await client.restore(input ?? '') 147 + setSession(restoreRes) 148 148 149 - const agent = new Agent(restoreRes); 150 - setAgent(agent); 149 + const newAgent = new Agent(restoreRes) 150 + setAgent(newAgent) 151 151 } catch (e: any) { 152 - Alert.alert("Error", e.toString()); 152 + Alert.alert('Error', e.toString()) 153 153 } 154 154 }} 155 155 /> ··· 159 159 onPress={async () => { 160 160 try { 161 161 const res = await agent?.getProfile({ 162 - actor: session?.did ?? "", 163 - }); 162 + actor: session?.did ?? '', 163 + }) 164 164 Alert.alert( 165 - "Profile", 166 - `Display Name: ${res?.data.displayName}, Bio: ${res?.data.description}`, 167 - ); 165 + 'Profile', 166 + `Display Name: ${res?.data.displayName}, Bio: ${res?.data.description}` 167 + ) 168 168 } catch (e: any) { 169 - Alert.alert("Error", e.toString()); 169 + Alert.alert('Error', e.toString()) 170 170 } 171 171 }} 172 172 disabled={!agent} ··· 177 177 onPress={async () => { 178 178 try { 179 179 await agent?.post({ 180 - text: "Test post from Expo Atproto Auth example", 181 - }); 180 + text: 'Test post from Expo Atproto Auth example', 181 + }) 182 182 } catch (e: any) { 183 - Alert.alert("Error", e.toString()); 183 + Alert.alert('Error', e.toString()) 184 184 } 185 185 }} 186 186 disabled={!agent} 187 187 /> 188 188 </View> 189 - ); 189 + ) 190 190 } 191 191 192 192 const styles = StyleSheet.create({ 193 193 container: { 194 194 flex: 1, 195 - alignItems: "center", 196 - justifyContent: "center", 195 + alignItems: 'center', 196 + justifyContent: 'center', 197 197 }, 198 - }); 198 + })
+3 -3
example/babel.config.js
··· 1 1 module.exports = function (api) { 2 - api.cache(true); 2 + api.cache(true) 3 3 return { 4 4 presets: ['babel-preset-expo'], 5 - }; 6 - }; 5 + } 6 + }
+4 -4
example/index.ts
··· 1 - import "./polyfill"; 1 + import './polyfill' 2 2 3 - import { registerRootComponent } from "expo"; 3 + import { registerRootComponent } from 'expo' 4 4 5 - import App from "./App"; 5 + import App from './App' 6 6 7 7 // const App = require("./App").default; 8 8 9 9 // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 10 10 // It also ensures that whether you load the app in Expo Go or in a native build, 11 11 // the environment is set up appropriately 12 - registerRootComponent(App); 12 + registerRootComponent(App)
+14 -14
example/metro.config.js
··· 1 1 // Learn more https://docs.expo.io/guides/customizing-metro 2 - const { getDefaultConfig } = require("expo/metro-config"); 3 - const path = require("path"); 2 + const { getDefaultConfig } = require('expo/metro-config') 3 + const path = require('path') 4 4 5 - const config = getDefaultConfig(__dirname); 5 + const config = getDefaultConfig(__dirname) 6 6 7 7 // npm v7+ will install ../node_modules/react and ../node_modules/react-native because of peerDependencies. 8 8 // To prevent the incompatible react-native between ./node_modules/react-native and ../node_modules/react-native, 9 9 // excludes the one from the parent folder when bundling. 10 10 config.resolver.blockList = [ 11 11 ...Array.from(config.resolver.blockList ?? []), 12 - new RegExp(path.resolve("..", "node_modules", "react")), 13 - new RegExp(path.resolve("..", "node_modules", "react-native")), 14 - ]; 12 + new RegExp(path.resolve('..', 'node_modules', 'react')), 13 + new RegExp(path.resolve('..', 'node_modules', 'react-native')), 14 + ] 15 15 16 16 config.resolver.nodeModulesPaths = [ 17 - path.resolve(__dirname, "./node_modules"), 18 - path.resolve(__dirname, "../node_modules"), 19 - ]; 17 + path.resolve(__dirname, './node_modules'), 18 + path.resolve(__dirname, '../node_modules'), 19 + ] 20 20 21 21 config.resolver.extraNodeModules = { 22 - "expo-atproto-auth": "..", 23 - }; 22 + 'expo-atproto-auth': '..', 23 + } 24 24 25 - config.watchFolders = [path.resolve(__dirname, "..")]; 25 + config.watchFolders = [path.resolve(__dirname, '..')] 26 26 27 27 config.transformer.getTransformOptions = async () => ({ 28 28 transform: { 29 29 experimentalImportSupport: false, 30 30 inlineRequires: true, 31 31 }, 32 - }); 32 + }) 33 33 34 - module.exports = config; 34 + module.exports = config
+17 -17
example/polyfill.ts
··· 1 - import "react-native-url-polyfill/auto"; 2 - import "event-target-polyfill"; 3 - import "abortcontroller-polyfill/dist/polyfill-patch-fetch"; 4 - export {}; 1 + import 'react-native-url-polyfill/auto' 2 + import 'event-target-polyfill' 3 + import 'abortcontroller-polyfill/dist/polyfill-patch-fetch' 4 + export {} 5 5 6 6 /** 7 7 https://github.com/MaxArt2501/base64-js ··· 9 9 Copyright (c) 2014 MaxArt2501 10 10 */ 11 11 12 - const b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 12 + const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' 13 13 // Regular expression to check formal correctness of base64 encoded strings 14 14 const b64re = 15 - /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; 15 + /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/ 16 16 17 17 globalThis.atob = (str: string): string => { 18 18 // atob can work with strings with whitespaces, even inside the encoded part, 19 19 // but only \t, \n, \f, \r and ' ', which can be stripped. 20 - str = String(str).replace(/[\t\n\f\r ]+/g, ""); 20 + str = String(str).replace(/[\t\n\f\r ]+/g, '') 21 21 if (!b64re.test(str)) { 22 22 throw new TypeError( 23 - "Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.", 24 - ); 23 + "Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded." 24 + ) 25 25 } 26 26 27 27 // Adding the padding if missing, for simplicity 28 - str += "==".slice(2 - (str.length & 3)); 28 + str += '=='.slice(2 - (str.length & 3)) 29 29 var bitmap, 30 - result = "", 30 + result = '', 31 31 r1, 32 32 r2, 33 - i = 0; 33 + i = 0 34 34 for (; i < str.length; ) { 35 35 bitmap = 36 36 (b64.indexOf(str.charAt(i++)) << 18) | 37 37 (b64.indexOf(str.charAt(i++)) << 12) | 38 38 ((r1 = b64.indexOf(str.charAt(i++))) << 6) | 39 - (r2 = b64.indexOf(str.charAt(i++))); 39 + (r2 = b64.indexOf(str.charAt(i++))) 40 40 41 41 result += 42 42 r1 === 64 ··· 46 46 : String.fromCharCode( 47 47 (bitmap >> 16) & 255, 48 48 (bitmap >> 8) & 255, 49 - bitmap & 255, 50 - ); 49 + bitmap & 255 50 + ) 51 51 } 52 - return result; 53 - }; 52 + return result 53 + }
+6 -6
example/webpack.config.js
··· 1 - const createConfigAsync = require('@expo/webpack-config'); 2 - const path = require('path'); 1 + const createConfigAsync = require('@expo/webpack-config') 2 + const path = require('path') 3 3 4 4 module.exports = async (env, argv) => { 5 5 const config = await createConfigAsync( ··· 10 10 }, 11 11 }, 12 12 argv 13 - ); 13 + ) 14 14 config.resolve.modules = [ 15 15 path.resolve(__dirname, './node_modules'), 16 16 path.resolve(__dirname, '../node_modules'), 17 - ]; 17 + ] 18 18 19 - return config; 20 - }; 19 + return config 20 + }
+22 -4
package.json
··· 7 7 "scripts": { 8 8 "build": "expo-module build", 9 9 "clean": "expo-module clean", 10 - "lint": "expo-module lint", 10 + "typecheck": "tsc", 11 + "lint": "eslint \"**/*.{js,ts,tsx}\"", 11 12 "test": "expo-module test", 12 13 "prepare": "expo-module prepare", 13 14 "prepublishOnly": "expo-module prepublishOnly", ··· 30 31 "homepage": "https://github.com/haileyok/expo-atproto-auth#readme", 31 32 "devDependencies": { 32 33 "@atproto/oauth-client": "^0.5.1", 34 + "@eslint/compat": "^1.2.7", 35 + "@eslint/eslintrc": "^3.3.0", 36 + "@eslint/js": "^9.22.0", 37 + "@react-native/eslint-config": "^0.78.0", 33 38 "@types/react": "~19.0.0", 39 + "@typescript-eslint/eslint-plugin": "^7.18.0", 40 + "@typescript-eslint/parser": "^7.18.0", 41 + "eslint": "^9.22.0", 42 + "eslint-config-prettier": "^10.1.1", 43 + "eslint-plugin-prettier": "^5.2.3", 34 44 "expo": "~53.0.0", 35 45 "expo-module-scripts": "^4.1.9", 46 + "jest": "^29.7.0", 47 + "patch-package": "^8.0.0", 48 + "postinstall-postinstall": "^2.1.0", 49 + "prettier": "^3.0.3", 36 50 "react-native": "0.79.1", 37 51 "react-native-mmkv": "^3.3.0" 38 52 }, ··· 43 57 "react-native": "*", 44 58 "react-native-mmkv": "*" 45 59 }, 46 - "dependencies": { 47 - "patch-package": "^8.0.0", 48 - "postinstall-postinstall": "^2.1.0" 60 + "prettier": { 61 + "quoteProps": "consistent", 62 + "singleQuote": true, 63 + "tabWidth": 2, 64 + "trailingComma": "es5", 65 + "useTabs": false, 66 + "semi": false 49 67 } 50 68 }
+33 -33
src/ExpoAtprotoAuth.types.ts
··· 1 - import { JwtHeader } from "@atproto/oauth-client"; 2 - import type { StyleProp, ViewStyle } from "react-native"; 1 + import { JwtHeader } from '@atproto/oauth-client' 2 + import type { StyleProp, ViewStyle } from 'react-native' 3 3 4 4 export type JWK = { 5 - kty: string; 6 - use: "sig" | "enc" | undefined; 7 - crv: "P-256"; 8 - kid: string; 9 - x: string; 10 - y: string; 11 - d: string | undefined; 12 - alg: string; 13 - }; 5 + kty: string 6 + use: 'sig' | 'enc' | undefined 7 + crv: 'P-256' 8 + kid: string 9 + x: string 10 + y: string 11 + d: string | undefined 12 + alg: string 13 + } 14 14 15 15 export type VerifyOptions = { 16 - audience?: string; 17 - clockTolerance?: number; 18 - issuer?: string; 19 - maxTokenAge?: number; 20 - subject?: string; 21 - typ?: string; 22 - currentDate?: Date; 23 - requiredClaims?: string[]; 24 - }; 16 + audience?: string 17 + clockTolerance?: number 18 + issuer?: string 19 + maxTokenAge?: number 20 + subject?: string 21 + typ?: string 22 + currentDate?: Date 23 + requiredClaims?: string[] 24 + } 25 25 26 26 export type VerifyResponse = { 27 - payload: string; 28 - protectedHeader: JwtHeader; 29 - }; 27 + payload: string 28 + protectedHeader: JwtHeader 29 + } 30 30 31 31 export type OnLoadEventPayload = { 32 - url: string; 33 - }; 32 + url: string 33 + } 34 34 35 35 export type ExpoAtprotoAuthModuleEvents = { 36 - onChange: (params: ChangeEventPayload) => void; 37 - }; 36 + onChange: (params: ChangeEventPayload) => void 37 + } 38 38 39 39 export type ChangeEventPayload = { 40 - value: string; 41 - }; 40 + value: string 41 + } 42 42 43 43 export type ExpoAtprotoAuthViewProps = { 44 - url: string; 45 - onLoad: (event: { nativeEvent: OnLoadEventPayload }) => void; 46 - style?: StyleProp<ViewStyle>; 47 - }; 44 + url: string 45 + onLoad: (event: { nativeEvent: OnLoadEventPayload }) => void 46 + style?: StyleProp<ViewStyle> 47 + }
+9 -9
src/ExpoAtprotoAuthModule.ts
··· 1 - import { NativeModule, requireNativeModule } from "expo"; 1 + import { NativeModule, requireNativeModule } from 'expo' 2 2 3 - import { ExpoAtprotoAuthModuleEvents, JWK } from "./ExpoAtprotoAuth.types"; 4 - import { VerifyOptions, VerifyResult } from "@atproto/oauth-client"; 3 + import { ExpoAtprotoAuthModuleEvents, JWK } from './ExpoAtprotoAuth.types' 4 + import { VerifyOptions, VerifyResult } from '@atproto/oauth-client' 5 5 6 6 declare class ExpoAtprotoAuthModule extends NativeModule<ExpoAtprotoAuthModuleEvents> { 7 - digest(data: Uint8Array, algo: string): Uint8Array; 8 - getRandomValues(byteLength: number): Uint8Array; 9 - generatePrivateJwk(algorithim: string): JWK; 10 - createJwt(header: string, payload: string, jwk: JWK): string; 11 - verifyJwt(token: string, jwk: JWK, options: VerifyOptions): VerifyResult; 7 + digest(data: Uint8Array, algo: string): Uint8Array 8 + getRandomValues(byteLength: number): Uint8Array 9 + generatePrivateJwk(algorithim: string): JWK 10 + createJwt(header: string, payload: string, jwk: JWK): string 11 + verifyJwt(token: string, jwk: JWK, options: VerifyOptions): VerifyResult 12 12 } 13 13 14 14 // This call loads the native module object from the JSI. 15 - export default requireNativeModule<ExpoAtprotoAuthModule>("ExpoAtprotoAuth"); 15 + export default requireNativeModule<ExpoAtprotoAuthModule>('ExpoAtprotoAuth')
+4 -4
src/index.ts
··· 1 - export { default as NativeModule } from "./ExpoAtprotoAuthModule"; 2 - export * from "./ExpoAtprotoAuth.types"; 1 + export { default as NativeModule } from './ExpoAtprotoAuthModule' 2 + export * from './ExpoAtprotoAuth.types' 3 3 export { 4 4 generateJwk, 5 5 digest, ··· 7 7 getRandomValues, 8 8 verifyJwt, 9 9 ReactNativeKey, 10 - } from "./react-native-key"; 11 - export { ReactNativeOAuthClient } from "./react-native-oauth-client"; 10 + } from './react-native-key' 11 + export { ReactNativeOAuthClient } from './react-native-oauth-client'
+36 -37
src/react-native-key.ts
··· 5 5 type SignedJwt, 6 6 type VerifyOptions, 7 7 type VerifyResult, 8 - } from "@atproto/oauth-client"; 9 - import type { JWK } from "./ExpoAtprotoAuth.types"; 10 - import { default as NativeModule } from "./ExpoAtprotoAuthModule"; 8 + } from '@atproto/oauth-client' 9 + import type { JWK } from './ExpoAtprotoAuth.types' 10 + import { default as NativeModule } from './ExpoAtprotoAuthModule' 11 11 12 12 export function getRandomValues(byteLength: number): Uint8Array { 13 - return NativeModule.getRandomValues(byteLength); 13 + return NativeModule.getRandomValues(byteLength) 14 14 } 15 15 16 16 export function digest(data: Uint8Array, algorithim: string): Uint8Array { 17 - return NativeModule.digest(data, algorithim); 17 + return NativeModule.digest(data, algorithim) 18 18 } 19 19 20 20 export function isECKey(jwk: any): jwk is JWK { 21 - return jwk?.kty === "EC" && jwk.crv && jwk.y; 21 + return jwk?.kty === 'EC' && jwk.crv && jwk.y 22 22 } 23 23 24 24 export function createJwt( 25 25 header: string, 26 26 payload: string, 27 - key: ReactNativeKey, 27 + key: ReactNativeKey 28 28 ): string { 29 29 if (!key.privateJwk || !isECKey(key.privateJwk)) { 30 - throw new Error("Invalid key"); 30 + throw new Error('Invalid key') 31 31 } 32 - return NativeModule.createJwt(header, payload, key.privateJwk); 32 + return NativeModule.createJwt(header, payload, key.privateJwk) 33 33 } 34 34 35 35 export function verifyJwt( 36 36 token: string, 37 37 jwk: JWK, 38 - options: VerifyOptions, 38 + options: VerifyOptions 39 39 ): VerifyResult { 40 - return NativeModule.verifyJwt(token, jwk, options); 40 + return NativeModule.verifyJwt(token, jwk, options) 41 41 } 42 42 43 43 // @ts-expect-error 44 44 export class ReactNativeKey implements Key { 45 - #jwk: Readonly<JWK>; 45 + #jwk: Readonly<JWK> 46 46 47 47 constructor(jwk: Readonly<JWK>) { 48 - this.#jwk = jwk; 48 + this.#jwk = jwk 49 49 if (!isECKey(jwk)) { 50 - throw new Error("Invalid key type"); 50 + throw new Error('Invalid key type') 51 51 } 52 52 if (!jwk.use) { 53 - throw new Error(`Missing "use" parameter value`); 53 + throw new Error(`Missing "use" parameter value`) 54 54 } 55 55 } 56 56 57 57 get jwk(): Readonly<JWK> { 58 - return this.#jwk; 58 + return this.#jwk 59 59 } 60 60 61 61 get isPrivate() { 62 - return this.jwk.d !== undefined; 62 + return this.jwk.d !== undefined 63 63 } 64 64 65 65 get privateJwk(): JWK { 66 - return this.jwk; 66 + return this.jwk 67 67 } 68 68 69 69 get publicJwk() { 70 - if (this.isSymetric) return undefined; 71 - const { d, ...publicKey } = this.jwk; 72 - return publicKey as Readonly<JWK & { d?: never }>; 70 + if (this.isSymetric) return undefined 71 + // eslint-disable-next-line @typescript-eslint/no-unused-vars 72 + const { d, ...publicKey } = this.jwk 73 + return publicKey as Readonly<JWK & { d?: never }> 73 74 } 74 75 75 76 get use() { 76 - return this.jwk.use as NonNullable<"sig" | "enc" | undefined>; 77 + return this.jwk.use as NonNullable<'sig' | 'enc' | undefined> 77 78 } 78 79 79 80 get alg() { 80 - return this.jwk.alg; 81 + return this.jwk.alg 81 82 } 82 83 83 84 get kid() { 84 - return this.jwk.kid; 85 + return this.jwk.kid 85 86 } 86 87 87 88 get crv() { 88 - return this.jwk.crv; 89 + return this.jwk.crv 89 90 } 90 91 91 92 get algorithms() { 92 - return [this.jwk.alg]; 93 + return [this.jwk.alg] 93 94 } 94 95 95 96 get bareJwk() { ··· 98 99 crv: this.jwk.crv, 99 100 x: this.jwk.x, 100 101 y: this.jwk.y, 101 - }; 102 + } 102 103 } 103 104 104 105 get isSymetric() { 105 - return ( 106 - this.jwk.kty === "oct" && "k" in this.jwk && this.jwk.k !== undefined 107 - ); 106 + return this.jwk.kty === 'oct' && 'k' in this.jwk && this.jwk.k !== undefined 108 107 } 109 108 110 109 async createJwt(header: JwtHeader, payload: JwtPayload): Promise<SignedJwt> { 111 110 return createJwt( 112 111 JSON.stringify(header), 113 112 JSON.stringify(payload), 114 - this, 115 - ) as "${string}.${string}.${string}"; 113 + this 114 + ) as '${string}.${string}.${string}' 116 115 } 117 116 118 117 async verifyJwt<C extends string = never>( 119 118 token: SignedJwt, 120 - options?: VerifyOptions<C>, 119 + options?: VerifyOptions<C> 121 120 ): Promise<VerifyResult<C>> { 122 121 return verifyJwt( 123 122 token, 124 123 this.jwk, 125 - (options ?? {}) as VerifyOptions, 126 - ) as VerifyResult<C>; 124 + (options ?? {}) as VerifyOptions 125 + ) as VerifyResult<C> 127 126 } 128 127 } 129 128 130 129 export function generateJwk(algoritihim: string): ReactNativeKey { 131 - const privJwk = NativeModule.generatePrivateJwk(algoritihim); 132 - return new ReactNativeKey(privJwk); 130 + const privJwk = NativeModule.generatePrivateJwk(algoritihim) 131 + return new ReactNativeKey(privJwk) 133 132 }
+27 -27
src/react-native-oauth-client.ts
··· 5 5 type OAuthResponseMode, 6 6 atprotoLoopbackClientMetadata, 7 7 OAuthClient, 8 - } from "@atproto/oauth-client"; 9 - import { ReactNativeRuntimeImplementation } from "./react-native-runtime-implementation"; 10 - import { ReactNativeOAuthDatabase } from "./react-native-oauth-database"; 8 + } from '@atproto/oauth-client' 9 + import { ReactNativeRuntimeImplementation } from './react-native-runtime-implementation' 10 + import { ReactNativeOAuthDatabase } from './react-native-oauth-database' 11 11 12 - export type Simplify<T> = { [K in keyof T]: T[K] } & NonNullable<unknown>; 12 + export type Simplify<T> = { [K in keyof T]: T[K] } & NonNullable<unknown> 13 13 14 14 export type ReactNativeOAuthClientOptions = Simplify< 15 15 { 16 - clientMetadata?: Readonly<OAuthClientMetadataInput>; 17 - responseMode?: Exclude<OAuthResponseMode, "form_post">; 18 - fetch?: Fetch; 16 + clientMetadata?: Readonly<OAuthClientMetadataInput> 17 + responseMode?: Exclude<OAuthResponseMode, 'form_post'> 18 + fetch?: Fetch 19 19 } & Omit< 20 20 OAuthClientOptions, 21 - | "clientMetadata" 22 - | "responseMode" 23 - | "keyset" 24 - | "fetch" 25 - | "runtimeImplementation" 26 - | "sessionStore" 27 - | "stateStore" 28 - | "didCache" 29 - | "handleCache" 30 - | "dpopNonceCache" 31 - | "authorizationServerMetadataCache" 32 - | "protectedResourceMetadataCache" 21 + | 'clientMetadata' 22 + | 'responseMode' 23 + | 'keyset' 24 + | 'fetch' 25 + | 'runtimeImplementation' 26 + | 'sessionStore' 27 + | 'stateStore' 28 + | 'didCache' 29 + | 'handleCache' 30 + | 'dpopNonceCache' 31 + | 'authorizationServerMetadataCache' 32 + | 'protectedResourceMetadataCache' 33 33 > 34 - >; 34 + > 35 35 36 36 export class ReactNativeOAuthClient extends OAuthClient { 37 37 constructor({ 38 - responseMode = "fragment", 38 + responseMode = 'fragment', 39 39 ...options 40 40 }: ReactNativeOAuthClientOptions) { 41 - const database = new ReactNativeOAuthDatabase(); 41 + const database = new ReactNativeOAuthDatabase() 42 42 43 - if (!["query", "fragment"].includes(responseMode)) { 44 - throw new TypeError(`Invalid response mode: ${responseMode}`); 43 + if (!['query', 'fragment'].includes(responseMode)) { 44 + throw new TypeError(`Invalid response mode: ${responseMode}`) 45 45 } 46 46 47 47 if (!options.clientMetadata) { 48 - throw new TypeError(`No client metadata provided`); 48 + throw new TypeError(`No client metadata provided`) 49 49 } 50 50 51 51 super({ 52 52 ...options, 53 53 clientMetadata: 54 - options.clientMetadata ?? atprotoLoopbackClientMetadata("localhost"), // HACK: this fixes a type error for now, look into it later 54 + options.clientMetadata ?? atprotoLoopbackClientMetadata('localhost'), // HACK: this fixes a type error for now, look into it later 55 55 responseMode, 56 56 keyset: undefined, 57 57 runtimeImplementation: new ReactNativeRuntimeImplementation(), ··· 64 64 database.getAuthorizationServerMetadataCache(), 65 65 protectedResourceMetadataCache: 66 66 database.getProtectedResourceMetadataCache(), 67 - }); 67 + }) 68 68 } 69 69 }
+99 -99
src/react-native-oauth-database.ts
··· 7 7 Session, 8 8 TokenSet, 9 9 Key, 10 - } from "@atproto/oauth-client"; 11 - import { type SimpleStore, type Value } from "@atproto-labs/simple-store"; 12 - import { MMKV } from "react-native-mmkv"; 13 - import { JWK } from "./ExpoAtprotoAuth.types"; 14 - import { ReactNativeKey } from "./react-native-key"; 10 + } from '@atproto/oauth-client' 11 + import { type SimpleStore, type Value } from '@atproto-labs/simple-store' 12 + import { MMKV } from 'react-native-mmkv' 13 + import { JWK } from './ExpoAtprotoAuth.types' 14 + import { ReactNativeKey } from './react-native-key' 15 15 16 16 type Item<V> = { 17 - value: V; 18 - expiresAt: null | number; 19 - }; 17 + value: V 18 + expiresAt: null | number 19 + } 20 20 21 21 type CryptoKeyPair = { 22 - publicKey: JWK; 23 - privateKey: JWK; 24 - }; 22 + publicKey: JWK 23 + privateKey: JWK 24 + } 25 25 26 26 type EncodedKey = { 27 - keyId: string; 28 - keyPair: CryptoKeyPair; 29 - }; 27 + keyId: string 28 + keyPair: CryptoKeyPair 29 + } 30 30 31 31 function encodeKey(key: Key): EncodedKey { 32 32 if (!key.privateJwk || !key.publicJwk || !key.kid) { 33 - throw new Error("Invalid key object"); 33 + throw new Error('Invalid key object') 34 34 } 35 35 36 36 const encodedKey = { ··· 39 39 publicKey: key.publicJwk, 40 40 privateKey: key.privateJwk, 41 41 }, 42 - }; 42 + } 43 43 44 44 // @ts-expect-error 45 - return encodedKey; 45 + return encodedKey 46 46 } 47 47 48 48 async function decodeKey(encoded: EncodedKey): Promise<ReactNativeKey> { 49 - console.log(encoded); 50 - return new ReactNativeKey(encoded.keyPair.privateKey); 49 + console.log(encoded) 50 + return new ReactNativeKey(encoded.keyPair.privateKey) 51 51 } 52 52 53 53 export type Schema = { 54 54 state: Item<{ 55 - dpopKey: EncodedKey; 56 - iss: string; 57 - verifier?: string; 58 - appState?: string; 59 - }>; 55 + dpopKey: EncodedKey 56 + iss: string 57 + verifier?: string 58 + appState?: string 59 + }> 60 60 session: Item<{ 61 - dpopKey: EncodedKey; 62 - tokenSet: TokenSet; 63 - }>; 64 - didCache: Item<DidDocument>; 65 - dpopNonceCache: Item<string>; 66 - handleCache: Item<ResolvedHandle>; 67 - authorizationServerMetadataCache: Item<OAuthAuthorizationServerMetadata>; 68 - protectedResourceMetadataCache: Item<OAuthProtectedResourceMetadata>; 69 - }; 61 + dpopKey: EncodedKey 62 + tokenSet: TokenSet 63 + }> 64 + didCache: Item<DidDocument> 65 + dpopNonceCache: Item<string> 66 + handleCache: Item<ResolvedHandle> 67 + authorizationServerMetadataCache: Item<OAuthAuthorizationServerMetadata> 68 + protectedResourceMetadataCache: Item<OAuthProtectedResourceMetadata> 69 + } 70 70 71 71 export type DatabaseStore<V extends Value> = SimpleStore<string, V> & { 72 - getKeys: () => Promise<string[]>; 73 - }; 72 + getKeys: () => Promise<string[]> 73 + } 74 74 75 75 const STORES = [ 76 - "state", 77 - "session", 78 - "didCache", 79 - "dpopNonceCache", 80 - "handleCache", 81 - "authorizationServerMetadataCaache", 82 - "protectedResourceMetadataCache", 83 - ]; 76 + 'state', 77 + 'session', 78 + 'didCache', 79 + 'dpopNonceCache', 80 + 'handleCache', 81 + 'authorizationServerMetadataCaache', 82 + 'protectedResourceMetadataCache', 83 + ] 84 84 85 85 export type ReactNativeOAuthDatabaseOptions = { 86 - name?: string; 87 - durability?: "strict" | "relaxed"; 88 - cleanupInterval?: number; 89 - }; 86 + name?: string 87 + durability?: 'strict' | 'relaxed' 88 + cleanupInterval?: number 89 + } 90 90 91 91 export class ReactNativeOAuthDatabase { 92 - #cleanupInterval?: ReturnType<typeof setInterval>; 93 - #mmkv?: MMKV; 92 + #cleanupInterval?: ReturnType<typeof setInterval> 93 + #mmkv?: MMKV 94 94 95 95 constructor(options?: ReactNativeOAuthDatabaseOptions) { 96 96 this.#cleanupInterval = setInterval(() => { 97 - void this.cleanup(); 98 - }, options?.cleanupInterval ?? 30e3); 99 - this.#mmkv = new MMKV({ id: "react-native-oauth-client" }); 97 + this.cleanup() 98 + }, options?.cleanupInterval ?? 30e3) 99 + this.#mmkv = new MMKV({ id: 'react-native-oauth-client' }) 100 100 } 101 101 102 102 delete = async (key: string) => { 103 - this.#mmkv?.delete(key); 104 - this.#mmkv?.delete(`${key}.expiresAt`); 105 - }; 103 + this.#mmkv?.delete(key) 104 + this.#mmkv?.delete(`${key}.expiresAt`) 105 + } 106 106 107 107 protected createStore<N extends keyof Schema, V extends Value>( 108 108 name: N, ··· 111 111 decode, 112 112 expiresAt, 113 113 }: { 114 - encode: ( 115 - value: V, 116 - ) => Schema[N]["value"] | PromiseLike<Schema[N]["value"]>; 117 - decode: (encoded: Schema[N]["value"]) => V | PromiseLike<V>; 118 - expiresAt: (value: V) => null | number; 119 - }, 114 + encode: (value: V) => Schema[N]['value'] | PromiseLike<Schema[N]['value']> 115 + decode: (encoded: Schema[N]['value']) => V | PromiseLike<V> 116 + expiresAt: (value: V) => null | number 117 + } 120 118 ): DatabaseStore<V> { 121 119 return { 122 120 get: async (key) => { 123 - console.log(`getting ${name}.${key}`); 124 - const item = this.#mmkv?.getString(`${name}.${key}`); 121 + console.log(`getting ${name}.${key}`) 122 + const item = this.#mmkv?.getString(`${name}.${key}`) 125 123 126 - if (item === undefined) return undefined; 124 + if (item === undefined) return undefined 127 125 128 - const expiresAt = this.#mmkv?.getNumber(`${name}.${key}.expiresAt`); 129 - if (expiresAt && expiresAt < Date.now()) { 130 - await this.delete(`${name}.${key}`); 131 - return undefined; 126 + const storedExpiresAt = this.#mmkv?.getNumber( 127 + `${name}.${key}.expiresAt` 128 + ) 129 + if (storedExpiresAt && storedExpiresAt < Date.now()) { 130 + await this.delete(`${name}.${key}`) 131 + return undefined 132 132 } 133 133 134 - const res = decode(JSON.parse(item)); 135 - console.log(res); 136 - return res; 134 + const res = decode(JSON.parse(item)) 135 + console.log(res) 136 + return res 137 137 }, 138 138 139 139 getKeys: async () => { 140 - const keys = this.#mmkv?.getAllKeys() ?? []; 141 - return keys.filter((key) => key.startsWith(`${name}.`)); 140 + const keys = this.#mmkv?.getAllKeys() ?? [] 141 + return keys.filter((key) => key.startsWith(`${name}.`)) 142 142 }, 143 143 144 144 set: async (key, value) => { 145 - let encoded = await encode(value); 146 - encoded = JSON.stringify(encoded); 145 + let encoded = await encode(value) 146 + encoded = JSON.stringify(encoded) 147 147 148 - const _expiresAt = expiresAt(value); 148 + const _expiresAt = expiresAt(value) 149 149 150 - this.#mmkv?.set(`${name}.${key}`, encoded); 150 + this.#mmkv?.set(`${name}.${key}`, encoded) 151 151 if (_expiresAt) { 152 - this.#mmkv?.set(`${name}.${key}.expiresAt`, _expiresAt); 152 + this.#mmkv?.set(`${name}.${key}.expiresAt`, _expiresAt) 153 153 } 154 154 }, 155 155 del: async (key) => { 156 - await this.delete(`${name}.${key}`); 156 + await this.delete(`${name}.${key}`) 157 157 }, 158 - }; 158 + } 159 159 } 160 160 161 161 getSessionStore(): DatabaseStore<Session> { 162 - return this.createStore("session", { 162 + return this.createStore('session', { 163 163 expiresAt: ({ tokenSet }) => 164 164 tokenSet.refresh_token || tokenSet.expires_at == null 165 165 ? null ··· 173 173 ...encoded, 174 174 dpopKey: await decodeKey(dpopKey), 175 175 }), 176 - }); 176 + }) 177 177 } 178 178 179 179 getStateStore(): DatabaseStore<InternalStateData> { 180 - return this.createStore("state", { 180 + return this.createStore('state', { 181 181 expiresAt: (_value) => Date.now() + 10 * 60e3, 182 182 encode: ({ dpopKey, ...session }) => ({ 183 183 ...session, ··· 188 188 ...encoded, 189 189 dpopKey: await decodeKey(dpopKey), 190 190 }), 191 - }); 191 + }) 192 192 } 193 193 194 194 getDpopNonceCache(): undefined | DatabaseStore<string> { 195 - return this.createStore("dpopNonceCache", { 195 + return this.createStore('dpopNonceCache', { 196 196 expiresAt: (_value) => Date.now() + 600e3, 197 197 encode: (value) => value, 198 198 decode: (encoded) => encoded, 199 - }); 199 + }) 200 200 } 201 201 202 202 getDidCache(): undefined | DatabaseStore<DidDocument> { 203 - return this.createStore("didCache", { 203 + return this.createStore('didCache', { 204 204 expiresAt: (_value) => Date.now() + 60e3, 205 205 encode: (value) => value, 206 206 decode: (encoded) => encoded, 207 - }); 207 + }) 208 208 } 209 209 210 210 getHandleCache(): undefined | DatabaseStore<ResolvedHandle> { 211 - return this.createStore("handleCache", { 211 + return this.createStore('handleCache', { 212 212 expiresAt: (_value) => Date.now() + 60e3, 213 213 encode: (value) => value, 214 214 decode: (encoded) => encoded, 215 - }); 215 + }) 216 216 } 217 217 218 218 getAuthorizationServerMetadataCache(): 219 219 | undefined 220 220 | DatabaseStore<OAuthAuthorizationServerMetadata> { 221 - return this.createStore("authorizationServerMetadataCache", { 221 + return this.createStore('authorizationServerMetadataCache', { 222 222 expiresAt: (_value) => Date.now() + 60e3, 223 223 encode: (value) => value, 224 224 decode: (encoded) => encoded, 225 - }); 225 + }) 226 226 } 227 227 228 228 getProtectedResourceMetadataCache(): 229 229 | undefined 230 230 | DatabaseStore<OAuthProtectedResourceMetadata> { 231 - return this.createStore("protectedResourceMetadataCache", { 231 + return this.createStore('protectedResourceMetadataCache', { 232 232 expiresAt: (_value) => Date.now() + 60e3, 233 233 encode: (value) => value, 234 234 decode: (encoded) => encoded, 235 - }); 235 + }) 236 236 } 237 237 238 238 async cleanup() { 239 239 for (const name of STORES) { 240 - const keys = this.#mmkv?.getAllKeys() ?? []; 240 + const keys = this.#mmkv?.getAllKeys() ?? [] 241 241 for (const key of keys) { 242 242 if (key.startsWith(`${name}.`)) { 243 - const expiresAt = this.#mmkv?.getNumber(`${name}.${key}.expiresAt`); 243 + const expiresAt = this.#mmkv?.getNumber(`${name}.${key}.expiresAt`) 244 244 if (expiresAt && Number(expiresAt) < Date.now()) { 245 - this.#mmkv?.delete(key); 246 - this.#mmkv?.delete(`${name}.${key}.expiresAt`); 245 + this.#mmkv?.delete(key) 246 + this.#mmkv?.delete(`${name}.${key}.expiresAt`) 247 247 } 248 248 } 249 249 } ··· 251 251 } 252 252 253 253 async [Symbol.asyncDispose]() { 254 - clearInterval(this.#cleanupInterval); 254 + clearInterval(this.#cleanupInterval) 255 255 } 256 256 }
+11 -11
src/react-native-runtime-implementation.ts
··· 1 - import type { Key, RuntimeImplementation } from "@atproto/oauth-client"; 2 - import { default as NativeModule } from "./ExpoAtprotoAuthModule"; 3 - import { generateJwk } from "./react-native-key"; 1 + import type { Key, RuntimeImplementation } from '@atproto/oauth-client' 2 + import { default as NativeModule } from './ExpoAtprotoAuthModule' 3 + import { generateJwk } from './react-native-key' 4 4 5 5 export class ReactNativeRuntimeImplementation implements RuntimeImplementation { 6 6 async createKey(algs: string[]): Promise<Key> { 7 - if (!algs.includes("ES256")) { 8 - throw TypeError("ES256 is the only supported algo"); 7 + if (!algs.includes('ES256')) { 8 + throw TypeError('ES256 is the only supported algo') 9 9 } 10 10 // @ts-expect-error TODO: 11 - return generateJwk("ES256"); 11 + return generateJwk('ES256') 12 12 } 13 13 14 14 getRandomValues(length: number): Uint8Array | PromiseLike<Uint8Array> { 15 - return NativeModule.getRandomValues(length); 15 + return NativeModule.getRandomValues(length) 16 16 } 17 17 18 18 digest( 19 19 bytes: Uint8Array, 20 - algorithim: { name: string }, 20 + algorithim: { name: string } 21 21 ): Uint8Array | PromiseLike<Uint8Array> { 22 - if (algorithim.name == "sha256") { 23 - return NativeModule.digest(bytes, algorithim.name); 22 + if (algorithim.name === 'sha256') { 23 + return NativeModule.digest(bytes, algorithim.name) 24 24 } 25 25 26 - throw new TypeError(`Unsupported algorithim: ${algorithim.name}`); 26 + throw new TypeError(`Unsupported algorithim: ${algorithim.name}`) 27 27 } 28 28 }
+1159 -33
yarn.lock
··· 168 168 dependencies: 169 169 "@babel/highlight" "^7.10.4" 170 170 171 - "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1": 171 + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1": 172 172 version "7.27.1" 173 173 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" 174 174 integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== ··· 182 182 resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790" 183 183 integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== 184 184 185 - "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.0", "@babel/core@^7.25.2": 185 + "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.0", "@babel/core@^7.23.9", "@babel/core@^7.25.2": 186 186 version "7.28.0" 187 187 resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.0.tgz#55dad808d5bf3445a108eefc88ea3fdf034749a4" 188 188 integrity sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ== ··· 201 201 debug "^4.1.0" 202 202 gensync "^1.0.0-beta.2" 203 203 json5 "^2.2.3" 204 + semver "^6.3.1" 205 + 206 + "@babel/eslint-parser@^7.25.1": 207 + version "7.28.0" 208 + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz#c1b3fbba070f5bac32e3d02f244201add4afdd6e" 209 + integrity sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w== 210 + dependencies: 211 + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" 212 + eslint-visitor-keys "^2.1.0" 204 213 semver "^6.3.1" 205 214 206 215 "@babel/generator@^7.20.5", "@babel/generator@^7.25.0", "@babel/generator@^7.28.0", "@babel/generator@^7.7.2": ··· 375 384 js-tokens "^4.0.0" 376 385 picocolors "^1.0.0" 377 386 378 - "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.3", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0": 387 + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0": 379 388 version "7.28.0" 380 389 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" 381 390 integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== ··· 1235 1244 "@babel/helper-string-parser" "^7.27.1" 1236 1245 "@babel/helper-validator-identifier" "^7.27.1" 1237 1246 1238 - "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.5.0", "@eslint-community/eslint-utils@^4.7.0": 1247 + "@bcoe/v8-coverage@^0.2.3": 1248 + version "0.2.3" 1249 + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 1250 + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 1251 + 1252 + "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.5.0", "@eslint-community/eslint-utils@^4.7.0": 1239 1253 version "4.7.0" 1240 1254 resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" 1241 1255 integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== 1242 1256 dependencies: 1243 1257 eslint-visitor-keys "^3.4.3" 1244 1258 1245 - "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": 1259 + "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.12.1": 1246 1260 version "4.12.1" 1247 1261 resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" 1248 1262 integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== 1263 + 1264 + "@eslint/compat@^1.2.7": 1265 + version "1.3.1" 1266 + resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.3.1.tgz#19f62ee48896d38f8eab591bee2a25dd69abc273" 1267 + integrity sha512-k8MHony59I5EPic6EQTCNOuPoVBnoYXkP+20xvwFjN7t0qI3ImyvyBgg+hIVPwC8JaxVjjUZld+cLfBLFDLucg== 1268 + 1269 + "@eslint/config-array@^0.21.0": 1270 + version "0.21.0" 1271 + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636" 1272 + integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== 1273 + dependencies: 1274 + "@eslint/object-schema" "^2.1.6" 1275 + debug "^4.3.1" 1276 + minimatch "^3.1.2" 1277 + 1278 + "@eslint/config-helpers@^0.3.0": 1279 + version "0.3.0" 1280 + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286" 1281 + integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== 1282 + 1283 + "@eslint/core@^0.15.0", "@eslint/core@^0.15.1": 1284 + version "0.15.1" 1285 + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60" 1286 + integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== 1287 + dependencies: 1288 + "@types/json-schema" "^7.0.15" 1289 + 1290 + "@eslint/eslintrc@^3.3.0", "@eslint/eslintrc@^3.3.1": 1291 + version "3.3.1" 1292 + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" 1293 + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== 1294 + dependencies: 1295 + ajv "^6.12.4" 1296 + debug "^4.3.2" 1297 + espree "^10.0.1" 1298 + globals "^14.0.0" 1299 + ignore "^5.2.0" 1300 + import-fresh "^3.2.1" 1301 + js-yaml "^4.1.0" 1302 + minimatch "^3.1.2" 1303 + strip-json-comments "^3.1.1" 1304 + 1305 + "@eslint/js@9.31.0", "@eslint/js@^9.22.0": 1306 + version "9.31.0" 1307 + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.31.0.tgz#adb1f39953d8c475c4384b67b67541b0d7206ed8" 1308 + integrity sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw== 1309 + 1310 + "@eslint/object-schema@^2.1.6": 1311 + version "2.1.6" 1312 + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" 1313 + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== 1314 + 1315 + "@eslint/plugin-kit@^0.3.1": 1316 + version "0.3.3" 1317 + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz#32926b59bd407d58d817941e48b2a7049359b1fd" 1318 + integrity sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag== 1319 + dependencies: 1320 + "@eslint/core" "^0.15.1" 1321 + levn "^0.4.1" 1249 1322 1250 1323 "@expo/cli@0.24.20": 1251 1324 version "0.24.20" ··· 1541 1614 find-up "^5.0.0" 1542 1615 js-yaml "^4.1.0" 1543 1616 1617 + "@humanfs/core@^0.19.1": 1618 + version "0.19.1" 1619 + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" 1620 + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== 1621 + 1622 + "@humanfs/node@^0.16.6": 1623 + version "0.16.6" 1624 + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" 1625 + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== 1626 + dependencies: 1627 + "@humanfs/core" "^0.19.1" 1628 + "@humanwhocodes/retry" "^0.3.0" 1629 + 1630 + "@humanwhocodes/module-importer@^1.0.1": 1631 + version "1.0.1" 1632 + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 1633 + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 1634 + 1635 + "@humanwhocodes/retry@^0.3.0": 1636 + version "0.3.1" 1637 + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" 1638 + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== 1639 + 1640 + "@humanwhocodes/retry@^0.4.2": 1641 + version "0.4.3" 1642 + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" 1643 + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== 1644 + 1544 1645 "@isaacs/cliui@^8.0.2": 1545 1646 version "8.0.2" 1546 1647 resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" ··· 1576 1677 js-yaml "^3.13.1" 1577 1678 resolve-from "^5.0.0" 1578 1679 1579 - "@istanbuljs/schema@^0.1.2": 1680 + "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": 1580 1681 version "0.1.3" 1581 1682 resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 1582 1683 integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== ··· 1593 1694 jest-util "^29.7.0" 1594 1695 slash "^3.0.0" 1595 1696 1697 + "@jest/core@^29.7.0": 1698 + version "29.7.0" 1699 + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" 1700 + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== 1701 + dependencies: 1702 + "@jest/console" "^29.7.0" 1703 + "@jest/reporters" "^29.7.0" 1704 + "@jest/test-result" "^29.7.0" 1705 + "@jest/transform" "^29.7.0" 1706 + "@jest/types" "^29.6.3" 1707 + "@types/node" "*" 1708 + ansi-escapes "^4.2.1" 1709 + chalk "^4.0.0" 1710 + ci-info "^3.2.0" 1711 + exit "^0.1.2" 1712 + graceful-fs "^4.2.9" 1713 + jest-changed-files "^29.7.0" 1714 + jest-config "^29.7.0" 1715 + jest-haste-map "^29.7.0" 1716 + jest-message-util "^29.7.0" 1717 + jest-regex-util "^29.6.3" 1718 + jest-resolve "^29.7.0" 1719 + jest-resolve-dependencies "^29.7.0" 1720 + jest-runner "^29.7.0" 1721 + jest-runtime "^29.7.0" 1722 + jest-snapshot "^29.7.0" 1723 + jest-util "^29.7.0" 1724 + jest-validate "^29.7.0" 1725 + jest-watcher "^29.7.0" 1726 + micromatch "^4.0.4" 1727 + pretty-format "^29.7.0" 1728 + slash "^3.0.0" 1729 + strip-ansi "^6.0.0" 1730 + 1596 1731 "@jest/create-cache-key-function@^29.2.1", "@jest/create-cache-key-function@^29.7.0": 1597 1732 version "29.7.0" 1598 1733 resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" ··· 1637 1772 jest-mock "^29.7.0" 1638 1773 jest-util "^29.7.0" 1639 1774 1640 - "@jest/globals@^29.2.1": 1775 + "@jest/globals@^29.2.1", "@jest/globals@^29.7.0": 1641 1776 version "29.7.0" 1642 1777 resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" 1643 1778 integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== ··· 1647 1782 "@jest/types" "^29.6.3" 1648 1783 jest-mock "^29.7.0" 1649 1784 1785 + "@jest/reporters@^29.7.0": 1786 + version "29.7.0" 1787 + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" 1788 + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== 1789 + dependencies: 1790 + "@bcoe/v8-coverage" "^0.2.3" 1791 + "@jest/console" "^29.7.0" 1792 + "@jest/test-result" "^29.7.0" 1793 + "@jest/transform" "^29.7.0" 1794 + "@jest/types" "^29.6.3" 1795 + "@jridgewell/trace-mapping" "^0.3.18" 1796 + "@types/node" "*" 1797 + chalk "^4.0.0" 1798 + collect-v8-coverage "^1.0.0" 1799 + exit "^0.1.2" 1800 + glob "^7.1.3" 1801 + graceful-fs "^4.2.9" 1802 + istanbul-lib-coverage "^3.0.0" 1803 + istanbul-lib-instrument "^6.0.0" 1804 + istanbul-lib-report "^3.0.0" 1805 + istanbul-lib-source-maps "^4.0.0" 1806 + istanbul-reports "^3.1.3" 1807 + jest-message-util "^29.7.0" 1808 + jest-util "^29.7.0" 1809 + jest-worker "^29.7.0" 1810 + slash "^3.0.0" 1811 + string-length "^4.0.1" 1812 + strip-ansi "^6.0.0" 1813 + v8-to-istanbul "^9.0.1" 1814 + 1650 1815 "@jest/schemas@^29.6.3": 1651 1816 version "29.6.3" 1652 1817 resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" 1653 1818 integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== 1654 1819 dependencies: 1655 1820 "@sinclair/typebox" "^0.27.8" 1821 + 1822 + "@jest/source-map@^29.6.3": 1823 + version "29.6.3" 1824 + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" 1825 + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== 1826 + dependencies: 1827 + "@jridgewell/trace-mapping" "^0.3.18" 1828 + callsites "^3.0.0" 1829 + graceful-fs "^4.2.9" 1656 1830 1657 1831 "@jest/test-result@^29.7.0": 1658 1832 version "29.7.0" ··· 1663 1837 "@jest/types" "^29.6.3" 1664 1838 "@types/istanbul-lib-coverage" "^2.0.0" 1665 1839 collect-v8-coverage "^1.0.0" 1840 + 1841 + "@jest/test-sequencer@^29.7.0": 1842 + version "29.7.0" 1843 + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" 1844 + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== 1845 + dependencies: 1846 + "@jest/test-result" "^29.7.0" 1847 + graceful-fs "^4.2.9" 1848 + jest-haste-map "^29.7.0" 1849 + slash "^3.0.0" 1666 1850 1667 1851 "@jest/transform@^29.7.0": 1668 1852 version "29.7.0" ··· 1723 1907 resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" 1724 1908 integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== 1725 1909 1726 - "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": 1910 + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": 1727 1911 version "0.3.29" 1728 1912 resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc" 1729 1913 integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== ··· 1735 1919 version "2.1.8-no-fsevents.3" 1736 1920 resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" 1737 1921 integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== 1922 + 1923 + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": 1924 + version "5.1.1-v1" 1925 + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" 1926 + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== 1927 + dependencies: 1928 + eslint-scope "5.1.1" 1738 1929 1739 1930 "@nodelib/fs.scandir@2.1.5": 1740 1931 version "2.1.5" ··· 1911 2102 serve-static "^1.16.2" 1912 2103 ws "^6.2.3" 1913 2104 2105 + "@react-native/eslint-config@^0.78.0": 2106 + version "0.78.3" 2107 + resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.78.3.tgz#281b09c3519b444cca40e8d54da11afef2d70ca9" 2108 + integrity sha512-YcJsVfOHLgA9OXTfHPV0dSSVhk9Ceu+WzNl8m3mBB8oejEdkjM9VBDrArg64AGCzdRLAMbgiUrWy7vI47yNbmQ== 2109 + dependencies: 2110 + "@babel/core" "^7.25.2" 2111 + "@babel/eslint-parser" "^7.25.1" 2112 + "@react-native/eslint-plugin" "0.78.3" 2113 + "@typescript-eslint/eslint-plugin" "^7.1.1" 2114 + "@typescript-eslint/parser" "^7.1.1" 2115 + eslint-config-prettier "^8.5.0" 2116 + eslint-plugin-eslint-comments "^3.2.0" 2117 + eslint-plugin-ft-flow "^2.0.1" 2118 + eslint-plugin-jest "^27.9.0" 2119 + eslint-plugin-react "^7.30.1" 2120 + eslint-plugin-react-hooks "^4.6.0" 2121 + eslint-plugin-react-native "^4.0.0" 2122 + 2123 + "@react-native/eslint-plugin@0.78.3": 2124 + version "0.78.3" 2125 + resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.78.3.tgz#2ccfecc2d9d56d718dea74585107dda16017d442" 2126 + integrity sha512-PvFAL9J/Jk93K5ibr5Cj5RfiYdMJNqPej6NcDoOSj1kalM6fE22dHxnxF9A1/YApN1F972n+tW16T1+c4F9opw== 2127 + 1914 2128 "@react-native/gradle-plugin@0.79.1": 1915 2129 version "0.79.1" 1916 2130 resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.79.1.tgz#b533024ac1930a826b225fed8fbf94d7f768afe9" ··· 2016 2230 dependencies: 2017 2231 "@babel/types" "^7.20.7" 2018 2232 2233 + "@types/estree@^1.0.6": 2234 + version "1.0.8" 2235 + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" 2236 + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== 2237 + 2019 2238 "@types/graceful-fs@^4.1.3": 2020 2239 version "4.1.9" 2021 2240 resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" ··· 2023 2242 dependencies: 2024 2243 "@types/node" "*" 2025 2244 2026 - "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": 2245 + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 2027 2246 version "2.0.6" 2028 2247 resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" 2029 2248 integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== ··· 2059 2278 "@types/tough-cookie" "*" 2060 2279 parse5 "^7.0.0" 2061 2280 2281 + "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": 2282 + version "7.0.15" 2283 + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 2284 + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 2285 + 2062 2286 "@types/json5@^0.0.29": 2063 2287 version "0.0.29" 2064 2288 resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" ··· 2078 2302 dependencies: 2079 2303 csstype "^3.0.2" 2080 2304 2305 + "@types/semver@^7.3.12": 2306 + version "7.7.0" 2307 + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" 2308 + integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== 2309 + 2081 2310 "@types/stack-utils@^2.0.0": 2082 2311 version "2.0.3" 2083 2312 resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" ··· 2100 2329 dependencies: 2101 2330 "@types/yargs-parser" "*" 2102 2331 2332 + "@typescript-eslint/eslint-plugin@^7.1.1", "@typescript-eslint/eslint-plugin@^7.18.0": 2333 + version "7.18.0" 2334 + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" 2335 + integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== 2336 + dependencies: 2337 + "@eslint-community/regexpp" "^4.10.0" 2338 + "@typescript-eslint/scope-manager" "7.18.0" 2339 + "@typescript-eslint/type-utils" "7.18.0" 2340 + "@typescript-eslint/utils" "7.18.0" 2341 + "@typescript-eslint/visitor-keys" "7.18.0" 2342 + graphemer "^1.4.0" 2343 + ignore "^5.3.1" 2344 + natural-compare "^1.4.0" 2345 + ts-api-utils "^1.3.0" 2346 + 2103 2347 "@typescript-eslint/eslint-plugin@^8.29.1": 2104 2348 version "8.37.0" 2105 2349 resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz#332392883f936137cd6252c8eb236d298e514e70" ··· 2115 2359 natural-compare "^1.4.0" 2116 2360 ts-api-utils "^2.1.0" 2117 2361 2362 + "@typescript-eslint/parser@^7.1.1", "@typescript-eslint/parser@^7.18.0": 2363 + version "7.18.0" 2364 + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" 2365 + integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== 2366 + dependencies: 2367 + "@typescript-eslint/scope-manager" "7.18.0" 2368 + "@typescript-eslint/types" "7.18.0" 2369 + "@typescript-eslint/typescript-estree" "7.18.0" 2370 + "@typescript-eslint/visitor-keys" "7.18.0" 2371 + debug "^4.3.4" 2372 + 2118 2373 "@typescript-eslint/parser@^8.29.1": 2119 2374 version "8.37.0" 2120 2375 resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.37.0.tgz#b87f6b61e25ad5cc5bbf8baf809b8da889c89804" ··· 2135 2390 "@typescript-eslint/types" "^8.37.0" 2136 2391 debug "^4.3.4" 2137 2392 2393 + "@typescript-eslint/scope-manager@5.62.0": 2394 + version "5.62.0" 2395 + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" 2396 + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== 2397 + dependencies: 2398 + "@typescript-eslint/types" "5.62.0" 2399 + "@typescript-eslint/visitor-keys" "5.62.0" 2400 + 2401 + "@typescript-eslint/scope-manager@7.18.0": 2402 + version "7.18.0" 2403 + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" 2404 + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== 2405 + dependencies: 2406 + "@typescript-eslint/types" "7.18.0" 2407 + "@typescript-eslint/visitor-keys" "7.18.0" 2408 + 2138 2409 "@typescript-eslint/scope-manager@8.37.0": 2139 2410 version "8.37.0" 2140 2411 resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz#a31a3c80ca2ef4ed58de13742debb692e7d4c0a4" ··· 2148 2419 resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz#47a2760d265c6125f8e7864bc5c8537cad2bd053" 2149 2420 integrity sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg== 2150 2421 2422 + "@typescript-eslint/type-utils@7.18.0": 2423 + version "7.18.0" 2424 + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" 2425 + integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== 2426 + dependencies: 2427 + "@typescript-eslint/typescript-estree" "7.18.0" 2428 + "@typescript-eslint/utils" "7.18.0" 2429 + debug "^4.3.4" 2430 + ts-api-utils "^1.3.0" 2431 + 2151 2432 "@typescript-eslint/type-utils@8.37.0": 2152 2433 version "8.37.0" 2153 2434 resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz#2a682e4c6ff5886712dad57e9787b5e417124507" ··· 2159 2440 debug "^4.3.4" 2160 2441 ts-api-utils "^2.1.0" 2161 2442 2443 + "@typescript-eslint/types@5.62.0": 2444 + version "5.62.0" 2445 + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" 2446 + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== 2447 + 2448 + "@typescript-eslint/types@7.18.0": 2449 + version "7.18.0" 2450 + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" 2451 + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== 2452 + 2162 2453 "@typescript-eslint/types@8.37.0", "@typescript-eslint/types@^8.37.0": 2163 2454 version "8.37.0" 2164 2455 resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.37.0.tgz#09517aa9625eb3c68941dde3ac8835740587b6ff" 2165 2456 integrity sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ== 2457 + 2458 + "@typescript-eslint/typescript-estree@5.62.0": 2459 + version "5.62.0" 2460 + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" 2461 + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== 2462 + dependencies: 2463 + "@typescript-eslint/types" "5.62.0" 2464 + "@typescript-eslint/visitor-keys" "5.62.0" 2465 + debug "^4.3.4" 2466 + globby "^11.1.0" 2467 + is-glob "^4.0.3" 2468 + semver "^7.3.7" 2469 + tsutils "^3.21.0" 2470 + 2471 + "@typescript-eslint/typescript-estree@7.18.0": 2472 + version "7.18.0" 2473 + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" 2474 + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== 2475 + dependencies: 2476 + "@typescript-eslint/types" "7.18.0" 2477 + "@typescript-eslint/visitor-keys" "7.18.0" 2478 + debug "^4.3.4" 2479 + globby "^11.1.0" 2480 + is-glob "^4.0.3" 2481 + minimatch "^9.0.4" 2482 + semver "^7.6.0" 2483 + ts-api-utils "^1.3.0" 2166 2484 2167 2485 "@typescript-eslint/typescript-estree@8.37.0": 2168 2486 version "8.37.0" ··· 2180 2498 semver "^7.6.0" 2181 2499 ts-api-utils "^2.1.0" 2182 2500 2501 + "@typescript-eslint/utils@7.18.0": 2502 + version "7.18.0" 2503 + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" 2504 + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== 2505 + dependencies: 2506 + "@eslint-community/eslint-utils" "^4.4.0" 2507 + "@typescript-eslint/scope-manager" "7.18.0" 2508 + "@typescript-eslint/types" "7.18.0" 2509 + "@typescript-eslint/typescript-estree" "7.18.0" 2510 + 2183 2511 "@typescript-eslint/utils@8.37.0": 2184 2512 version "8.37.0" 2185 2513 resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.37.0.tgz#189ea59b2709f5d898614611f091a776751ee335" ··· 2190 2518 "@typescript-eslint/types" "8.37.0" 2191 2519 "@typescript-eslint/typescript-estree" "8.37.0" 2192 2520 2521 + "@typescript-eslint/utils@^5.10.0": 2522 + version "5.62.0" 2523 + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" 2524 + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== 2525 + dependencies: 2526 + "@eslint-community/eslint-utils" "^4.2.0" 2527 + "@types/json-schema" "^7.0.9" 2528 + "@types/semver" "^7.3.12" 2529 + "@typescript-eslint/scope-manager" "5.62.0" 2530 + "@typescript-eslint/types" "5.62.0" 2531 + "@typescript-eslint/typescript-estree" "5.62.0" 2532 + eslint-scope "^5.1.1" 2533 + semver "^7.3.7" 2534 + 2535 + "@typescript-eslint/visitor-keys@5.62.0": 2536 + version "5.62.0" 2537 + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" 2538 + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== 2539 + dependencies: 2540 + "@typescript-eslint/types" "5.62.0" 2541 + eslint-visitor-keys "^3.3.0" 2542 + 2543 + "@typescript-eslint/visitor-keys@7.18.0": 2544 + version "7.18.0" 2545 + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" 2546 + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== 2547 + dependencies: 2548 + "@typescript-eslint/types" "7.18.0" 2549 + eslint-visitor-keys "^3.4.3" 2550 + 2193 2551 "@typescript-eslint/visitor-keys@8.37.0": 2194 2552 version "8.37.0" 2195 2553 resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz#cdb6a6bd3e8d6dd69bd70c1bdda36e2d18737455" ··· 2252 2610 acorn "^8.1.0" 2253 2611 acorn-walk "^8.0.2" 2254 2612 2613 + acorn-jsx@^5.3.2: 2614 + version "5.3.2" 2615 + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 2616 + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 2617 + 2255 2618 acorn-loose@^8.3.0: 2256 2619 version "8.5.2" 2257 2620 resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.5.2.tgz#a7cc7dfbb7c8f3c2e55b055db640dc657e278d26" ··· 2283 2646 resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" 2284 2647 integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== 2285 2648 2649 + ajv@^6.12.4: 2650 + version "6.12.6" 2651 + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 2652 + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 2653 + dependencies: 2654 + fast-deep-equal "^3.1.1" 2655 + fast-json-stable-stringify "^2.0.0" 2656 + json-schema-traverse "^0.4.1" 2657 + uri-js "^4.2.2" 2658 + 2286 2659 anser@^1.4.9: 2287 2660 version "1.4.10" 2288 2661 resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" ··· 2390 2763 get-intrinsic "^1.3.0" 2391 2764 is-string "^1.1.1" 2392 2765 math-intrinsics "^1.1.0" 2766 + 2767 + array-union@^2.1.0: 2768 + version "2.1.0" 2769 + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 2770 + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 2393 2771 2394 2772 array.prototype.findlast@^1.2.5: 2395 2773 version "1.2.5" ··· 2789 3167 resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" 2790 3168 integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== 2791 3169 3170 + callsites@^3.0.0: 3171 + version "3.1.0" 3172 + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 3173 + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 3174 + 2792 3175 camelcase@^5.3.1: 2793 3176 version "5.3.1" 2794 3177 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" ··· 2891 3274 resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" 2892 3275 integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== 2893 3276 3277 + cjs-module-lexer@^1.0.0: 3278 + version "1.4.3" 3279 + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" 3280 + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== 3281 + 2894 3282 cli-cursor@^2.1.0: 2895 3283 version "2.1.0" 2896 3284 resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" ··· 2917 3305 resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 2918 3306 integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== 2919 3307 3308 + co@^4.6.0: 3309 + version "4.6.0" 3310 + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 3311 + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== 3312 + 2920 3313 collect-v8-coverage@^1.0.0: 2921 3314 version "1.0.2" 2922 3315 resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" ··· 3035 3428 js-yaml "^3.13.1" 3036 3429 parse-json "^4.0.0" 3037 3430 3431 + create-jest@^29.7.0: 3432 + version "29.7.0" 3433 + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" 3434 + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== 3435 + dependencies: 3436 + "@jest/types" "^29.6.3" 3437 + chalk "^4.0.0" 3438 + exit "^0.1.2" 3439 + graceful-fs "^4.2.9" 3440 + jest-config "^29.7.0" 3441 + jest-util "^29.7.0" 3442 + prompts "^2.0.1" 3443 + 3038 3444 cross-spawn@^7.0.3, cross-spawn@^7.0.6: 3039 3445 version "7.0.6" 3040 3446 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" ··· 3114 3520 dependencies: 3115 3521 ms "2.0.0" 3116 3522 3117 - debug@4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.1: 3523 + debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.1: 3118 3524 version "4.4.1" 3119 3525 resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" 3120 3526 integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== ··· 3133 3539 resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" 3134 3540 integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== 3135 3541 3542 + dedent@^1.0.0: 3543 + version "1.6.0" 3544 + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" 3545 + integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== 3546 + 3136 3547 deep-extend@^0.6.0: 3137 3548 version "0.6.0" 3138 3549 resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 3139 3550 integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 3140 3551 3141 - deepmerge@^4.3.1: 3552 + deep-is@^0.1.3: 3553 + version "0.1.4" 3554 + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 3555 + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 3556 + 3557 + deepmerge@^4.2.2, deepmerge@^4.3.1: 3142 3558 version "4.3.1" 3143 3559 resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" 3144 3560 integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== ··· 3193 3609 resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 3194 3610 integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== 3195 3611 3612 + detect-newline@^3.0.0: 3613 + version "3.1.0" 3614 + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 3615 + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 3616 + 3196 3617 diff-sequences@^29.6.3: 3197 3618 version "29.6.3" 3198 3619 resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" 3199 3620 integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== 3200 3621 3622 + dir-glob@^3.0.1: 3623 + version "3.0.1" 3624 + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 3625 + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 3626 + dependencies: 3627 + path-type "^4.0.0" 3628 + 3201 3629 doctrine@^2.1.0: 3202 3630 version "2.1.0" 3203 3631 resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" ··· 3478 3906 dependencies: 3479 3907 semver "^7.5.4" 3480 3908 3909 + eslint-config-prettier@^10.1.1: 3910 + version "10.1.5" 3911 + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" 3912 + integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw== 3913 + 3914 + eslint-config-prettier@^8.5.0: 3915 + version "8.10.0" 3916 + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" 3917 + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== 3918 + 3481 3919 eslint-config-prettier@^9.1.0: 3482 3920 version "9.1.0" 3483 3921 resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" ··· 3532 3970 eslint-utils "^2.0.0" 3533 3971 regexpp "^3.0.0" 3534 3972 3973 + eslint-plugin-eslint-comments@^3.2.0: 3974 + version "3.2.0" 3975 + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" 3976 + integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== 3977 + dependencies: 3978 + escape-string-regexp "^1.0.5" 3979 + ignore "^5.0.5" 3980 + 3981 + eslint-plugin-ft-flow@^2.0.1: 3982 + version "2.0.3" 3983 + resolved "https://registry.yarnpkg.com/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz#3b3c113c41902bcbacf0e22b536debcfc3c819e8" 3984 + integrity sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg== 3985 + dependencies: 3986 + lodash "^4.17.21" 3987 + string-natural-compare "^3.0.1" 3988 + 3535 3989 eslint-plugin-import@^2.31.0: 3536 3990 version "2.32.0" 3537 3991 resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" ··· 3557 4011 string.prototype.trimend "^1.0.9" 3558 4012 tsconfig-paths "^3.15.0" 3559 4013 4014 + eslint-plugin-jest@^27.9.0: 4015 + version "27.9.0" 4016 + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" 4017 + integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== 4018 + dependencies: 4019 + "@typescript-eslint/utils" "^5.10.0" 4020 + 3560 4021 eslint-plugin-n@^17.17.0: 3561 4022 version "17.21.0" 3562 4023 resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.21.0.tgz#6b1833e5e8fd07a69bbab2be429771ff2309db5e" ··· 3584 4045 resolve "^1.10.1" 3585 4046 semver "^6.1.0" 3586 4047 3587 - eslint-plugin-prettier@^5.2.6: 4048 + eslint-plugin-prettier@^5.2.3, eslint-plugin-prettier@^5.2.6: 3588 4049 version "5.5.1" 3589 4050 resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz#470820964de9aedb37e9ce62c3266d2d26d08d15" 3590 4051 integrity sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw== ··· 3592 4053 prettier-linter-helpers "^1.0.0" 3593 4054 synckit "^0.11.7" 3594 4055 4056 + eslint-plugin-react-hooks@^4.6.0: 4057 + version "4.6.2" 4058 + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" 4059 + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== 4060 + 3595 4061 eslint-plugin-react-hooks@^5.2.0: 3596 4062 version "5.2.0" 3597 4063 resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" 3598 4064 integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== 3599 4065 3600 - eslint-plugin-react@^7.37.5: 4066 + eslint-plugin-react-native-globals@^0.1.1: 4067 + version "0.1.2" 4068 + resolved "https://registry.yarnpkg.com/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz#ee1348bc2ceb912303ce6bdbd22e2f045ea86ea2" 4069 + integrity sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g== 4070 + 4071 + eslint-plugin-react-native@^4.0.0: 4072 + version "4.1.0" 4073 + resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz#5343acd3b2246bc1b857ac38be708f070d18809f" 4074 + integrity sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q== 4075 + dependencies: 4076 + eslint-plugin-react-native-globals "^0.1.1" 4077 + 4078 + eslint-plugin-react@^7.30.1, eslint-plugin-react@^7.37.5: 3601 4079 version "7.37.5" 3602 4080 resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065" 3603 4081 integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== ··· 3621 4099 string.prototype.matchall "^4.0.12" 3622 4100 string.prototype.repeat "^1.0.0" 3623 4101 4102 + eslint-scope@5.1.1, eslint-scope@^5.1.1: 4103 + version "5.1.1" 4104 + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 4105 + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 4106 + dependencies: 4107 + esrecurse "^4.3.0" 4108 + estraverse "^4.1.1" 4109 + 4110 + eslint-scope@^8.4.0: 4111 + version "8.4.0" 4112 + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" 4113 + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== 4114 + dependencies: 4115 + esrecurse "^4.3.0" 4116 + estraverse "^5.2.0" 4117 + 3624 4118 eslint-utils@^2.0.0: 3625 4119 version "2.1.0" 3626 4120 resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" ··· 3633 4127 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 3634 4128 integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 3635 4129 3636 - eslint-visitor-keys@^3.4.3: 4130 + eslint-visitor-keys@^2.1.0: 4131 + version "2.1.0" 4132 + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 4133 + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 4134 + 4135 + eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: 3637 4136 version "3.4.3" 3638 4137 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 3639 4138 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== ··· 3643 4142 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" 3644 4143 integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== 3645 4144 4145 + eslint@^9.22.0: 4146 + version "9.31.0" 4147 + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.31.0.tgz#9a488e6da75bbe05785cd62e43c5ea99356d21ba" 4148 + integrity sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ== 4149 + dependencies: 4150 + "@eslint-community/eslint-utils" "^4.2.0" 4151 + "@eslint-community/regexpp" "^4.12.1" 4152 + "@eslint/config-array" "^0.21.0" 4153 + "@eslint/config-helpers" "^0.3.0" 4154 + "@eslint/core" "^0.15.0" 4155 + "@eslint/eslintrc" "^3.3.1" 4156 + "@eslint/js" "9.31.0" 4157 + "@eslint/plugin-kit" "^0.3.1" 4158 + "@humanfs/node" "^0.16.6" 4159 + "@humanwhocodes/module-importer" "^1.0.1" 4160 + "@humanwhocodes/retry" "^0.4.2" 4161 + "@types/estree" "^1.0.6" 4162 + "@types/json-schema" "^7.0.15" 4163 + ajv "^6.12.4" 4164 + chalk "^4.0.0" 4165 + cross-spawn "^7.0.6" 4166 + debug "^4.3.2" 4167 + escape-string-regexp "^4.0.0" 4168 + eslint-scope "^8.4.0" 4169 + eslint-visitor-keys "^4.2.1" 4170 + espree "^10.4.0" 4171 + esquery "^1.5.0" 4172 + esutils "^2.0.2" 4173 + fast-deep-equal "^3.1.3" 4174 + file-entry-cache "^8.0.0" 4175 + find-up "^5.0.0" 4176 + glob-parent "^6.0.2" 4177 + ignore "^5.2.0" 4178 + imurmurhash "^0.1.4" 4179 + is-glob "^4.0.0" 4180 + json-stable-stringify-without-jsonify "^1.0.1" 4181 + lodash.merge "^4.6.2" 4182 + minimatch "^3.1.2" 4183 + natural-compare "^1.4.0" 4184 + optionator "^0.9.3" 4185 + 4186 + espree@^10.0.1, espree@^10.4.0: 4187 + version "10.4.0" 4188 + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" 4189 + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== 4190 + dependencies: 4191 + acorn "^8.15.0" 4192 + acorn-jsx "^5.3.2" 4193 + eslint-visitor-keys "^4.2.1" 4194 + 3646 4195 esprima@^4.0.0, esprima@^4.0.1: 3647 4196 version "4.0.1" 3648 4197 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 3649 4198 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 3650 4199 3651 - estraverse@^5.2.0, estraverse@^5.3.0: 4200 + esquery@^1.5.0: 4201 + version "1.6.0" 4202 + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" 4203 + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== 4204 + dependencies: 4205 + estraverse "^5.1.0" 4206 + 4207 + esrecurse@^4.3.0: 4208 + version "4.3.0" 4209 + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 4210 + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 4211 + dependencies: 4212 + estraverse "^5.2.0" 4213 + 4214 + estraverse@^4.1.1: 4215 + version "4.3.0" 4216 + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 4217 + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 4218 + 4219 + estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: 3652 4220 version "5.3.0" 3653 4221 resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 3654 4222 integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== ··· 3672 4240 version "2.2.0" 3673 4241 resolved "https://registry.yarnpkg.com/exec-async/-/exec-async-2.2.0.tgz#c7c5ad2eef3478d38390c6dd3acfe8af0efc8301" 3674 4242 integrity sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw== 4243 + 4244 + execa@^5.0.0: 4245 + version "5.1.1" 4246 + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 4247 + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 4248 + dependencies: 4249 + cross-spawn "^7.0.3" 4250 + get-stream "^6.0.0" 4251 + human-signals "^2.1.0" 4252 + is-stream "^2.0.0" 4253 + merge-stream "^2.0.0" 4254 + npm-run-path "^4.0.1" 4255 + onetime "^5.1.2" 4256 + signal-exit "^3.0.3" 4257 + strip-final-newline "^2.0.0" 4258 + 4259 + exit@^0.1.2: 4260 + version "0.1.2" 4261 + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 4262 + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== 3675 4263 3676 4264 expect@^29.0.0, expect@^29.7.0: 3677 4265 version "29.7.0" ··· 3790 4378 resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" 3791 4379 integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== 3792 4380 4381 + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 4382 + version "3.1.3" 4383 + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 4384 + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 4385 + 3793 4386 fast-diff@^1.1.2: 3794 4387 version "1.3.0" 3795 4388 resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" 3796 4389 integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== 3797 4390 3798 - fast-glob@^3.3.2: 4391 + fast-glob@^3.2.9, fast-glob@^3.3.2: 3799 4392 version "3.3.3" 3800 4393 resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" 3801 4394 integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== ··· 3806 4399 merge2 "^1.3.0" 3807 4400 micromatch "^4.0.8" 3808 4401 3809 - fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: 4402 + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: 3810 4403 version "2.1.0" 3811 4404 resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 3812 4405 integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 4406 + 4407 + fast-levenshtein@^2.0.6: 4408 + version "2.0.6" 4409 + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 4410 + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 3813 4411 3814 4412 fastq@^1.6.0: 3815 4413 version "1.19.1" ··· 3825 4423 dependencies: 3826 4424 bser "2.1.1" 3827 4425 4426 + file-entry-cache@^8.0.0: 4427 + version "8.0.0" 4428 + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" 4429 + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== 4430 + dependencies: 4431 + flat-cache "^4.0.0" 4432 + 3828 4433 fill-range@^7.1.1: 3829 4434 version "7.1.1" 3830 4435 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" ··· 3845 4450 statuses "~1.5.0" 3846 4451 unpipe "~1.0.0" 3847 4452 3848 - find-up@^4.1.0: 4453 + find-up@^4.0.0, find-up@^4.1.0: 3849 4454 version "4.1.0" 3850 4455 resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 3851 4456 integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== ··· 3867 4472 integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== 3868 4473 dependencies: 3869 4474 micromatch "^4.0.2" 4475 + 4476 + flat-cache@^4.0.0: 4477 + version "4.0.1" 4478 + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" 4479 + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== 4480 + dependencies: 4481 + flatted "^3.2.9" 4482 + keyv "^4.5.4" 4483 + 4484 + flatted@^3.2.9: 4485 + version "3.3.3" 4486 + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" 4487 + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== 3870 4488 3871 4489 flow-enums-runtime@^0.0.6: 3872 4490 version "0.0.6" ··· 4000 4618 dunder-proto "^1.0.1" 4001 4619 es-object-atoms "^1.0.0" 4002 4620 4621 + get-stream@^6.0.0: 4622 + version "6.0.1" 4623 + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 4624 + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 4625 + 4003 4626 get-symbol-description@^1.1.0: 4004 4627 version "1.1.0" 4005 4628 resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" ··· 4028 4651 dependencies: 4029 4652 is-glob "^4.0.1" 4030 4653 4654 + glob-parent@^6.0.2: 4655 + version "6.0.2" 4656 + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 4657 + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 4658 + dependencies: 4659 + is-glob "^4.0.3" 4660 + 4031 4661 glob@^10.3.10, glob@^10.4.2: 4032 4662 version "10.4.5" 4033 4663 resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" ··· 4051 4681 minimatch "^3.1.1" 4052 4682 once "^1.3.0" 4053 4683 path-is-absolute "^1.0.0" 4684 + 4685 + globals@^14.0.0: 4686 + version "14.0.0" 4687 + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" 4688 + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== 4054 4689 4055 4690 globals@^15.11.0: 4056 4691 version "15.15.0" ··· 4070 4705 define-properties "^1.2.1" 4071 4706 gopd "^1.0.1" 4072 4707 4708 + globby@^11.1.0: 4709 + version "11.1.0" 4710 + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 4711 + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 4712 + dependencies: 4713 + array-union "^2.1.0" 4714 + dir-glob "^3.0.1" 4715 + fast-glob "^3.2.9" 4716 + ignore "^5.2.0" 4717 + merge2 "^1.4.1" 4718 + slash "^3.0.0" 4719 + 4073 4720 gopd@^1.0.1, gopd@^1.2.0: 4074 4721 version "1.2.0" 4075 4722 resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" ··· 4171 4818 dependencies: 4172 4819 whatwg-encoding "^2.0.0" 4173 4820 4821 + html-escaper@^2.0.0: 4822 + version "2.0.2" 4823 + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 4824 + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 4825 + 4174 4826 http-errors@2.0.0: 4175 4827 version "2.0.0" 4176 4828 resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" ··· 4207 4859 agent-base "^7.1.2" 4208 4860 debug "4" 4209 4861 4862 + human-signals@^2.1.0: 4863 + version "2.1.0" 4864 + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 4865 + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 4866 + 4210 4867 iconv-lite@0.6.3: 4211 4868 version "0.6.3" 4212 4869 resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" ··· 4219 4876 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 4220 4877 integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 4221 4878 4222 - ignore@^5.1.1, ignore@^5.3.1, ignore@^5.3.2: 4879 + ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.3.1, ignore@^5.3.2: 4223 4880 version "5.3.2" 4224 4881 resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" 4225 4882 integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== ··· 4244 4901 caller-path "^2.0.0" 4245 4902 resolve-from "^3.0.0" 4246 4903 4904 + import-fresh@^3.2.1: 4905 + version "3.3.1" 4906 + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" 4907 + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== 4908 + dependencies: 4909 + parent-module "^1.0.0" 4910 + resolve-from "^4.0.0" 4911 + 4912 + import-local@^3.0.2: 4913 + version "3.2.0" 4914 + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" 4915 + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== 4916 + dependencies: 4917 + pkg-dir "^4.2.0" 4918 + resolve-cwd "^3.0.0" 4919 + 4247 4920 imurmurhash@^0.1.4: 4248 4921 version "0.1.4" 4249 4922 resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" ··· 4391 5064 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 4392 5065 integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 4393 5066 5067 + is-generator-fn@^2.0.0: 5068 + version "2.1.0" 5069 + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 5070 + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 5071 + 4394 5072 is-generator-function@^1.0.10: 4395 5073 version "1.1.0" 4396 5074 resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" ··· 4401 5079 has-tostringtag "^1.0.2" 4402 5080 safe-regex-test "^1.1.0" 4403 5081 4404 - is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 5082 + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 4405 5083 version "4.0.3" 4406 5084 resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 4407 5085 integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== ··· 4458 5136 dependencies: 4459 5137 call-bound "^1.0.3" 4460 5138 5139 + is-stream@^2.0.0: 5140 + version "2.0.1" 5141 + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 5142 + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 5143 + 4461 5144 is-string@^1.1.1: 4462 5145 version "1.1.1" 4463 5146 resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" ··· 4524 5207 resolved "https://registry.yarnpkg.com/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz#2daa80d2900b7a954f9f731d42f96ee0c19a6895" 4525 5208 integrity sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA== 4526 5209 4527 - istanbul-lib-coverage@^3.2.0: 5210 + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 4528 5211 version "3.2.2" 4529 5212 resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" 4530 5213 integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== ··· 4540 5223 istanbul-lib-coverage "^3.2.0" 4541 5224 semver "^6.3.0" 4542 5225 5226 + istanbul-lib-instrument@^6.0.0: 5227 + version "6.0.3" 5228 + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" 5229 + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== 5230 + dependencies: 5231 + "@babel/core" "^7.23.9" 5232 + "@babel/parser" "^7.23.9" 5233 + "@istanbuljs/schema" "^0.1.3" 5234 + istanbul-lib-coverage "^3.2.0" 5235 + semver "^7.5.4" 5236 + 5237 + istanbul-lib-report@^3.0.0: 5238 + version "3.0.1" 5239 + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" 5240 + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== 5241 + dependencies: 5242 + istanbul-lib-coverage "^3.0.0" 5243 + make-dir "^4.0.0" 5244 + supports-color "^7.1.0" 5245 + 5246 + istanbul-lib-source-maps@^4.0.0: 5247 + version "4.0.1" 5248 + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 5249 + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== 5250 + dependencies: 5251 + debug "^4.1.1" 5252 + istanbul-lib-coverage "^3.0.0" 5253 + source-map "^0.6.1" 5254 + 5255 + istanbul-reports@^3.1.3: 5256 + version "3.1.7" 5257 + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" 5258 + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== 5259 + dependencies: 5260 + html-escaper "^2.0.0" 5261 + istanbul-lib-report "^3.0.0" 5262 + 4543 5263 iterator.prototype@^1.1.4: 4544 5264 version "1.1.5" 4545 5265 resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" ··· 4561 5281 optionalDependencies: 4562 5282 "@pkgjs/parseargs" "^0.11.0" 4563 5283 5284 + jest-changed-files@^29.7.0: 5285 + version "29.7.0" 5286 + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" 5287 + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== 5288 + dependencies: 5289 + execa "^5.0.0" 5290 + jest-util "^29.7.0" 5291 + p-limit "^3.1.0" 5292 + 5293 + jest-circus@^29.7.0: 5294 + version "29.7.0" 5295 + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" 5296 + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== 5297 + dependencies: 5298 + "@jest/environment" "^29.7.0" 5299 + "@jest/expect" "^29.7.0" 5300 + "@jest/test-result" "^29.7.0" 5301 + "@jest/types" "^29.6.3" 5302 + "@types/node" "*" 5303 + chalk "^4.0.0" 5304 + co "^4.6.0" 5305 + dedent "^1.0.0" 5306 + is-generator-fn "^2.0.0" 5307 + jest-each "^29.7.0" 5308 + jest-matcher-utils "^29.7.0" 5309 + jest-message-util "^29.7.0" 5310 + jest-runtime "^29.7.0" 5311 + jest-snapshot "^29.7.0" 5312 + jest-util "^29.7.0" 5313 + p-limit "^3.1.0" 5314 + pretty-format "^29.7.0" 5315 + pure-rand "^6.0.0" 5316 + slash "^3.0.0" 5317 + stack-utils "^2.0.3" 5318 + 5319 + jest-cli@^29.7.0: 5320 + version "29.7.0" 5321 + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" 5322 + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== 5323 + dependencies: 5324 + "@jest/core" "^29.7.0" 5325 + "@jest/test-result" "^29.7.0" 5326 + "@jest/types" "^29.6.3" 5327 + chalk "^4.0.0" 5328 + create-jest "^29.7.0" 5329 + exit "^0.1.2" 5330 + import-local "^3.0.2" 5331 + jest-config "^29.7.0" 5332 + jest-util "^29.7.0" 5333 + jest-validate "^29.7.0" 5334 + yargs "^17.3.1" 5335 + 5336 + jest-config@^29.7.0: 5337 + version "29.7.0" 5338 + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" 5339 + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== 5340 + dependencies: 5341 + "@babel/core" "^7.11.6" 5342 + "@jest/test-sequencer" "^29.7.0" 5343 + "@jest/types" "^29.6.3" 5344 + babel-jest "^29.7.0" 5345 + chalk "^4.0.0" 5346 + ci-info "^3.2.0" 5347 + deepmerge "^4.2.2" 5348 + glob "^7.1.3" 5349 + graceful-fs "^4.2.9" 5350 + jest-circus "^29.7.0" 5351 + jest-environment-node "^29.7.0" 5352 + jest-get-type "^29.6.3" 5353 + jest-regex-util "^29.6.3" 5354 + jest-resolve "^29.7.0" 5355 + jest-runner "^29.7.0" 5356 + jest-util "^29.7.0" 5357 + jest-validate "^29.7.0" 5358 + micromatch "^4.0.4" 5359 + parse-json "^5.2.0" 5360 + pretty-format "^29.7.0" 5361 + slash "^3.0.0" 5362 + strip-json-comments "^3.1.1" 5363 + 4564 5364 jest-diff@^29.7.0: 4565 5365 version "29.7.0" 4566 5366 resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" ··· 4571 5371 jest-get-type "^29.6.3" 4572 5372 pretty-format "^29.7.0" 4573 5373 5374 + jest-docblock@^29.7.0: 5375 + version "29.7.0" 5376 + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" 5377 + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== 5378 + dependencies: 5379 + detect-newline "^3.0.0" 5380 + 5381 + jest-each@^29.7.0: 5382 + version "29.7.0" 5383 + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" 5384 + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== 5385 + dependencies: 5386 + "@jest/types" "^29.6.3" 5387 + chalk "^4.0.0" 5388 + jest-get-type "^29.6.3" 5389 + jest-util "^29.7.0" 5390 + pretty-format "^29.7.0" 5391 + 4574 5392 jest-environment-jsdom@^29.2.1: 4575 5393 version "29.7.0" 4576 5394 resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" ··· 4643 5461 optionalDependencies: 4644 5462 fsevents "^2.3.2" 4645 5463 5464 + jest-leak-detector@^29.7.0: 5465 + version "29.7.0" 5466 + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" 5467 + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== 5468 + dependencies: 5469 + jest-get-type "^29.6.3" 5470 + pretty-format "^29.7.0" 5471 + 4646 5472 jest-matcher-utils@^29.7.0: 4647 5473 version "29.7.0" 4648 5474 resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" ··· 4677 5503 "@types/node" "*" 4678 5504 jest-util "^29.7.0" 4679 5505 5506 + jest-pnp-resolver@^1.2.2: 5507 + version "1.2.3" 5508 + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" 5509 + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== 5510 + 4680 5511 jest-regex-util@^29.0.0, jest-regex-util@^29.6.3: 4681 5512 version "29.6.3" 4682 5513 resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" 4683 5514 integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== 4684 5515 5516 + jest-resolve-dependencies@^29.7.0: 5517 + version "29.7.0" 5518 + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" 5519 + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== 5520 + dependencies: 5521 + jest-regex-util "^29.6.3" 5522 + jest-snapshot "^29.7.0" 5523 + 5524 + jest-resolve@^29.7.0: 5525 + version "29.7.0" 5526 + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" 5527 + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== 5528 + dependencies: 5529 + chalk "^4.0.0" 5530 + graceful-fs "^4.2.9" 5531 + jest-haste-map "^29.7.0" 5532 + jest-pnp-resolver "^1.2.2" 5533 + jest-util "^29.7.0" 5534 + jest-validate "^29.7.0" 5535 + resolve "^1.20.0" 5536 + resolve.exports "^2.0.0" 5537 + slash "^3.0.0" 5538 + 5539 + jest-runner@^29.7.0: 5540 + version "29.7.0" 5541 + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" 5542 + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== 5543 + dependencies: 5544 + "@jest/console" "^29.7.0" 5545 + "@jest/environment" "^29.7.0" 5546 + "@jest/test-result" "^29.7.0" 5547 + "@jest/transform" "^29.7.0" 5548 + "@jest/types" "^29.6.3" 5549 + "@types/node" "*" 5550 + chalk "^4.0.0" 5551 + emittery "^0.13.1" 5552 + graceful-fs "^4.2.9" 5553 + jest-docblock "^29.7.0" 5554 + jest-environment-node "^29.7.0" 5555 + jest-haste-map "^29.7.0" 5556 + jest-leak-detector "^29.7.0" 5557 + jest-message-util "^29.7.0" 5558 + jest-resolve "^29.7.0" 5559 + jest-runtime "^29.7.0" 5560 + jest-util "^29.7.0" 5561 + jest-watcher "^29.7.0" 5562 + jest-worker "^29.7.0" 5563 + p-limit "^3.1.0" 5564 + source-map-support "0.5.13" 5565 + 5566 + jest-runtime@^29.7.0: 5567 + version "29.7.0" 5568 + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" 5569 + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== 5570 + dependencies: 5571 + "@jest/environment" "^29.7.0" 5572 + "@jest/fake-timers" "^29.7.0" 5573 + "@jest/globals" "^29.7.0" 5574 + "@jest/source-map" "^29.6.3" 5575 + "@jest/test-result" "^29.7.0" 5576 + "@jest/transform" "^29.7.0" 5577 + "@jest/types" "^29.6.3" 5578 + "@types/node" "*" 5579 + chalk "^4.0.0" 5580 + cjs-module-lexer "^1.0.0" 5581 + collect-v8-coverage "^1.0.0" 5582 + glob "^7.1.3" 5583 + graceful-fs "^4.2.9" 5584 + jest-haste-map "^29.7.0" 5585 + jest-message-util "^29.7.0" 5586 + jest-mock "^29.7.0" 5587 + jest-regex-util "^29.6.3" 5588 + jest-resolve "^29.7.0" 5589 + jest-snapshot "^29.7.0" 5590 + jest-util "^29.7.0" 5591 + slash "^3.0.0" 5592 + strip-bom "^4.0.0" 5593 + 4685 5594 "jest-snapshot-prettier@npm:prettier@^2": 4686 5595 version "2.8.8" 4687 5596 resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" ··· 4759 5668 string-length "^5.0.1" 4760 5669 strip-ansi "^7.0.1" 4761 5670 4762 - jest-watcher@^29.0.0: 5671 + jest-watcher@^29.0.0, jest-watcher@^29.7.0: 4763 5672 version "29.7.0" 4764 5673 resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" 4765 5674 integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== ··· 4782 5691 jest-util "^29.7.0" 4783 5692 merge-stream "^2.0.0" 4784 5693 supports-color "^8.0.0" 5694 + 5695 + jest@^29.7.0: 5696 + version "29.7.0" 5697 + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" 5698 + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== 5699 + dependencies: 5700 + "@jest/core" "^29.7.0" 5701 + "@jest/types" "^29.6.3" 5702 + import-local "^3.0.2" 5703 + jest-cli "^29.7.0" 4785 5704 4786 5705 jimp-compact@0.16.1: 4787 5706 version "0.16.1" ··· 4855 5774 resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" 4856 5775 integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== 4857 5776 5777 + json-buffer@3.0.1: 5778 + version "3.0.1" 5779 + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 5780 + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 5781 + 4858 5782 json-parse-better-errors@^1.0.1: 4859 5783 version "1.0.2" 4860 5784 resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 4861 5785 integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 4862 5786 5787 + json-parse-even-better-errors@^2.3.0: 5788 + version "2.3.1" 5789 + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 5790 + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 5791 + 5792 + json-schema-traverse@^0.4.1: 5793 + version "0.4.1" 5794 + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 5795 + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 5796 + 5797 + json-stable-stringify-without-jsonify@^1.0.1: 5798 + version "1.0.1" 5799 + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 5800 + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 5801 + 4863 5802 json-stable-stringify@^1.0.2: 4864 5803 version "1.3.0" 4865 5804 resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70" ··· 4907 5846 object.assign "^4.1.4" 4908 5847 object.values "^1.1.6" 4909 5848 5849 + keyv@^4.5.4: 5850 + version "4.5.4" 5851 + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 5852 + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 5853 + dependencies: 5854 + json-buffer "3.0.1" 5855 + 4910 5856 klaw-sync@^6.0.0: 4911 5857 version "6.0.0" 4912 5858 resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" ··· 4928 5874 version "3.1.0" 4929 5875 resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 4930 5876 integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 5877 + 5878 + levn@^0.4.1: 5879 + version "0.4.1" 5880 + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 5881 + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 5882 + dependencies: 5883 + prelude-ls "^1.2.1" 5884 + type-check "~0.4.0" 4931 5885 4932 5886 lighthouse-logger@^1.0.0: 4933 5887 version "1.4.2" ··· 5034 5988 resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" 5035 5989 integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== 5036 5990 5991 + lodash.merge@^4.6.2: 5992 + version "4.6.2" 5993 + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 5994 + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 5995 + 5037 5996 lodash.throttle@^4.1.1: 5038 5997 version "4.1.1" 5039 5998 resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" 5040 5999 integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== 5041 6000 5042 - lodash@^4.17.19: 6001 + lodash@^4.17.19, lodash@^4.17.21: 5043 6002 version "4.17.21" 5044 6003 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 5045 6004 integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== ··· 5078 6037 pify "^4.0.1" 5079 6038 semver "^5.6.0" 5080 6039 6040 + make-dir@^4.0.0: 6041 + version "4.0.0" 6042 + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" 6043 + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== 6044 + dependencies: 6045 + semver "^7.5.3" 6046 + 5081 6047 make-error@1.x: 5082 6048 version "1.3.6" 5083 6049 resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" ··· 5110 6076 resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 5111 6077 integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 5112 6078 5113 - merge2@^1.3.0: 6079 + merge2@^1.3.0, merge2@^1.4.1: 5114 6080 version "1.4.1" 5115 6081 resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 5116 6082 integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== ··· 5343 6309 resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 5344 6310 integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 5345 6311 6312 + mimic-fn@^2.1.0: 6313 + version "2.1.0" 6314 + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 6315 + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 6316 + 5346 6317 min-indent@^1.0.0: 5347 6318 version "1.0.1" 5348 6319 resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" ··· 5473 6444 semver "^7.3.5" 5474 6445 validate-npm-package-name "^5.0.0" 5475 6446 6447 + npm-run-path@^4.0.1: 6448 + version "4.0.1" 6449 + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 6450 + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 6451 + dependencies: 6452 + path-key "^3.0.0" 6453 + 5476 6454 nullthrows@^1.1.1: 5477 6455 version "1.1.1" 5478 6456 resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" ··· 5589 6567 dependencies: 5590 6568 mimic-fn "^1.0.0" 5591 6569 6570 + onetime@^5.1.2: 6571 + version "5.1.2" 6572 + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 6573 + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 6574 + dependencies: 6575 + mimic-fn "^2.1.0" 6576 + 5592 6577 open@^7.0.3, open@^7.4.2: 5593 6578 version "7.4.2" 5594 6579 resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" ··· 5606 6591 is-docker "^2.1.1" 5607 6592 is-wsl "^2.2.0" 5608 6593 6594 + optionator@^0.9.3: 6595 + version "0.9.4" 6596 + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" 6597 + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== 6598 + dependencies: 6599 + deep-is "^0.1.3" 6600 + fast-levenshtein "^2.0.6" 6601 + levn "^0.4.1" 6602 + prelude-ls "^1.2.1" 6603 + type-check "^0.4.0" 6604 + word-wrap "^1.2.5" 6605 + 5609 6606 ora@^3.4.0: 5610 6607 version "3.4.0" 5611 6608 resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" ··· 5670 6667 resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" 5671 6668 integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== 5672 6669 6670 + parent-module@^1.0.0: 6671 + version "1.0.1" 6672 + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 6673 + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 6674 + dependencies: 6675 + callsites "^3.0.0" 6676 + 5673 6677 parse-json@^4.0.0: 5674 6678 version "4.0.0" 5675 6679 resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" ··· 5677 6681 dependencies: 5678 6682 error-ex "^1.3.1" 5679 6683 json-parse-better-errors "^1.0.1" 6684 + 6685 + parse-json@^5.2.0: 6686 + version "5.2.0" 6687 + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 6688 + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 6689 + dependencies: 6690 + "@babel/code-frame" "^7.0.0" 6691 + error-ex "^1.3.1" 6692 + json-parse-even-better-errors "^2.3.0" 6693 + lines-and-columns "^1.1.6" 5680 6694 5681 6695 parse-png@^2.1.0: 5682 6696 version "2.1.0" ··· 5728 6742 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 5729 6743 integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 5730 6744 5731 - path-key@^3.1.0: 6745 + path-key@^3.0.0, path-key@^3.1.0: 5732 6746 version "3.1.1" 5733 6747 resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 5734 6748 integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== ··· 5745 6759 dependencies: 5746 6760 lru-cache "^10.2.0" 5747 6761 minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 6762 + 6763 + path-type@^4.0.0: 6764 + version "4.0.0" 6765 + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 6766 + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 5748 6767 5749 6768 picocolors@^1.0.0, picocolors@^1.1.1: 5750 6769 version "1.1.1" ··· 5776 6795 resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" 5777 6796 integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== 5778 6797 6798 + pkg-dir@^4.2.0: 6799 + version "4.2.0" 6800 + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 6801 + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 6802 + dependencies: 6803 + find-up "^4.0.0" 6804 + 5779 6805 plist@^3.0.5: 5780 6806 version "3.1.0" 5781 6807 resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" ··· 5808 6834 version "2.1.0" 5809 6835 resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" 5810 6836 integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== 6837 + 6838 + prelude-ls@^1.2.1: 6839 + version "1.2.1" 6840 + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 6841 + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 5811 6842 5812 6843 prettier-linter-helpers@^1.0.0: 5813 6844 version "1.0.0" ··· 5816 6847 dependencies: 5817 6848 fast-diff "^1.1.2" 5818 6849 6850 + prettier@^3.0.3: 6851 + version "3.6.2" 6852 + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" 6853 + integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== 6854 + 5819 6855 pretty-bytes@^5.6.0: 5820 6856 version "5.6.0" 5821 6857 resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" ··· 5847 6883 dependencies: 5848 6884 asap "~2.0.6" 5849 6885 5850 - prompts@^2.2.1, prompts@^2.3.2: 6886 + prompts@^2.0.1, prompts@^2.2.1, prompts@^2.3.2: 5851 6887 version "2.4.2" 5852 6888 resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 5853 6889 integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== ··· 5871 6907 dependencies: 5872 6908 punycode "^2.3.1" 5873 6909 5874 - punycode@^2.1.1, punycode@^2.3.1: 6910 + punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: 5875 6911 version "2.3.1" 5876 6912 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 5877 6913 integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 6914 + 6915 + pure-rand@^6.0.0: 6916 + version "6.1.0" 6917 + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" 6918 + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== 5878 6919 5879 6920 qrcode-terminal@0.11.0: 5880 6921 version "0.11.0" ··· 6121 7162 resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 6122 7163 integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 6123 7164 7165 + resolve-cwd@^3.0.0: 7166 + version "3.0.0" 7167 + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 7168 + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 7169 + dependencies: 7170 + resolve-from "^5.0.0" 7171 + 6124 7172 resolve-from@^3.0.0: 6125 7173 version "3.0.0" 6126 7174 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" 6127 7175 integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== 7176 + 7177 + resolve-from@^4.0.0: 7178 + version "4.0.0" 7179 + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 7180 + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 6128 7181 6129 7182 resolve-from@^5.0.0: 6130 7183 version "5.0.0" ··· 6141 7194 resolved "https://registry.yarnpkg.com/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz#a0098daa0067cd0efa6eb525c57c8fb4a61e78f8" 6142 7195 integrity sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw== 6143 7196 6144 - resolve.exports@^2.0.3: 7197 + resolve.exports@^2.0.0, resolve.exports@^2.0.3: 6145 7198 version "2.0.3" 6146 7199 resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" 6147 7200 integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== 6148 7201 6149 - resolve@^1.10.1, resolve@^1.22.10, resolve@^1.22.2, resolve@^1.22.4: 7202 + resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.10, resolve@^1.22.2, resolve@^1.22.4: 6150 7203 version "1.22.10" 6151 7204 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" 6152 7205 integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== ··· 6260 7313 resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015" 6261 7314 integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== 6262 7315 6263 - semver@7.x, semver@^7.1.3, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: 7316 + semver@7.x, semver@^7.1.3, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: 6264 7317 version "7.7.2" 6265 7318 resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" 6266 7319 integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== ··· 6426 7479 side-channel-map "^1.0.1" 6427 7480 side-channel-weakmap "^1.0.2" 6428 7481 6429 - signal-exit@^3.0.2, signal-exit@^3.0.7: 7482 + signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: 6430 7483 version "3.0.7" 6431 7484 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 6432 7485 integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== ··· 6475 7528 resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" 6476 7529 integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== 6477 7530 7531 + source-map-support@0.5.13: 7532 + version "0.5.13" 7533 + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" 7534 + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== 7535 + dependencies: 7536 + buffer-from "^1.0.0" 7537 + source-map "^0.6.0" 7538 + 6478 7539 source-map-support@~0.5.20, source-map-support@~0.5.21: 6479 7540 version "0.5.21" 6480 7541 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" ··· 6493 7554 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 6494 7555 integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== 6495 7556 6496 - source-map@^0.6.0, source-map@~0.6.1: 7557 + source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 6497 7558 version "0.6.1" 6498 7559 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 6499 7560 integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== ··· 6585 7646 char-regex "^2.0.0" 6586 7647 strip-ansi "^7.0.1" 6587 7648 7649 + string-natural-compare@^3.0.1: 7650 + version "3.0.1" 7651 + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" 7652 + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== 7653 + 6588 7654 "string-width-cjs@npm:string-width@^4.2.0": 6589 7655 version "4.2.3" 6590 7656 resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" ··· 6704 7770 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 6705 7771 integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 6706 7772 7773 + strip-bom@^4.0.0: 7774 + version "4.0.0" 7775 + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 7776 + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 7777 + 7778 + strip-final-newline@^2.0.0: 7779 + version "2.0.0" 7780 + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 7781 + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 7782 + 6707 7783 strip-indent@^3.0.0: 6708 7784 version "3.0.0" 6709 7785 resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" 6710 7786 integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== 6711 7787 dependencies: 6712 7788 min-indent "^1.0.0" 7789 + 7790 + strip-json-comments@^3.1.1: 7791 + version "3.1.1" 7792 + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 7793 + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 6713 7794 6714 7795 strip-json-comments@~2.0.1: 6715 7796 version "2.0.1" ··· 6889 7970 dependencies: 6890 7971 punycode "^2.1.1" 6891 7972 7973 + ts-api-utils@^1.3.0: 7974 + version "1.4.3" 7975 + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" 7976 + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== 7977 + 6892 7978 ts-api-utils@^2.1.0: 6893 7979 version "2.1.0" 6894 7980 resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" ··· 6930 8016 minimist "^1.2.6" 6931 8017 strip-bom "^3.0.0" 6932 8018 8019 + tslib@^1.8.1: 8020 + version "1.14.1" 8021 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 8022 + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 8023 + 8024 + tsutils@^3.21.0: 8025 + version "3.21.0" 8026 + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 8027 + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 8028 + dependencies: 8029 + tslib "^1.8.1" 8030 + 8031 + type-check@^0.4.0, type-check@~0.4.0: 8032 + version "0.4.0" 8033 + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 8034 + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 8035 + dependencies: 8036 + prelude-ls "^1.2.1" 8037 + 6933 8038 type-detect@4.0.8: 6934 8039 version "4.0.8" 6935 8040 resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" ··· 7075 8180 escalade "^3.2.0" 7076 8181 picocolors "^1.1.1" 7077 8182 8183 + uri-js@^4.2.2: 8184 + version "4.4.1" 8185 + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 8186 + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 8187 + dependencies: 8188 + punycode "^2.1.0" 8189 + 7078 8190 url-parse@^1.5.3: 7079 8191 version "1.5.10" 7080 8192 resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" ··· 7093 8205 resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" 7094 8206 integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== 7095 8207 8208 + v8-to-istanbul@^9.0.1: 8209 + version "9.3.0" 8210 + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" 8211 + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== 8212 + dependencies: 8213 + "@jridgewell/trace-mapping" "^0.3.12" 8214 + "@types/istanbul-lib-coverage" "^2.0.1" 8215 + convert-source-map "^2.0.0" 8216 + 7096 8217 validate-npm-package-name@^5.0.0: 7097 8218 version "5.0.1" 7098 8219 resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" ··· 7243 8364 resolved "https://registry.yarnpkg.com/wonka/-/wonka-6.3.5.tgz#33fa54ea700ff3e87b56fe32202112a9e8fea1a2" 7244 8365 integrity sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw== 7245 8366 8367 + word-wrap@^1.2.5: 8368 + version "1.2.5" 8369 + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" 8370 + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== 8371 + 7246 8372 "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 7247 8373 version "7.0.0" 7248 8374 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" ··· 7361 8487 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 7362 8488 integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 7363 8489 7364 - yargs@^17.6.2: 8490 + yargs@^17.3.1, yargs@^17.6.2: 7365 8491 version "17.7.2" 7366 8492 resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 7367 8493 integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==