diff --git a/examples/default/package.json b/examples/default/package.json index 5c6b173c1..bc786c7c2 100644 --- a/examples/default/package.json +++ b/examples/default/package.json @@ -10,10 +10,13 @@ "postinstall": "patch-package" }, "dependencies": { + "@apollo/client": "^3.9.5", "@react-native-community/slider": "^4.4.3", "@react-navigation/bottom-tabs": "^6.5.7", "@react-navigation/native": "^6.1.6", "@react-navigation/native-stack": "^6.9.12", + "axios": "^1.6.7", + "graphql": "^16.8.1", "instabug-reactnative": "link:../..", "native-base": "^3.4.28", "react": "18.2.0", diff --git a/examples/default/src/App.tsx b/examples/default/src/App.tsx index 4bc144705..943ae7698 100644 --- a/examples/default/src/App.tsx +++ b/examples/default/src/App.tsx @@ -4,11 +4,13 @@ import { StyleSheet } from 'react-native'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { NavigationContainer } from '@react-navigation/native'; import Instabug, { + APM, CrashReporting, InvocationEvent, LogLevel, ReproStepsMode, } from 'instabug-reactnative'; + import { NativeBaseProvider } from 'native-base'; import { RootTabNavigator } from './navigation/RootTab'; @@ -22,6 +24,7 @@ export const App: React.FC = () => { invocationEvents: [InvocationEvent.floatingButton], debugLogsLevel: LogLevel.verbose, }); + APM.setEnabled(true); CrashReporting.setNDKCrashesEnabled(true); Instabug.setReproStepsConfig({ diff --git a/examples/default/src/navigation/HomeStack.tsx b/examples/default/src/navigation/HomeStack.tsx index 184e36f03..e28960657 100644 --- a/examples/default/src/navigation/HomeStack.tsx +++ b/examples/default/src/navigation/HomeStack.tsx @@ -15,6 +15,8 @@ import { FlatListScreen } from '../screens/user-steps/FlatListScreen'; import { ComplexViewsScreen } from '../screens/user-steps/ComplexViewsScreen'; import { SectionListScreen } from '../screens/user-steps/SectionListScreen'; import { GesturesScreen } from '../screens/user-steps/GesturesScreen'; +import { ApmScreen } from '../screens/apm/ApmScreen'; +import { type NetworkLogProp, NetworkLogScreen } from '../screens/apm/NetworkLogScreen'; import { BackAndForthScreen, type BackAndForthScreenProp, @@ -37,6 +39,8 @@ export type HomeStackParamList = { ComplexViews: undefined; SectionList: undefined; Gestures: undefined; + Apm: undefined; + networkLog: NetworkLogProp; GoogleMapsScreen: undefined; LargeImageList: undefined; SessionReplay: undefined; @@ -49,6 +53,7 @@ export const HomeStackNavigator: React.FC = () => { return ( + { options={{ title: 'User Steps' }} /> navigation.navigate('Replies')} /> navigation.navigate('Surveys')} /> navigation.navigate('UserSteps')} /> + navigation.navigate('Apm')} /> navigation.navigate('SessionReplay')} /> ); diff --git a/examples/default/src/screens/apm/ApmScreen.tsx b/examples/default/src/screens/apm/ApmScreen.tsx new file mode 100644 index 000000000..1bbe783b1 --- /dev/null +++ b/examples/default/src/screens/apm/ApmScreen.tsx @@ -0,0 +1,286 @@ +import React, { useState } from 'react'; + +import { ListTile } from '../../components/ListTile'; +import { Screen } from '../../components/Screen'; +import { Section } from '../../components/Section'; +import { Heading, HStack, Spinner, VStack, useToast, ScrollView } from 'native-base'; +import type { NativeStackScreenProps } from '@react-navigation/native-stack'; +import type { HomeStackParamList } from '../../navigation/HomeStack'; +import type { NetworkLogProp } from './NetworkLogScreen'; +import axios from 'axios'; +import { ApolloClient, ApolloLink, from, gql, HttpLink, InMemoryCache } from '@apollo/client'; +import { NetworkLogger } from 'instabug-reactnative'; + +export const ApmScreen: React.FC> = ({ + navigation, +}) => { + const [ss, setLoading] = useState(); + function makeHttpRequest(url: string, method: string, request: any, headers: any) { + setLoading(true); + axios + .request({ + url: url, + method: method, + data: request, + headers: headers, + }) + .then(function (response) { + onRequestSuccess(response, request, headers, method); + }) + .catch(function (error) { + onRequestField(error, request, headers, method); + }); + } + + function onRequestSuccess(response: any, request: any, headers: any, method: string) { + setLoading(false); + const modal: NetworkLogProp = { + errorMessage: '', + responseBody: response.data, + responseCode: response.status, + responseHeaders: response.request.getAllResponseHeaders(), + requestBody: JSON.stringify(request), + requestEndPoint: response.request.responseURL, + requestHeaders: JSON.stringify(headers), + requestMethod: method, + }; + navigation.push('networkLog', modal); + } + + function onRequestField(error: any, request: any, headers: any, method: string) { + setLoading(false); + + if (error.response) { + const modal: NetworkLogProp = { + errorMessage: error.message, + responseBody: error.response.data, + responseCode: error.response.status, + responseHeaders: error.response.request.getAllResponseHeaders(), + requestBody: JSON.stringify(request), + requestEndPoint: error.response.request.responseURL, + requestHeaders: JSON.stringify(headers), + requestMethod: method, + }; + navigation.push('networkLog', modal); + } else if (error.request) { + const modal: NetworkLogProp = { + errorMessage: error.message, + responseBody: '', + responseCode: error.request.status, + responseHeaders: error.request.getAllResponseHeaders(), + requestBody: JSON.stringify(request), + requestEndPoint: error.request.responseURL, + requestHeaders: JSON.stringify(headers), + requestMethod: method, + }; + navigation.push('networkLog', modal); + } else { + console.log('Error', error.message); + } + } + + const toast = useToast(); + const GET_LOCATIONS_QUERY = gql` + query GetLocations($locationId: ID!) { + location(id: $locationId) { + id + name + type + dimension + created + } + } + `; + const IBGApolloLink = new ApolloLink(NetworkLogger.apolloLinkRequestHandler); + + return ( + + {ss ? ( + + + + Loading + + + ) : ( + + +
+ { + makeHttpRequest('https://httpbin.org/anything', 'GET', null, null); + }} + /> + { + makeHttpRequest( + 'https://httpbin.org/post', + 'POST', + { + username: 'Instabug', + password: 'Password', + }, + null, + ); + }} + /> + { + makeHttpRequest('https://httpbin.org/put', 'PUT', null, null); + }} + /> + { + makeHttpRequest('https://httpbin.org/patch', 'PATCH', null, null); + }} + /> + { + makeHttpRequest('https://httpbin.org/delete', 'DELETE', null, null); + }} + /> + { + makeHttpRequest('https://speed.hetzner.de/100MB.bin', 'GET', null, null); + }} + /> + { + setLoading(true); + const form = new FormData(); + const base64ofImg = + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII'; + form.append('picture', Buffer.from(base64ofImg, 'base64').toString('utf8')); + axios + .request({ + url: 'https://httpbin.org/post', + method: 'POST', + data: form, + }) + .then(function (response) { + onRequestSuccess(response, form, null, 'POST'); + }) + .catch(function (error) { + onRequestField(error, form, null, 'POST'); + }); + }} + /> + { + makeHttpRequest('https://httpbin.org/getxyz', 'GET', null, null); + }} + /> + { + makeHttpRequest( + 'https://www.googleapis.com/books/v1/volumes?q=flowers', + 'GET', + null, + { + 'Accept-Encoding': 'gzip', + }, + ); + }} + /> +
+
+ { + const httpLink = new HttpLink({ uri: 'https://rickandmortyapi.com/graphql' }); + + const client = new ApolloClient({ + cache: new InMemoryCache(), + link: from([IBGApolloLink, httpLink]), + }); + + const result = client.query({ + query: GET_LOCATIONS_QUERY, + variables: { locationId: '1' }, + }); + result + .then(function () { + toast.show({ + description: 'Succeeded', + }); + }) + .catch(function () { + toast.show({ + description: 'Failed', + }); + }); + }} + /> + { + const httpLink = new HttpLink({ + uri: 'https://rickandmortyapi-faulty.com/graphql', + }); + + const client = new ApolloClient({ + cache: new InMemoryCache(), + link: from([IBGApolloLink, httpLink]), + }); + + const result = client.query({ + query: GET_LOCATIONS_QUERY, + variables: { locationId: '1' }, + }); + result + .then(function () { + toast.show({ + description: 'Succeeded', + }); + }) + .catch(function () { + toast.show({ + description: 'Failed', + }); + }); + }} + /> + + { + const httpLink = new HttpLink({ uri: 'https://rickandmortyapi.com/graphql' }); + + const client = new ApolloClient({ + cache: new InMemoryCache(), + link: from([IBGApolloLink, httpLink]), + }); + + const result = client.query({ + query: GET_LOCATIONS_QUERY, + variables: { locationId: 'M' }, + }); + result + .then(function () { + toast.show({ + description: 'Succeeded', + }); + }) + .catch(function () { + toast.show({ + description: 'Failed', + }); + }); + }} + /> +
+
+
+ )} +
+ ); +}; diff --git a/examples/default/src/screens/apm/NetworkLogScreen.tsx b/examples/default/src/screens/apm/NetworkLogScreen.tsx new file mode 100644 index 000000000..379c5f8df --- /dev/null +++ b/examples/default/src/screens/apm/NetworkLogScreen.tsx @@ -0,0 +1,91 @@ +import React from 'react'; + +import { Container, Heading, HStack, ScrollView, Text, VStack } from 'native-base'; +import { Screen } from '../../components/Screen'; +import type { NativeStackScreenProps } from '@react-navigation/native-stack'; +import type { HomeStackParamList } from '../../navigation/HomeStack'; + +export interface NetworkLogProp { + requestEndPoint: string; + requestMethod: string; + requestHeaders: string | null; + responseHeaders: string | null; + requestBody: string | null; + responseBody: string | null; + responseCode: number; + errorMessage: string | null; +} + +export const NetworkLogScreen: React.FC< + NativeStackScreenProps +> = ({ route }) => { + return ( + + + + + + EndPoint:{' '} + + {route.params.requestEndPoint ?? ''} + + + + + Request method:{' '} + + {route.params.requestMethod ?? ''} + + + + + Response code:{' '} + + {route.params.responseCode ?? ''} + + + + + Request Body:{' '} + + + + {JSON.stringify(route.params.requestBody) ?? ''} + + + + + + + Request Headers:{' '} + + {route.params.requestHeaders ?? ''} + + + + + Response Body:{' '} + + + {JSON.stringify(route.params.responseBody) ?? ''} + + + + + + Response Headers:{' '} + + {route.params.responseHeaders ?? ''} + + + + + Response Error:{' '} + + {route.params.errorMessage ?? ''} + + + + + ); +}; diff --git a/examples/default/yarn.lock b/examples/default/yarn.lock index 546abe80f..c4168fdbd 100644 --- a/examples/default/yarn.lock +++ b/examples/default/yarn.lock @@ -10,6 +10,26 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@apollo/client@^3.9.5": + version "3.9.5" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.9.5.tgz#502ec191756a7f44788b5f08cbe7b8de594a7656" + integrity sha512-7y+c8MTPU+hhTwvcGVtMMGIgWduzrvG1mz5yJMRyqYbheBkkky3Lki6ADWVSBXG1lZoOtPYvB2zDgVfKb2HSsw== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + "@wry/caches" "^1.0.0" + "@wry/equality" "^0.5.6" + "@wry/trie" "^0.5.0" + graphql-tag "^2.12.6" + hoist-non-react-statics "^3.3.2" + optimism "^0.18.0" + prop-types "^15.7.2" + rehackt "0.0.5" + response-iterator "^0.2.6" + symbol-observable "^4.0.0" + ts-invariant "^0.10.3" + tslib "^2.3.0" + zen-observable-ts "^1.2.5" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" @@ -1303,6 +1323,11 @@ dependencies: tslib "^2.4.0" +"@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" @@ -2970,6 +2995,41 @@ dependencies: "@types/yargs-parser" "*" +"@wry/caches@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wry/caches/-/caches-1.0.1.tgz#8641fd3b6e09230b86ce8b93558d44cf1ece7e52" + integrity sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA== + dependencies: + tslib "^2.3.0" + +"@wry/context@^0.7.0": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" + integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== + dependencies: + tslib "^2.3.0" + +"@wry/equality@^0.5.6": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" + integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" + integrity sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.5.0.tgz#11e783f3a53f6e4cd1d42d2d1323f5bc3fa99c94" + integrity sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA== + dependencies: + tslib "^2.3.0" + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -3102,11 +3162,25 @@ async@^3.2.2: resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +axios@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== + dependencies: + follow-redirects "^1.15.4" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" @@ -3573,6 +3647,13 @@ colorette@^1.0.7: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + command-exists@^1.2.8: version "1.2.9" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" @@ -3778,6 +3859,11 @@ define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -4161,6 +4247,20 @@ flow-parser@^0.206.0: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== +follow-redirects@^1.15.4: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -4300,6 +4400,18 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@^16.8.1: + version "16.8.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" + integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4372,7 +4484,7 @@ hermes-profile-transformer@^0.0.6: dependencies: source-map "^0.7.3" -hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -5907,7 +6019,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.27, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -6213,6 +6325,16 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" +optimism@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.18.0.tgz#e7bb38b24715f3fdad8a9a7fc18e999144bbfa63" + integrity sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ== + dependencies: + "@wry/caches" "^1.0.0" + "@wry/context" "^0.7.0" + "@wry/trie" "^0.4.3" + tslib "^2.3.0" + ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -6447,6 +6569,11 @@ proper-lockfile@^3.0.2: retry "^0.12.0" signal-exit "^3.0.2" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -6730,6 +6857,11 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" +rehackt@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.0.5.tgz#184c82ea369d5b0b989ede0593ebea8b2bcfb1d6" + integrity sha512-BI1rV+miEkaHj8zd2n+gaMgzu/fKz7BGlb4zZ6HAiY9adDmJMkaDcmuXlJFv0eyKUob+oszs3/2gdnXUrzx2Tg== + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -6776,6 +6908,11 @@ resolve@^1.14.2, resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +response-iterator@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" + integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -7179,6 +7316,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +symbol-observable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + telnet-client@1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/telnet-client/-/telnet-client-1.2.8.tgz#946c0dadc8daa3f19bb40a3e898cb870403a4ca4" @@ -7291,6 +7433,13 @@ truncate-utf8-bytes@^1.0.0: dependencies: utf8-byte-length "^1.0.1" +ts-invariant@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" + integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== + dependencies: + tslib "^2.1.0" + ts-jest@^29.1.0: version "29.1.1" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" @@ -7310,6 +7459,11 @@ tslib@^2.0.1, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.1.0, tslib@^2.3.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -7668,3 +7822,15 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zen-observable-ts@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" + integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== + dependencies: + zen-observable "0.8.15" + +zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==